[icecast] Ices -> Icecast Authentication Failure

Michael Higgins
Fri, 06 Aug 2004 14:23:23 -0000

Hello, list --

Sorry for the dumb post about confirmation -- I've always wanted to run
majordomo so I could see how this stuff works. Whoops! I guess replying
to the email really isn't the thing to do -- even though it explicitly
states it as an option...

My problem, outside of list etiquette, is this: having compiled all the
latest, installed, etc., ... having read all I can find on-line,
including the archives for this list, I'm still stumped. I fudged a bit
on compiling, but, assuming the proggies are working.

I just recompiled ices 023 to suppport xml. Now it reads the config file
(was just sending config on command line). I'm kind've learning as I go,
fine.

I'll attach the configuration files I'm using below. Icecast loads when
I point it to the xml config, waits. If I http://myip:8000/???? I always
get 'The source you requested could not be found.' as an error. Telnet
just fails, killing the session, whatever I put in followed by 2
newlines. But my problem isn't remote administration...

When I load ices, it fails authentication. I've tried all combinations
of passwords, specifying mountpoints, server i.p. vs 'localhost' vs
127.0.0.1, etc, etc. Always the same result. '401 Authentication
Faulure'.

I'm not a compiler junkie, so, looking through the makefile for icecast,
I seen no mention of compile option for encryption... I didn't ask for
it on the command line... no 'mkpassswd' is in my /usr/local/bin folder
And, anyway, if I specify a normal, unencrypted pass in the config file,
what does it need if it's encryption enabled? Or, how do I find out if
it is expecting a crypted pass?

Seems to be the most likely culprit from what I've read, but, I don't
know. I opened up port forwarding on the router/firewall, but, I'm
working entirely on the local machine...

I feel, since this works for other folks, that I'm missing some big
piece of the equation. Maybe someone can shed a little wisdom? I'm
stuck. I could go back and recompile everything, bu(As if that was
working...)

TIA

-- mike higgins

----------------------------in /usr/local/icecast/etc-----------------

<icecast>
     <location>Not Currently Used</location>
     <admin>Not Currently Used</admin>

     <limits>
         <clients>100</clients>
         <sources>2</sources>
         <threadpool>5</threadpool>
         <queue-size>102400</queue-size>
         <client-timeout>30</client-timeout>
         <header-timeout>15</header-timeout>
         <source-timeout>10</source-timeout>
     </limits>

     <authentication>

         <source-password>letmein</source-password>

         <relay-password>hackme</relay-password>


         <admin-user>admin</admin-user>
         <admin-password>hackme</admin-password>
     </authentication>


     <!--
     <directory>
         <yp-url-timeout>15</yp-url-timeout>
         <yp-url><a
href="http://www.oddsock.org/cgi-bin/yp-cgi</yp-url">http://www.oddsock.org/cgi-bin/yp-cgi</yp-url>
     </directory>
      -->

     <hostname>64.252.210.146</hostname>


     <!--<port>8000</port> -->
     <!--<bind-address>127.0.0.1</bind-address>-->

     <!-- You may have multiple <listener> elements -->
     <listen-socket>
         <port>8000</port>
         <!-- <bind-address>127.0.0.1</bind-address> -->
     </listen-socket>
     <!--
     <listen-socket>
         <port>8001</port>
     </listen-socket>
     -->

     <!--<master-server>127.0.0.1</master-server>-->
     <!--<master-server-port>8001</master-server-port>-->

<!--<master-update-interval>120</master-update-interval>-->
     <!--<master-password>hackme</master-password>-->
     <!--
     <relay>
       <server>127.0.0.1</server>
       <port>8001</port>
       <mount>/example.ogg</mount>
       <local-mount>/another.ogg</local-mount>

       <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
     </relay>
     -->

     <!-- Only define a <mount> section if you want to use advanced
options,
          like alternative usernames or passwords
       -->
    <mount>
         <mount-name>ices</mount-name>

          <password>letmein</password>

         <max-listeners>1</max-listeners>
<!--      <dump-file>/tmp/dump-example1.ogg</dump-file>
         <fallback-mount>/example2.ogg</fallback-mount> -->
     </mount>

     <fileserve>1</fileserve>

     <paths>
         <basedir>/usr/local/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>/usr/local/icecast/logs</logdir>
         <webroot>/usr/local/icecast/web</webroot>

         <!-- 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"/>
           -->
     </paths>

     <logging>
         <accesslog>access.log</accesslog>
         <errorlog>error.log</errorlog>
           <loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1
Error -->
     </logging>

     <security>
         <chroot>0</chroot>
<!--        <changeowner>
             <user>nobody</user>
             <group>nogroup</group>
         </changeowner>  -->
     </security>
</icecast>

<?xml version="1.0"?>
<ices:Configuration
xmlns:ices="http://www.icecast.org/projects/ices">
   <Playlist>
     <!-- This is the filename used as a playlist when using the builtin
      playlist handler. -->
     <File>playlist.txt</File>
     <!-- Set this to 0 if you don't want to randomize your playlist, and
to
      1 if you do. -->
     <Randomize>1</Randomize>

     <Type>builtin</Type>
     <!-- Module name to pass to the playlist handler if using  perl or
python.
      If you use the builtin playlist handler then this is ignored -->
     <Module>ices</Module>
   </Playlist>

   <Execution>
     <!-- Set this to 1 if you want ices to launch in the background as a
          daemon -->
     <Background>0</Background>
     <!-- Set this to 1 if you want to see more verbose output from ices
-->
     <Verbose>0</Verbose>
     <!-- This directory specifies where ices should put the logfile,
cue file
      and pid file (if daemonizing). -->
     <BaseDirectory>/tmp</BaseDirectory>
   </Execution>

   <Stream>
     <Server>
       <!-- Hostname or ip of the icecast server you want to connect to
-->
       <Hostname>64.252.210.146</Hostname>

       <Port>8000</Port>


       <Password>letmein</Password>
       <!-- Header protocol to use when communicating with the server.
            Shoutcast servers need "icy", icecast 1.x needs
"xaudiocast", and
        icecast 2.x needs "http". -->
       <Protocol>http</Protocol>
     </Server>


     <Mountpoint>ices</Mountpoint>
     <!-- The name of the dumpfile on the server for your stream. DO NOT set
      this unless you know what you're doing.
     <Dumpfile>ices.dump</Dumpfile>
     -->

     <Name>Default stream</Name>

     <Genre>Default genre</Genre>

     <Description>Default description</Description>

     <URL><a
href="http://localhost/</URL">http://localhost/</URL>
     <!-- 0 if you don't want the icecast server to publish your stream
on
      the yp server, 1 if you do -->
     <Public>0</Public>

     <!-- Stream bitrate, used to specify bitrate if reencoding, otherwise
      just used for display on yp and on the server. Try to keep it
      accurate -->
     <Bitrate>128</Bitrate>
     <!-- If this is set to 1, and ices is compiled with liblame support,
      ices will reencode the stream on the fly to the stream bitrate. -->
     <Reencode>0</Reencode>
     <!-- Number of channels to reencode to, 1 for mono or 2 for stereo
-->
     <Channels>2</Channels>
   </Stream>
</ices:Configuration>