Icecast-Server issueshttps://gitlab.xiph.org/xiph/icecast-server/-/issues2018-03-06T12:49:48Zhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1649[patch] [kh] PSP podcast support2018-03-06T12:49:48Zmoo[patch] [kh] PSP podcast supportthe problem with PSP is that it want to know the file size by using HEAD request, and will seek to the end of the file by using range request, trying to get the id3 tag. with any step fail, it refuse to play the mp3 (not sure if it handl...the problem with PSP is that it want to know the file size by using HEAD request, and will seek to the end of the file by using range request, trying to get the id3 tag. with any step fail, it refuse to play the mp3 (not sure if it handles media beside mp3)
so my patch will
1. add HEAD support
1. add simple range trick. send audio data anyway. because there're many mp3 files without id3 tag, PSP should (and does) accept this case
i took me a lot of time to figure it out as i have no PSP to test. had to bother my friendsKarl HeyesKarl Heyeshttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1655OggFLAC metadata not supported in Icecast2022-03-16T01:33:34ZJim CollinsonOggFLAC metadata not supported in IcecastAs a business we would really like to start streaming in lossless OggFLAC, but Icecast does not support metadata from OggFLAC. So this is a no-go for us at the moment.
FLAC uses Vorbis comments, so surly this wouldn't be difficult to ac...As a business we would really like to start streaming in lossless OggFLAC, but Icecast does not support metadata from OggFLAC. So this is a no-go for us at the moment.
FLAC uses Vorbis comments, so surly this wouldn't be difficult to achieve?Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1717[patch] icecast doesn't support chained SSL certificates2018-03-06T12:49:48ZDave Miller[patch] icecast doesn't support chained SSL certificatesSituation:
globally accepted certificate authority has certified another certificate authority for signing SSL certificates. The certificate authority that everyone has in their root cert databases has signed the second authority's root ...Situation:
globally accepted certificate authority has certified another certificate authority for signing SSL certificates. The certificate authority that everyone has in their root cert databases has signed the second authority's root cert with theirs, with signing rights granted. The second authority then signs our certificate.
This is called a chained SSL certificate. Every SSL client I've ever seen can deal with them, however, they usually take a little additional setup on the server end to make it work.
We operate several large websites with SSL certificates signed by this same vendor. In Apache, there is a separate configuration option for a certificate chain file. In some other applications (most notably mail servers) you can append the chain certificate onto the end of your own certificate, and it will Just Work.
Based on the way the config is set up in Icecast, it should be using the second method (appending the chain cert onto the end of the pem file for the certs). However, Icecast is using the wrong API call into OpenSSL for this to work.
Patch attached to fix.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1718[patch] icecast supports SSLv2 and several non-secure ciphers2018-03-06T12:49:48ZDave Miller[patch] icecast supports SSLv2 and several non-secure ciphersIcecast with SSL enabled allows SSLv2 and several insecure ciphers by default, with no way to configure it to do othewise.
SSLv2 is generally considered insecure nowadays, as are a number of the default ciphers in openssl. Icecast wasn...Icecast with SSL enabled allows SSLv2 and several insecure ciphers by default, with no way to configure it to do othewise.
SSLv2 is generally considered insecure nowadays, as are a number of the default ciphers in openssl. Icecast wasn't specifying any ciphers to use, so it just got the default list.
The attached patch disables SSLv2 outright, and adds an optional configuration option called <ssl-allowed-ciphers> which you can use to override the cipher list, which has a sane default that provides a generally-accepted-secure set of ciphers.
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1752<on-connect> to accept an arguments with the script name2018-03-06T12:49:48ZYahav<on-connect> to accept an arguments with the script namethis little patch makes the function source_run_script() to be compatible with getting an arguments after the script name,
eg. <on-connect>/path/to/script.sh arg1</on-connect>
be aware that this is just a proof-of-concept, as i'm not a ...this little patch makes the function source_run_script() to be compatible with getting an arguments after the script name,
eg. <on-connect>/path/to/script.sh arg1</on-connect>
be aware that this is just a proof-of-concept, as i'm not a C developer but a PHP developer.
i have tested it with Icecast-2.3.2 release, and it works just fine, BUT if you found a bug or some dis-functionality please rewire this patch to make it better.
just thought it would be nice to share.Icecast 2.5.0Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1810Race conditions fix2018-03-06T12:49:48ZLaurent DefertRace conditions fixHelgrind (http://valgrind.org) reports a few potential race conditions during normal execution. The attached patch fixes some of them.
Helgrind (http://valgrind.org) reports a few potential race conditions during normal execution. The attached patch fixes some of them.
Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1811Fix streaming on iPhone2018-03-06T12:49:48ZLaurent DefertFix streaming on iPhoneThis patch adds specific headers to http response to make icecast work with iPhones.
http://icecast.imux.net/viewtopic.php?t=6099
This patch adds specific headers to http response to make icecast work with iPhones.
http://icecast.imux.net/viewtopic.php?t=6099
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1812[PATCH]Handle a source using POST and PUT request2018-03-06T12:49:48ZLaurent Defert[PATCH]Handle a source using POST and PUT requestThis patch makes Icecast handle PUT and POST requests the same way it handles SOURCE request.
This patch makes Icecast handle PUT and POST requests the same way it handles SOURCE request.
Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1813Limit source reading retries2018-03-06T12:49:48ZLaurent DefertLimit source reading retriesThis patch limits the number of times Icecast retries to read from a source.
This patch limits the number of times Icecast retries to read from a source.
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1814FLV streaming support2018-03-06T12:49:48ZLaurent DefertFLV streaming supportThis patch adds support for streaming FLV files.This patch adds support for streaming FLV files.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1823[PATCH] time stamp support for dump-file2018-03-06T12:49:48ZThomas B. Rücker[PATCH] time stamp support for dump-filesee: http://lists.xiph.org/pipermail/icecast/2004-June/007443.html
< ph3-der-loewe> dm8tbr: sounds good with a minor problem (sizeof() usage), add it to queue.see: http://lists.xiph.org/pipermail/icecast/2004-June/007443.html
< ph3-der-loewe> dm8tbr: sounds good with a minor problem (sizeof() usage), add it to queue.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1839location and admin e-mail contact missing in example xml2018-03-06T12:49:48ZThomas B. Rückerlocation and admin e-mail contact missing in example xmlboth tags are missing from the example config files.both tags are missing from the example config files.Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1842Icecast needs Opus support2018-03-06T12:49:48ZGregory MaxwellIcecast needs Opus supportSee: https://wiki.xiph.org/OggOpus
See: https://wiki.xiph.org/OggOpus
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1843WebM support in Icecast2018-03-06T12:49:48ZBasil Mohamed GoharWebM support in IcecastAdd support for streaming WebM files in IcecastAdd support for streaming WebM files in IcecastMichael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1846Icecast uses default source-password if it's not defined in config2018-03-06T12:49:48ZThomas B. RückerIcecast uses default source-password if it's not defined in configThis can be a security problem if <source-password> is not defined in the Icecast config file.
Under such conditions a *default* password will take effect.
Impact should be limited, as default config contains that tag, but there are co...This can be a security problem if <source-password> is not defined in the Icecast config file.
Under such conditions a *default* password will take effect.
Impact should be limited, as default config contains that tag, but there are constellations where e.g. an Icecast admin would unwittingly allow anyone to stream through their server.
Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1851Should Icecast use $hostname instead of the value from the GET request for re...2018-11-10T12:44:08ZThomas B. RückerShould Icecast use $hostname instead of the value from the GET request for replies?Icecast uses the hostname supplied by the client in HTTP headers for replies. Should it use the hostname set in the config instead?
Target is 2.4.0
_after some discussion on IRC:_
It is apparent that the current behaviour is well suit...Icecast uses the hostname supplied by the client in HTTP headers for replies. Should it use the hostname set in the config instead?
Target is 2.4.0
_after some discussion on IRC:_
It is apparent that the current behaviour is well suited as general purpose default. (This e.g. prevents breaking in LAN/NAT/Internet setups or when the server is being accessed on different IPs and or different host names)
I am still of the opinion that there are several cases where being able to *optionally* override the hostname used in dynamic replies by the one set in the config does make sense.
* reverse proxies (although not recommended) might access the icecast server by only internally resolving host-names. This would deliver the client a broken generated playlist file.
* some server admins want to force a _single_ and _specific_ host name to be returned by the server (e.g. to ensure RRDNS, to avoid unauthorized 3rd parties defining FQDN for the server and having the server _return_ that unauthorized FQDN in dynamic playlists)
* http vs. https scenarios might break things too (e.g. different server/proxy/request-routing per port). _listenurl_ is *always* httpThomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1854GeoIP support for Icecast22018-03-06T12:49:48ZEugene MechanisMGeoIP support for Icecast2Everyone knows that a lot of stations using php and other scripts around icecast2 to get listeners stats, and also these scripts doing hard work on getting country flag and country and city and sometimes map coordinates for each listener...Everyone knows that a lot of stations using php and other scripts around icecast2 to get listeners stats, and also these scripts doing hard work on getting country flag and country and city and sometimes map coordinates for each listeners IP.
It's so terrible and not good for cpu usage etc.
Will be much better if icecast2 will do it. can be easily added support of geoip info so icecast2 will generate listeners stats with geoip details. and it's much less cpu/ram usage at all.
Can be used free GeoLite Country and GeoLite City databases. and C API look here http://www.maxmind.com/app/c
Foe example apache, nginx and others http servers offers geoIP modules. it's so painfull to write scripts around icecast2 just to get country flag and maybe some other info like city, country, map location etc. Icacast2 can do it easily and keep these stats in logs, in xml output etc.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1865Init script for icecast2018-03-06T12:49:48ZClaudius ZingerliInit script for icecastHi,
In order to automatically start icecast at system boot, I created a
startup script for icecast (adapted from /etc/init.d/openssh).
In order to make this work, you need to create:
cat /etc/sysconfig/icecast
#Icecast service startu...Hi,
In order to automatically start icecast at system boot, I created a
startup script for icecast (adapted from /etc/init.d/openssh).
In order to make this work, you need to create:
cat /etc/sysconfig/icecast
#Icecast service startup parameters
OPTIONS='-c /usr/local/etc/icecast.xml'
Adapt you icecast.xml to create a pid file in the standard location:
Instead of <pidfile>/usr/local/share/icecast/icecast.pid</pidfile> use:
<pidfile>/var/run/icecast.pid</pidfile>
(or adapt the init script to look in /usr/local)
Then put the following code in /etc/init.d/icecast and mark it
executable and do "chkconfig --add icecast" to register the service.
#!/bin/bash
#
# chkconfig: 2345 88 55
# Description: Icecast init.d script
# Adapted by zeuz from: openssh initd script
# Get function from functions library
. /etc/init.d/functions
# pull in sysconfig settings
[ -f /etc/sysconfig/icecast ] && . /etc/sysconfig/icecast
prog="icecast"
PID_FILE=/var/run/${prog}.pid
PROG_FILE=/usr/local/bin/${prog}
OPTIONS+=' -b'
RETVAL=0
# Start Icecast
start() {
echo -n $"Starting ${prog}: "
# echo -n $"${PROG_FILE} ${OPTIONS} >/dev/null 2>&1 && success ||
failure"
${PROG_FILE} ${OPTIONS} >/dev/null 2>&1 && success || failure
RETVAL=$?
[ "${RETVAL}" = 0 ] && touch /var/lock/subsys/${prog}
echo
}
# Stop Icecast
stop() {
echo -n $"Stopping ${prog}: "
if [ -n "`pidfileofproc ${prog}`" ] ; then
echo "killproc ${prog}"
else
failure $"Stopping ${prog}"
fi
RETVAL=$?
# if we are in halt or reboot runlevel kill all running sessions
# so the TCP connections are closed cleanly
if [ "x${runlevel}" = x0 -o "x${runlevel}" = x6 ] ; then
killall ${prog} 2>/dev/null
fi
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/${prog}
echo
}
### main logic ###
case "${1}" in
start)
start
;;
stop)
stop
;;
status)
status -p $PID_FILE ${prog}
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/${prog} ] ; then
stop
sleep 3
start
fi
;;
restart|reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
RETVAL=1
esac
exit 0
I hope that helps. I think it might be useful. The code has been tested
on RHEL 5. Maybe someone could put that file in a contrib directory. (or
adapt the Makefile to automatically place the init script)
Cheers
ClaudiusMichael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1867Icecast shared sources in 'httpp', 'net', 'thread' and 'timing' directories n...2018-03-06T12:49:48ZThomas B. RückerIcecast shared sources in 'httpp', 'net', 'thread' and 'timing' directories need license header update (to LGPLv2)As just noticed on #icecast, among others the timing.c and httpp.c files seem to imply GPLv2 while COPYING in that directory says LGPLv2.
Those are also used by e.g. libshout which is LGPLv2...
Suggestion: track down authors, double che...As just noticed on #icecast, among others the timing.c and httpp.c files seem to imply GPLv2 while COPYING in that directory says LGPLv2.
Those are also used by e.g. libshout which is LGPLv2...
Suggestion: track down authors, double check that changing to LGPL is OK.
This would make them compatible with both GPLv2 and LGPLv2 if I understand correctly.
affected files relative to [icecast/trunk/](../tree/master/icecast/trunk/) and who touched them (since tagging GPL):
* [icecast/trunk/timing/timing.c](../tree/master/icecast/trunk/timing/timing.c) giles, karl
* [icecast/trunk/timing/timing.h](../tree/master/icecast/trunk/timing/timing.h) giles, karl, moritz
* [icecast/trunk/net/sock.h](../tree/master/icecast/trunk/net/sock.h) (oddly not sock.c) karl, oddsock, giles, brendan, msmith, jack. plus changes predating https://trac.xiph.org/browser/trunk/net/sock.h?rev=1997
* [icecast/trunk/httpp/httpp.c](../tree/master/icecast/trunk/httpp/httpp.c) msmith, giles, oddsock, karl, ph3-der-loewe
* [icecast/trunk/httpp/httpp.h](../tree/master/icecast/trunk/httpp/httpp.h) msmith, giles, karl, ph3-der-loeweThomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1870icecast should send 'expires' in all cases2018-03-06T12:49:48ZThomas B. Rückericecast should send 'expires' in all casescurrently it only sends it in a flash special case.
We should probably do this in all cases unless someone thinks it would break existing clients?currently it only sends it in a flash special case.
We should probably do this in all cases unless someone thinks it would break existing clients?Icecast 2.4.0Thomas B. RückerThomas B. Rücker