Ok, First I want to start off with this isn't the first icecast I have cloned, but it is the first where I have not only jumped Fedora release versions, but arch types as well (i386 - x86_64) and I am having strange problems. The Icecast versions are the same between the old and new servers. The biggest being is that the server binds to whatever port it feels like instead of the bind port specified. The rest of the issues I have with Icecast are minor (stats? What stats?) so here is the startup script and config I am using: Icecast 2.3.1: ############Startup Script##########3 #!/bin/sh # # icecast This shell script takes care of starting and stopping # the icecast multimedia streaming systen. # # chkconfig: - 85 15 # description: icecast is a multimedia streaming daemon. It is used to \ # relay and offer multimedia streaming content. # processname: icecast # pidfile: /var/run/icecast/icecast.pid # config: /etc/icecast.xml # Source function library. . /etc/rc.d/init.d/functions [ -x /usr/bin/icecast ] || exit 0 # See how we were called. case "$1" in start) # Start daemon. echo -n $"Starting icecast streaming daemon: " daemon "/usr/bin/icecast -b -c /etc/icecast.xml > /dev/null" RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/icecast ;; stop) # Stop daemon. echo -n $"Shutting down icecast streaming daemon: " killproc icecast RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/icecast ;; status) status icecast RETVAL=$? ;; restart) $0 stop $0 start ;; reload) echo -n $"Reloading icecast: " killproc icecast -HUP RETVAL=$? echo ;; condrestart) [ -f /var/lock/subsys/icecast ] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|restart|reload}" RETVAL=1 ;; esac exit $RETVAL #################CONFIG################# <icecast> <limits> <clients>100</clients> <sources>2</sources> <threadpool>5</threadpool> <queue-size>524288</queue-size> <client-timeout>30</client-timeout> <header-timeout>15</header-timeout> <source-timeout>10</source-timeout> <!-- same as burst-on-connect, but this allows for being more specific on how much to burst. Most people won't need to change from the default 64k. Applies to all mountpoints --> <burst-size>65535</burst-size> </limits> <authentication> <!-- Sources log in with username 'source' --> <source-password></source-password> <!-- Relays log in username 'relay' --> <relay-password></relay-password> <!-- Admin logs in with the username given below --> <admin-user></admin-user> <admin-password></admin-password> </authentication> <!-- Uncomment this if you want directory listings --> <!-- <directory> <yp-url-timeout>15</yp-url-timeout> <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url> </directory> <directory> <yp-url-timeout>15</yp-url-timeout> <yp-url>http://www.oddsock.org/cgi-bin/yp-cgi</yp-url> </directory> --> <!-- This is the hostname other people will use to connect to your server. It affects mainly the urls generated by Icecast for playlists and yp listings. --> <hostname>hikari.tsukonokage.net</hostname> <!-- You can use these two if you only want a single listener --> <!--<port>8000</port> --> <!--<bind-address>127.0.0.1</bind-address>--> <!-- You may have multiple <listener> elements --> <listen-socket> <port>8000</port> <bind-address>192.168.10.5</bind-address> </listen-socket> <!-- <listen-socket> <port>8001</port> </listen-socket> --> <master-server>192.168.10.5</master-server> <master-server-port>8001</master-server-port> <master-update-interval>120</master-update-interval> <master-password></master-password> <!--<master-relay-auth>1</master-relay-auth>--> <!-- setting this makes all relays on-demand unless overridden, this is useful for master relays which do not have <relay> definitions here. The default is 0 --> <relays-on-demand>0</relays-on-demand> <!-- Report <hostname> and this port to master server for redirecting clients to this slave --> <!--<master-redirect-port>8000</master-redirect-port>--> <!-- Relays. State connection information, and by default request inline metadata for mp3 streams if available. An on-demand relay will only retrieve the stream if there are listeners connected --> <!-- <relay> <server>127.0.0.1</server> <port>8001</port> <mount>/example.ogg</mount> <local-mount>/different.ogg</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>0</relay-shoutcast-metadata> </relay> --> <mount> <mount-name>/radio.ogg</mount-name> <username>haruhi</username> <password>123</password> <stream-name>tsukinokage.net's Audio Streams</stream-name> <stream-description>Music from www.tsukinokage.net</stream-description> <stream-url>http://radio.tsukinokage.net</stream-url> </mount> <!-- Only define a <mount> section if you want to use advanced options, like alternative usernames or passwords <mount> <mount-name>/example-complex.ogg</mount-name> <username>haruhi</username> <password></password> <max-listeners>100</max-listeners> <dump-file>/tmp/dump-example1.ogg</dump-file> <burst-size>65536</burst-size> <fallback-mount>/example2.ogg</fallback-mount> <fallback-override>1</fallback-override> <fallback-when-full>1</fallback-when-full> <intro>/path/to/stream-intro.ogg</intro> <hidden>1</hidden> <authentication type="htpasswd"> <option name="filename" value="myauth"/> <option name="allow_duplicate_users" value="0"/> </authentication> <on-connect>/home/icecast/bin/stream-start</on-connect> <on-disconnect>/home/icecast/bin/stream-stop</on-disconnect> </mount> --> <!-- other auth possibilities include running a command to do the auth, mount, user and pass are passed via stdin to the program <mount> .... <authentication type="command"> <option name="filename" value="auth_verify"/> </authentication> or for url auth, the add url needs to return a "icecast-auth-user: 1" http header for a user to authenicate. Both urls are sent params via POST, add is sent id, mount, user, pass, ip, useragent remove is passed id, mount, user, pass, duration <authentication type="url"> state username/password if url requires it <option name="username" value="admin"/> <option name="password" value="hackme"/> <option name="add" value="http://myauthserver.com/scripts/add_listener.php"/> <option name="remove" value="http://myauthserver.com/scripts/del_listener.php"/> </authentication> </mount --> <stats_log>/var/log/icecast/stats.log</stats_log> <statshtml_log>/var/www/html/icestat.html</statshtml_log> <stats_time>30</stats_time> <fileserve>1</fileserve> <!-- set the mountpoint for a shoutcast source to use, the default if not specified is /stream but you can change it here if an alternative is wanted or an extension is required --> <shoutcast-mount>/listen.pls</shoutcast-mount> <paths> <!-- basedir is only used if chroot is enabled --> <basedir>/usr/share/icecast</basedir> <!-- Note that if <chroot> is turned on below, these paths must both be relative to the new root, not the original root --> <logdir>/var/log/icecast</logdir> <webroot>/usr/share/icecast/web</webroot> <adminroot>/usr/share/icecast/admin</adminroot> <pidfile>/var/run/icecast/icecast.pid</pidfile> <!-- Aliases: treat requests for 'source' path as being for 'dest' path May be made specific to a port or bound address using the "port" and "bind-address" attributes. --> <!-- <alias source="/foo" dest="/bar"/> --> <!-- Aliases: can also be used for simple redirections as well, this example will redirect all requests for http://server:port/ to the status page --> <alias source="/" dest="/status.xsl"/> </paths> <logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <playlistlog>playlist.log</playlistlog> <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error --> </logging> <security> <chroot>0</chroot> <changeowner> <user>icecast</user> <group>icecast</group> </changeowner> </security> </icecast> -- Seann Clark Tsukinokage.net nombrandue at tsukinokage.net
Seann Clark wrote:> The biggest being is that the server binds to whatever port it feels > like instead of the bind port specified. The rest of the issues I havea random port bind is a new issue. Can you show us the netstat -tnlp | grep icecast for the xml provided?> with Icecast are minor (stats? What stats?) so here is the startup > script and config I am using:if you have suggestions for extra stats which are shown on the web pages like /admin/stats then feel free to mention them.> > Icecast 2.3.1:ok, so slightly out of date.> #################CONFIG################# > <icecast>...> <!-- You may have multiple <listener> elements --> > <listen-socket> > <port>8000</port> > <bind-address>192.168.10.5</bind-address> > </listen-socket>looks straight forward enough> <master-server>192.168.10.5</master-server> > <master-server-port>8001</master-server-port> > <master-update-interval>120</master-update-interval> > <master-password></master-password>so this is a slave icecast? the master is on port 8001> <stats_log>/var/log/icecast/stats.log</stats_log> > <statshtml_log>/var/www/html/icestat.html</statshtml_log> > <stats_time>30</stats_time>not sure where these come from, icecast2 will ignore them> <shoutcast-mount>/listen.pls</shoutcast-mount>You have only specified 1 port so shoutcast source clients won't be streaming, but if you do intend to use one of those then you'll want a better mountpoint name as this implies a playlist.> <logging> > <accesslog>access.log</accesslog> > <errorlog>error.log</errorlog> > <playlistlog>playlist.log</playlistlog> > <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error --> > </logging>level 4 gives more details, but do check the logs and in the case of port bindings, use the netstat command. karl.
Karl Heyes wrote:> Seann Clark wrote: > >> The biggest being is that the server binds to whatever port it feels >> like instead of the bind port specified. The rest of the issues I have > > a random port bind is a new issue. Can you show us the > netstat -tnlp | grep icecast > for the xml provided?Thu Jul 03-13:54:17-root at haruhi-new:~> netstat -tnlp | grep icecast tcp 0 0 192.168.10.5:34429 0.0.0.0:* LISTEN 3336/icecast> >> with Icecast are minor (stats? What stats?) so here is the startup >> script and config I am using: > > if you have suggestions for extra stats which are shown on the web > pages like /admin/stats then feel free to mention them.What I am after is some log file type of way to store stats so I can run a program like webalizer or something against it> >> >> Icecast 2.3.1: > > ok, so slightly out of date.This was a Distro RPM (yum install icecast)> > >> #################CONFIG################# >> <icecast> > ... >> <!-- You may have multiple <listener> elements --> >> <listen-socket> >> <port>8000</port> >> <bind-address>192.168.10.5</bind-address> >> </listen-socket> > > looks straight forward enough > >> <master-server>192.168.10.5</master-server> >> <master-server-port>8001</master-server-port> >> <master-update-interval>120</master-update-interval> >> <master-password></master-password> > > so this is a slave icecast? the master is on port 8001Didn't know this was the pure slave statement, the instructions on the site are a bit cryptic, so I had a hard time guessing how to put it together.> > >> <stats_log>/var/log/icecast/stats.log</stats_log> >> <statshtml_log>/var/www/html/icestat.html</statshtml_log> >> <stats_time>30</stats_time> > > not sure where these come from, icecast2 will ignore themA read me type of walk through stated this did the stats logging I desired, not sure what version it was for but it got left behind in my configs> >> <shoutcast-mount>/listen.pls</shoutcast-mount> > > You have only specified 1 port so shoutcast source clients won't be > streaming, but if you do intend to use one of those then you'll want a > better mountpoint name as this implies a playlist. >I don't have the shout part set up, never really go around to getting a shout up properly, so that is a fragment of "Will fix when I get to it">> <logging> >> <accesslog>access.log</accesslog> >> <errorlog>error.log</errorlog> >> <playlistlog>playlist.log</playlistlog> >> <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error --> >> </logging> > > level 4 gives more details, but do check the logs and in the case of > port bindings, use the netstat command. > > karl. >All the logging I get from the icecast is: [2008-07-03 10:23:46] INFO fserve/fserve_shutdown file serving thread stopped [2008-07-03 10:23:46] INFO slave/_slave_thread Slave thread shutdown complete [2008-07-03 10:23:46] INFO auth/auth_run_thread Authenication thread shutting down [2008-07-03 10:23:46] INFO auth/auth_shutdown Auth thread has terminated [2008-07-03 10:23:46] INFO yp/yp_shutdown YP thread down [2008-07-03 10:23:47] INFO stats/stats_shutdown stats thread finished [2008-07-03 10:23:47] INFO main/main Icecast 2.3.1 server started [2008-07-03 10:23:47] INFO yp/yp_update_thread YP update thread started [2008-07-03 10:23:47] INFO auth/auth_run_thread Authentication thread started [2008-07-03 10:23:48] WARN slave/update_from_master Relay slave failed to contact master server to fetch stream list [2008-07-03 10:25:34] INFO sighandler/_sig_die Caught signal 15, shutting down... [2008-07-03 10:25:34] INFO main/main Shutting down [2008-07-03 10:25:34] INFO fserve/fserve_shutdown file serving thread stopped [2008-07-03 10:25:35] INFO slave/_slave_thread Slave thread shutdown complete [2008-07-03 10:25:35] INFO auth/auth_run_thread Authenication thread shutting down [2008-07-03 10:25:35] INFO auth/auth_shutdown Auth thread has terminated [2008-07-03 10:25:35] INFO yp/yp_shutdown YP thread down [2008-07-03 10:25:35] INFO stats/stats_shutdown stats thread finished [2008-07-03 10:25:35] INFO main/main Icecast 2.3.1 server started [2008-07-03 10:25:35] INFO yp/yp_update_thread YP update thread started [2008-07-03 10:25:35] INFO auth/auth_run_thread Authentication thread started [2008-07-03 10:25:36] WARN slave/update_from_master Relay slave failed to contact master server to fetch stream list [2008-07-03 10:25:52] INFO sighandler/_sig_die Caught signal 15, shutting down... [2008-07-03 10:25:52] INFO main/main Shutting down [2008-07-03 10:25:52] INFO fserve/fserve_shutdown file serving thread stopped [2008-07-03 10:25:52] INFO slave/_slave_thread Slave thread shutdown complete [2008-07-03 10:25:52] INFO auth/auth_run_thread Authenication thread shutting down [2008-07-03 10:25:52] INFO auth/auth_shutdown Auth thread has terminated [2008-07-03 10:25:53] INFO yp/yp_shutdown YP thread down [2008-07-03 10:25:53] INFO stats/stats_shutdown stats thread finished [2008-07-03 13:54:15] INFO main/main Icecast 2.3.1 server started [2008-07-03 13:54:15] INFO yp/yp_update_thread YP update thread started [2008-07-03 13:54:15] INFO auth/auth_run_thread Authentication thread started [2008-07-03 13:54:16] WARN slave/update_from_master Relay slave failed to contact master server to fetch stream list [2008-07-03 13:56:16] WARN slave/update_from_master Relay slave failed to contact master server to fetch stream list [2008-07-03 13:58:16] WARN slave/update_from_master Relay slave failed to contact master server to fetch stream list [2008-07-03 14:00:08] INFO sighandler/_sig_die Caught signal 15, shutting down... [2008-07-03 14:00:08] INFO main/main Shutting down [2008-07-03 14:00:08] INFO fserve/fserve_shutdown file serving thread stopped [2008-07-03 14:00:09] INFO slave/_slave_thread Slave thread shutdown complete [2008-07-03 14:00:09] INFO auth/auth_run_thread Authenication thread shutting down [2008-07-03 14:00:09] INFO auth/auth_shutdown Auth thread has terminated [2008-07-03 14:00:09] INFO yp/yp_shutdown YP thread down [2008-07-03 14:00:10] INFO stats/stats_shutdown stats thread finished [2008-07-03 14:00:35] INFO main/main Icecast 2.3.1 server started [2008-07-03 14:00:35] DBUG yp/yp_recheck_config Updating YP configuration [2008-07-03 14:00:35] INFO yp/yp_update_thread YP update thread started [2008-07-03 14:00:35] INFO auth/auth_run_thread Authentication thread started [2008-07-03 14:00:36] DBUG slave/_slave_thread checking master stream list [2008-07-03 14:00:36] WARN slave/update_from_master Relay slave failed to contact master server to fetch stream list -- Seann Clark Tsukinokage.net nombrandue at tsukinokage.net