[Icecast] Icecast Fedora9 migration problems

Seann Clark nombrandue at tsukinokage.net
Thu Jul 3 09:55:13 PDT 2008


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



More information about the Icecast mailing list