Giter VIP home page Giter VIP logo

ocaml-cry's Introduction

ocaml-cry

This package contains an OCaml implementation of the various icecast & shoutcast source client protocols.

Please read the COPYING file before using this software.

Prerequisites:

  • ocaml

  • dune

  • findlib

Compilation:

dune build

This should build both the native and the byte-code version of the extension library.

Installation:

Using opam:

opam install cry

Using dune and a local copy (dev only):

dune install

This should install the library file (using ocamlfind) in the appropriate place.

Author:

This author of this software may be contacted by electronic mail at the following address: [email protected].

ocaml-cry's People

Contributors

dbaelde avatar jcourreges avatar kit-ty-kate avatar n6udp avatar smimram avatar toots avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ocaml-cry's Issues

TLS support ?

Could liq stream using TLS to icecast since it does now support it, and (it seems, for 2.4.x at least) libshout as well?

SNI and Host header support

Addressed in #9 but this would be useful icecast instances behind reverse proxies that route based on Host header and may serve different TLS certs based on SNI.

icy.update_metadata broken in 2.0.3

After upgrading from 2.0.2 to 2.0.3 I noticed that my dynamic metadata wasn't updated anymore. After some investigation I was able to pinpoint it to the icy.update_metadata call that apparently is broken in 2.0.3. After switching liquidsoap back to 2.0.2 again it worked without a problem.

Testscript:

radio = input.harbor("radio", id="radio", port=1234, user="source", password="hackme", buffer=5., max=20.,replay_metadata=false)

m = [("title", "This is - a test"),("url","http://google.com/image.png")]
icy.update_metadata(mount="/mystream",password="dummy",host="localhost",port=8000,m)

output.icecast(
  %mp3(bitrate=128, stereo=true,samplerate=44100,internal_quality=3),
  host="127.0.0.1",
  port=8000,
  public=false,
  fallible = true,
 description="My stream",
 mount="/mystream",
 icy_metadata="true",
 password = "dummy",
 url = "https://www.mystream.net",
 name = "Just listen",
 genre = "Pop",
 radio)

You'd expect that after running the stream has "This is - a test" as title metadata, it does this in 2.0.2 and previous versions, but not in 2.0.3

  • OS: Ubuntu 20.04 LTS (Focal)
  • Version: 2.0.3 (pre-compiled deb from github)

IPv6 support

As mentionned in savonet/liquidsoap#1425 ocaml-cry seems to be misbehaving when it comes to IPv6.

Using an explicit IPv6, this happens, as if it was trying to resolve it… great.

2022/01/18 23:29:49 [ice:3] Connecting mount test for source@2001:41d0:d:2147::106...                              
2022/01/18 23:29:49 [ice:2] Connection failed: Not_found                                                               
2022/01/18 23:29:49 [ice:3] Will try again in 3.00 sec.

If the name is ipv4/ipv6 resolvable it ignores the IPv6, which is … not what is supposed to happen.

I can provide an IPv6 reachable client/server if it helps.

I'm vaguely guessing something in connect or in unix_transport is fishy, but I'm reaaaally not good at OCAML :P

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.