Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • xiph/icecast-server
  • zenermerps/Icecast-Server
  • ePirat/icecast-server
  • spr0cketeer/icecast-server
  • theassassin/icecast-server
  • gilou/icecast-server
  • stephan48/icecast-server
  • rillian/icecast-server
  • vcode11/icecast-server
  • refactor-droidyy/icecast-server
10 results
Show changes
Showing
with 1027 additions and 954 deletions
<LINK REL=STYLESHEET TYPE= "text/css" HREF= "style.css"> <?xml version="1.0"?>
<div class=boxtest> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<body bgcolor="#efefef" text="#323232" link="#0000ff" vlink="#800080" alink="#ff0000"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Icecast v2.x Documentation</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div class="boxtest">
<h1>Icecast 2 Basic Setup</h1> <h1>Icecast 2 Basic Setup</h1>
<table width=100%><tr><td bgcolor="#007B79" height="10" align="center"></td></tr></table> <hr id='titlebar' />
<br> <p>
<br> <br />
<br> <br />
<br />
</p>
<h2>Basic Requirements</h2> <h2>Basic Requirements</h2>
<p>This section will describe the essential requirements in setting up a simple Internet radio station. It is by no means a complete list but should give you enough to get started.</p> <p>This section will describe the essential requirements in setting up a simple Internet radio station. It is by no means a complete list but should give you enough to get started.</p>
<p>There are two major components involved: the streaming server (icecast in this case) and the source client. The icecast server will be the place where all listeners of your station will connect. The source client (in general) runs on a separate machine than icecast, but does not necessarily need to. Source clients send the content to icecast and provide the stream data (encoded audio) that is then relayed out to listeners by icecast.</p> <p>There are two major components involved: the streaming server (icecast in this case) and the source client. The icecast server will be the place where all listeners of your station will connect. The source client (in general) runs on a separate machine than icecast, but does not necessarily need to. Source clients send the content to icecast and provide the stream data (encoded audio) that is then relayed out to listeners by icecast.</p>
<p>It is important to note that not all source clients work with icecast2. You will need to check to make sure that icecast2 is supported by your chosen source client.</p> <p>It is important to note that not all source clients work with icecast2. You will need to check to make sure that icecast2 is supported by your chosen source client.</p>
<p>
<br> <br />
<br> <br />
<br> <br />
</p>
<h2>The Basics</h2> <h2>The Basics</h2>
<p>Each icecast server can house multiple broadcasts (or mountpoints) each containing a separate stream of content. A listener can only listen to a single mountpoint at a time. This means you can have a single icecast server contain either multiple broadcasts with different content, or possibly the same broadcast but with streams of different bitrates or qualities. In this case each broadcast or stream is a separate mountpoint.</p> <p>Each icecast server can house multiple broadcasts (or mountpoints) each containing a separate stream of content. A listener can only listen to a single mountpoint at a time. This means you can have a single icecast server contain either multiple broadcasts with different content, or possibly the same broadcast but with streams of different bitrates or qualities. In this case each broadcast or stream is a separate mountpoint.</p>
<p>At this point, the steps outlined here related to the Unix version or Win32 console version of icecast. Icecast is also available in a Win32 GUI version, and the steps are similar in setup, but not quite the same.</p> <p>At this point, the steps outlined here related to the Unix version or Win32 console version of icecast. Icecast is also available in a Win32 GUI version, and the steps are similar in setup, but not quite the same.</p>
<p>The first step in the process is to find and install the icecast2 server itself. How to do this is not contained within this documentation. After installation you should have and icecast binary and 3 directories</p> <p>The first step in the process is to find and install the icecast2 server itself. How to do this is not contained within this documentation. After installation you should have and icecast binary and 3 directories</p>
<center> <div style="text-align:center;">
<table border=1 width=75%> <table border="1" width="75%">
<tr><td>conf</td><td>Contains the icecast configuration file (icecast.xml) which defines all the configuration parameters for the server.</td></tr> <tr><td>conf</td><td>Contains the icecast configuration file (icecast.xml) which defines all the configuration parameters for the server.</td></tr>
<tr><td>admin</td><td>Contains xslt files which are used by the icecast server to provide a web-based front end to the administration capabilities of the server.</td></tr> <tr><td>admin</td><td>Contains xslt files which are used by the icecast server to provide a web-based front end to the administration capabilities of the server.</td></tr>
<tr><td>logs</td><td>This is a blank directory which (if specified in the config file) will contain all the logs (there are 2) for icecast.</td></tr> <tr><td>logs</td><td>This is a blank directory which (if specified in the config file) will contain all the logs (there are 2) for icecast.</td></tr>
</table> </table>
</center> </div>
<p>The next step is to edit the icecast.xml file and set the appropriate values. Most of the default values are fine as provided, and for a basic setup the following entries should be changed :<br><br> <p>The next step is to edit the icecast.xml file and set the appropriate values. Most of the default values are fine as provided, and for a basic setup the following entries should be changed :
<br /><br />
</p>
<pre> <pre>
&lt;source-password&gt; - will be used by the source client &lt;source-password&gt; - will be used by the source client
&lt;admin-password&gt; - will be used to access admin features of icecast &lt;admin-password&gt; - will be used to access admin features of icecast
...@@ -38,22 +49,29 @@ ...@@ -38,22 +49,29 @@
<pre> <pre>
icecast -c /path/to/icecast.xml icecast -c /path/to/icecast.xml
</pre> </pre>
<p>If no error messages are generated, then check the error.log file for the following message :</p> <p>If no error messages are generated, then check the error.log file for the 'server started'
message, it will look something like :-</p>
<pre> <pre>
[2003-10-31 13:04:49] INFO main/main.c icecast server started [2003-10-31 13:04:49] INFO main/main.c Icecast 2.3.0 server started
</pre> </pre>
<p>You may notice slight variations to the line above, the time will no doubt be different,
and on some platforms the main.c is just main, but the key thing here is that the server is
started, logging is working and the version is shown.
</p>
<p>You can also verify that it started by visiting the following URL : http://yourip:port/admin/stats.xml. You should be prompted for a username and password. Enter the username "admin" and the password you entered for &lt;admin-password&gt;. If all is well, you should see an small XML tree which represents icecast statistics (more about that later).</p> <p>You can also verify that it started by visiting the following URL : http://yourip:port/admin/stats.xml. You should be prompted for a username and password. Enter the username "admin" and the password you entered for &lt;admin-password&gt;. If all is well, you should see an small XML tree which represents icecast statistics (more about that later).</p>
<p>Now that the icecast server is started you must now configure your source client. The information you will need for the source client is the following : <br> <p>Now that the icecast server is started you must now configure your source client. The information you will need for the source client is the following : <br />
<br> <br />
IP address and Port of the icecast server - both of these come from &lt;listen-socket&gt;<br> IP address and Port of the icecast server - both of these come from &lt;listen-socket&gt;<br />
source password - from &lt;source-password&gt;<br> source password - from &lt;source-password&gt;
</p>
<p>Additionally, you will need to choose a mountpoint and specify this in the source client. Icecast does not need to know about each mount point (although you can configure settings for specific mountpoint - this is covered under Advanced configuration) there are, however, some points to mention regarding mountpoints. All Ogg Vorbis streams should have mountpoints that end in .ogg (i,e. /mystream.ogg). This is due to the lazy way most media players infer the type of stream. MP3 streams usually do not contain an extension (/mystream). Mount points also should not contain any spaces or odd characters (again due to the lazy way many of the media players are coded).</p> <p>Additionally, you will need to choose a mountpoint and specify this in the source client. Icecast does not need to know about each mount point (although you can configure settings for specific mountpoint - this is covered under Advanced configuration) there are, however, some points to mention regarding mountpoints. All Ogg Vorbis streams should have mountpoints that end in .ogg (i,e. /mystream.ogg). This is due to the lazy way most media players infer the type of stream. MP3 streams usually do not contain an extension (/mystream). Mount points also should not contain any spaces or odd characters (again due to the lazy way many of the media players are coded).</p>
<p>Once you have configured your source client, you should be able to connect it to the icecast server. Verify that it is connected by hitting the stats.xml URL that was mentioned above.</p> <p>Once you have configured your source client, you should be able to connect it to the icecast server. Verify that it is connected by hitting the stats.xml URL that was mentioned above.</p>
<p>Now that you have the source connnected, listening to the stream involves simply opening the appropriate following URL in a browser: http://yourip:port/mounpointyouspecified.m3u. So, for instance, if you attached your source client to an icecast server located at 192.168.1.10:8000 with a mountpoint of /mystream.ogg, then you would open : http://192.168.1.10:8000/mystream.ogg.m3u. Note that the .m3u extention will serve up a link that opens most media players. Also it is important to note that m3u need not contain only MP3 stream, it can contain streams of arbitrary content-type and is used by icecast to serve a playlist that represents your broadcast to listening clients. Alternatively you can open up the stream URL directly within your media player (http://192.168.1.10:8000/mystream.ogg in this case)</p> <p>Now that you have the source connnected, listening to the stream involves simply opening the appropriate following URL in a browser: http://yourip:port/mounpointyouspecified.m3u. So, for instance, if you attached your source client to an icecast server located at 192.168.1.10:8000 with a mountpoint of /mystream.ogg, then you would open : http://192.168.1.10:8000/mystream.ogg.m3u. Note that the .m3u extention will serve up a link that opens most media players. Also it is important to note that m3u need not contain only MP3 stream, it can contain streams of arbitrary content-type and is used by icecast to serve a playlist that represents your broadcast to listening clients. Alternatively you can open up the stream URL directly within your media player (http://192.168.1.10:8000/mystream.ogg in this case)</p>
<p>
<br> <br />
<br> <br />
<br> <br />
</p>
</div> </div>
</body> </body>
</html> </html>
This diff is collapsed.
<LINK REL=STYLESHEET TYPE= "text/css" HREF= "style.css"> <?xml version="1.0"?>
<div class=boxtest> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<body bgcolor="#efefef" text="#323232" link="#0000ff" vlink="#800080" alink="#ff0000"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Icecast v2.x Documentation</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div class="boxtest">
<h1>Icecast 2 FAQ</h1> <h1>Icecast 2 FAQ</h1>
<table width=100%><tr><td bgcolor="#007B79" height="10" align="center"></td></tr></table> <hr id='titlebar' />
<br> <br />
<br> <br />
<br> <br />
<h2>General Questions</h2> <h2>General Questions</h2>
<h4>What is Icecast?</h4> <h4>What is Icecast?</h4>
<div class=indentedbox> <div class="indentedbox">
<p> <p>
Icecast, the project, is a collection of programs and libraries for Icecast, the project, is a collection of programs and libraries for
streaming audio over the Internet. This includes: streaming audio over the Internet. This includes:
...@@ -22,13 +28,13 @@ A source client is an external program which is responsible for sending content ...@@ -22,13 +28,13 @@ A source client is an external program which is responsible for sending content
</div> </div>
<h4>What is icecast, the program?</h4> <h4>What is icecast, the program?</h4>
<div class=indentedbox> <div class="indentedbox">
<p> <p>
icecast streams audio to listeners, and is compatible with Nullsoft’s Shoutcast. icecast streams audio to listeners, and is compatible with Nullsoft`s Shoutcast.
</p> </p>
</div> </div>
<h4>What is libshout ?</h4> <h4>What is libshout ?</h4>
<div class=indentedbox> <div class="indentedbox">
<p> <p>
From the README: From the README:
</p> </p>
...@@ -41,7 +47,7 @@ icecast streams audio to listeners, and is compatible with Nullsoft ...@@ -41,7 +47,7 @@ icecast streams audio to listeners, and is compatible with Nullsoft
</div> </div>
<h4>What is IceS?</h4> <h4>What is IceS?</h4>
<div class=indentedbox> <div class="indentedbox">
<p> <p>
IceS is a program that sends audio data to an icecast server to broadcast to clients. IceS is a program that sends audio data to an icecast server to broadcast to clients.
IceS can either read audio data from disk, IceS can either read audio data from disk,
...@@ -50,11 +56,11 @@ icecast streams audio to listeners, and is compatible with Nullsoft ...@@ -50,11 +56,11 @@ icecast streams audio to listeners, and is compatible with Nullsoft
</div> </div>
<h4>How can I view the stream status page?</h4> <h4>How can I view the stream status page?</h4>
<div class=indentedbox> <div class="indentedbox">
<p> <p>
Check your icecast configuration file for an element Check your icecast configuration file for an element
called &lt;webroot&gt;. This directory contains web stuff. called &lt;webroot&gt;. This directory contains web stuff.
In it, place a file called “status.xsl” that In it, place a file called "status.xsl" that
transforms an <acronym>XML</acronym> file containing stream transforms an <acronym>XML</acronym> file containing stream
data into a web page data into a web page
(either <acronym>XHTML</acronym> or <acronym>HTML</acronym>). (either <acronym>XHTML</acronym> or <acronym>HTML</acronym>).
...@@ -67,13 +73,13 @@ icecast streams audio to listeners, and is compatible with Nullsoft ...@@ -67,13 +73,13 @@ icecast streams audio to listeners, and is compatible with Nullsoft
<p> <p>
In addition, the web directory can In addition, the web directory can
hold multiple status transforms, if you can’t decide which hold multiple status transforms, if you can't decide which
one you want. one you want.
</p> </p>
</div> </div>
<h4>What can I use to listen to an Icecast stream?</h4> <h4>What can I use to listen to an Icecast stream?</h4>
<div class=indentedbox> <div class="indentedbox">
<p> <p>
We maintain a list of Icecast-compatible audio players at We maintain a list of Icecast-compatible audio players at
http://www.icecast.org/ http://www.icecast.org/
......
<LINK REL=STYLESHEET TYPE= "text/css" HREF= "style.css"> <?xml version="1.0"?>
<div class=boxtest> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<body bgcolor="#efefef" text="#323232" link="#0000ff" vlink="#800080" alink="#ff0000"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Icecast v2.x Documentation</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div class="boxtest">
<h1>Icecast 2 Glossary</h1> <h1>Icecast 2 Glossary</h1>
<table width=100%><tr><td bgcolor="#007B79" height="10" align="center"></td></tr></table> <hr id='titlebar' />
<br> <br />
<br> <br />
<br> <br />
<a name="source client"></a> <a name="source_client"></a>
<h4>source client</h4> <h4>source client</h4>
<div class=indentedbox> <div class="indentedbox">
A source client is an external program which is responsible for sending content data to icecast. Some source clients that support icecast2 are Oddcast, ices2, ices0.3, and DarkIce. A source client is an external program which is responsible for sending content data to icecast. Some source clients that support icecast2 are Oddcast, ices2, ices0.3, and DarkIce.
</div> </div>
<a name="slave server"></a> <a name="slave_server"></a>
<h4>slave server (Relay)</h4> <h4>slave server (Relay)</h4>
<div class=indentedbox> <div class="indentedbox">
The slave server in a relay configuration is the server that is pulling the data from the master server. It acts as a listening client to the master server. The slave server in a relay configuration is the server that is pulling the data from the master server. It acts as a listening client to the master server.
</div> </div>
<a name="master server"></a> <a name="master_server"></a>
<h4>master server (Relay)</h4> <h4>master server (Relay)</h4>
<div class=indentedbox> <div class="indentedbox">
The master server in a relay configuration is the server that has the stream that is being relayed. The master server in a relay configuration is the server that has the stream that is being relayed.
</div> </div>
<a name="mountpoint"></a> <a name="mountpoint"></a>
<h4>mountpoint</h4> <h4>mountpoint</h4>
<div class=indentedbox> <div class="indentedbox">
A mountpoint is a resource on the icecast server that represents a single broadcast stream. Mountpoints are named similar to files (/mystream.ogg, /mymp3stream). When listeners connect to icecast2, they must specify the mountpoint in the request (i.e. http://192.168.1.10:8000/mystream.ogg). Additionally, source clients must specify a mountpoint when they connect as well. Statistics are kept track of by mountpoint. Mountpoints are a fundamental aspect of icecast2 and how it is organized. A mountpoint is a resource on the icecast server that represents a single broadcast stream. Mountpoints are named similar to files (/mystream.ogg, /mymp3stream). When listeners connect to icecast2, they must specify the mountpoint in the request (i.e. http://192.168.1.10:8000/mystream.ogg). Additionally, source clients must specify a mountpoint when they connect as well. Statistics are kept track of by mountpoint. Mountpoints are a fundamental aspect of icecast2 and how it is organized.
</div> </div>
<a name="fallback"></a> <a name="fallback"></a>
<h4>fallback mountpoint</h4> <h4>fallback mountpoint</h4>
<div class=indentedbox> <div class="indentedbox">
A fallback mountpoint is configured with a parent mountpoint. In the event of the parent mountpoint losing connection with icecast, Icecast will then move all clients currently connected to the now defunct mountpoint to it's fallback mountpoint. A fallback mountpoint is configured with a parent mountpoint. In the event of the parent mountpoint losing connection with icecast, Icecast will then move all clients currently connected to the now defunct mountpoint to it's fallback mountpoint.
</div> </div>
......
<LINK REL=STYLESHEET TYPE= "text/css" HREF= "style.css"> <?xml version="1.0"?>
<div class=boxtest> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<body bgcolor="#efefef" text="#323232" link="#0000ff" vlink="#800080" alink="#ff0000"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Icecast v2.x Documentation</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div class="boxtest">
<h1>Icecast 2 Introduction</h1> <h1>Icecast 2 Introduction</h1>
<table width=100%><tr><td bgcolor="#007B79" height="10" align="center"></td></tr></table> <hr id='titlebar' />
<br> <br />
<br> <br />
<br> <br />
<h2>What is Icecast ?</h2> <h2>What is Icecast ?</h2>
<p>Icecast is a streaming media server which currently supports Ogg Vorbis and MP3 audio streams. It can be used to create an Internet radio station or a privately running jukebox and many things in between. It is very versatile in that new formats can be added relatively easily and supports open standards for commuincation and interaction.</p> <p>Icecast is a streaming media server which currently supports Ogg Vorbis and MP3 audio streams. It can be used to create an Internet radio station or a privately running jukebox and many things in between. It is very versatile in that new formats can be added relatively easily and supports open standards for commuincation and interaction.</p>
<br> <br />
<p>There are two major parts to most streaming media servers: the component providing the content (what we call <b>source clients</b>) and the component which is responsible for serving that content to listeners (this is the function of icecast). <p>There are two major parts to most streaming media servers: the component providing the content (what we call <b>source clients</b>) and the component which is responsible for serving that content to listeners (this is the function of icecast).
</p> </p>
<br> <br />
<br> <br />
<br> <br />
<h2>What platforms are supported ?</h2> <h2>What platforms are supported ?</h2>
<p>Currently the following Unix platforms are supported:</p> <p>Currently the following Unix platforms are supported:</p>
<li>Linux (Most flavors including Redhat and Debian) <ul>
<li>FreeBSD <li>Linux (Most flavors including Redhat and Debian)</li>
<li>OpenBSD <li>FreeBSD</li>
<li>Solaris <li>OpenBSD</li>
<li>Solaris</li>
</ul>
<p>Currently the following Windows platforms are supported:</p> <p>Currently the following Windows platforms are supported:</p>
<li>Windows NT <ul>
<li>Windows 2000 <li>Windows NT</li>
<li>Windows XP <li>Windows 2000</li>
<br> <li>Windows XP</li>
<br> </ul>
<br> <br />
<br />
<br />
<h2>Where do I go for questions?</h2> <h2>Where do I go for questions?</h2>
<p>There are many ways to contact the icecast development team</p> <p>There are many ways to contact the icecast development team</p>
<h3>Best Ways</h3> <h3>Best Ways</h3>
<li>Icecast mailing list <a href="http://www.xiph.org/archives">http://www.xiph.org/archives</a> <ul>
<li>Icecast Developers mailing list <a href="http://www.xiph.org/archives">http://www.xiph.org/archives</a> <li>Icecast mailing list <a href="http://www.xiph.org/archives">http://www.xiph.org/archives</a></li>
<li>Icecast IRC chat room - irc.freenode.net : #icecast <li>Icecast Developers mailing list <a href="http://www.xiph.org/archives">http://www.xiph.org/archives</a></li>
<li>Icecast IRC chat room - irc.freenode.net : #icecast</li>
</ul>
<h3>Alternate Ways</h3> <h3>Alternate Ways</h3>
<li>team@icecast.org <ul>
<br> <li>team@icecast.org</li>
<br> </ul>
<br> <br />
<br />
<br />
</div> </div>
</body> </body>
</html> </html>
<LINK REL=STYLESHEET TYPE= "text/css" HREF= "style.css"> <?xml version="1.0"?>
<div class=boxtest> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<body bgcolor="#efefef" text="#323232" link="#0000ff" vlink="#800080" alink="#ff0000"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Icecast v2.x Documentation</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div class="boxtest">
<h1>Icecast 2 Listener Authentication</h1> <h1>Icecast 2 Listener Authentication</h1>
<table width=100%><tr><td bgcolor="#007B79" height="10" align="center"></td></tr></table> <hr id='titlebar' />
<br> <br />
<br> <br />
<br> <br />
<h2>Listener Authentication</h2> <h2>Listener Authentication</h2>
<p>Listener authentication is a feature of icecast which allows you to secure certain mountpoint so that in order to listen, a listener must provide a username and password. With this feature a simple pay-for-play operation can be setup. This section will show you the basics of setting up and maintaining this component.</p> <p>Listener authentication is a feature of icecast which allows you to secure a certain
mountpoint such that in order to listen, a listener must pass some verification test. With
<br> this feature, a simple pay-for-play operation (eg user/pass), or some filtering based on the
<br> listener connection can be performed. This section will show you the basics of setting up
<br> and maintaining this component.</p>
<p>To define listener authentication, a group of tags are specified in the &lt;mount&gt;
group relating to the mountpoint. This means that authentication can apply to listeners of
source clients or relays.</p>
<br />
<p>The following authentication mechanisms can apply to listeners</p>
<ul>
<li>HTPASSWD - lookup a named file for a matching username and password</li>
<li>URL - issue web requests (eg PHP) to match authentication</li>
</ul>
<p>The listener authentication within a specified mount in the icecast XML configuration
can apply to either to a stream from a source client, relay or a webroot based file. They
do apply to intro files or fallback streams.
</p>
<br />
<h2>HTPASSWD Listener Authentication</h2> <h2>HTPASSWD Listener Authentication</h2>
<h3>Config File Entries</h3>
<p>In order to use listener authentication, you MUST configure a mount specific option. This means that you have to provide a &lt;mount&gt; section in the main icecast config file. The following is an example :</p> <p>In order to use listener authentication, you MUST configure a mount specific option. This means that you have to provide a &lt;mount&gt; section in the main icecast config file. The following is an example :</p>
<pre> <pre>
&lt;mount&gt; &lt;mount&gt;
&lt;mount-name&gt;/example-complex.ogg&lt;/mount-name&gt; &lt;mount-name&gt;/example.ogg&lt;/mount-name&gt;
&lt;authentication type="htpasswd"&gt; &lt;authentication type="htpasswd"&gt;
&lt;option name="filename" value="myauth"/&gt; &lt;option name="filename" value="myauth"/&gt;
&lt;option name="allow_duplicate_users" value="0"/&gt; &lt;option name="allow_duplicate_users" value="0"/&gt;
...@@ -25,30 +44,127 @@ ...@@ -25,30 +44,127 @@
&lt;/mount&gt; &lt;/mount&gt;
</pre> </pre>
<p>To support listener authentication you MUST provide at a minimum &lt;mount-name&gt; and &lt;authentication&gt;. The mount-name is the name of the mountpoint that you will use to connect your source client with and authentication configures what type of icecast2 authenticator to use. Currently, only a single type "htpasswd" is implemented. New authenticators will be added later. Each authenticator has a variable number of options that are required and these are specified as shown in the example. The htpasswd authenticator requires a few parameters. The first, filename, specifies the name of the file to use to store users and passwords. Note that this file need not exist (and probably will not exist when you first set it up). Icecast has built-in support for managing users and passwords via the web admin interface. More on this later in this section. The second option, allow_duplicate_users, if set to 0, will prevent multiple connections using the same username. Setting this value to 1 will enable mutltiple connections from the same username on a given mountpoint. Note there is no way to specify a "max connections" for a particular user. <p>To support listener authentication you MUST provide at a minimum &lt;mount-name&gt; and &lt;authentication&gt;. The mount-name is the name of the mountpoint that you will use to connect your source client with and authentication configures what type of icecast2 authenticator to use. Currently, only a single type "htpasswd" is implemented. New authenticators will be added later. Each authenticator has a variable number of options that are required and these are specified as shown in the example. The htpasswd authenticator requires a few parameters. The first, filename, specifies the name of the file to use to store users and passwords. Note that this file need not exist (and probably will not exist when you first set it up). Icecast has built-in support for managing users and passwords via the web admin interface. More on this later in this section. The second option, allow_duplicate_users, if set to 0, will prevent multiple connections using the same username. Setting this value to 1 will enable mutltiple connections from the same username on a given mountpoint. Note there is no way to specify a "max connections" for a particular user.
</p>
<p>Icecast supports a mixture of streams that require listener authentication and those that do not. Only mounts that are named in the config file can be configured for listener authentication.</p> <p>Icecast supports a mixture of streams that require listener authentication and those that do not. Only mounts that are named in the config file can be configured for listener authentication.</p>
<br> <br />
<br> <br />
<br>
<h3>Configuring Users and Passwords</h3> <h3>Configuring Users and Passwords</h3>
<p>Once the appropriate entries are made to the config file, connect your source client (using the mountpoint you named in the config file). To configure users and passwords for this stream you must use the web-based admin interface. Navigate to http://server:ip/admin/stats.xsl to begin. If you have configured everything properly, you should see a screen like the following :</p> <p>Once the appropriate entries are made to the config file, connect your source client (using the mountpoint you named in the config file). To configure users and passwords for this stream you must use the web-based admin interface. Navigate to http://server:ip/admin/stats.xsl to begin. If you have configured everything properly, you should see a screen like the following :</p>
<img border=1 src="listener_auth1.jpg"> <img src="listener_auth1.jpg" alt="Screenshot of http://server:ip/admin/stats.xsl" />
<p>You will see a red key in front of all mountpoint configured for listener authentication. Also note that this page will only show CONNECTED mountpoints.</p> <p>You will see a red key in front of all mountpoint configured for listener authentication. Also note that this page will only show CONNECTED mountpoints.</p>
<p>To manage users and passwords for this mountpoint, click on the red key or follow the "Manage Authentication" link. The following screen will be shown :</p> <p>To manage users and passwords for this mountpoint, click on the red key or follow the "Manage Authentication" link. The following screen will be shown :</p>
<img border=1 src="listener_auth2.jpg"> <img src="listener_auth2.jpg" alt="Screenshot of Manage Authentication" />
<p>This screen will show all the users configured for this mountpoint. Adding users is as simple as entering a username and password in the fields and clicking "Add New User". Note that usernames MUST be unique and there are NO restrictions on passwords. You can delete users by clicking the appropriate delete link next to each user.</p> <p>This screen will show all the users configured for this mountpoint. Adding users is as simple as entering a username and password in the fields and clicking "Add New User". Note that usernames MUST be unique and there are NO restrictions on passwords. You can delete users by clicking the appropriate delete link next to each user.</p>
<br> <br />
<br> <br />
<br> <br />
<h3>Finishing it all off</h3> <h3>Finishing it all off</h3>
<p>Ok, so you've created your users, and you have everything setup properly, how do your users login ? Well, we've provided a simple login form that you can use for this purpose. This page (http://server:port/auth.xsl) will bring up a form that users can use to enter their username and password.</p> <p>Ok, so you've created your users, and you have everything setup properly, how do your users login ? Well, we've provided a simple login form that you can use for this purpose. This page (http://server:port/auth.xsl) will bring up a form that users can use to enter their username and password.</p>
<img border=1 src="listener_auth3.jpg"> <img src="listener_auth3.jpg" alt="Screenshot of http://server:port/auth.xsl" />
<p>This page will serve a m3u with the username and password and in most cases should open the correct media player and begin playing your stream</p> <p>This page will serve a m3u with the username and password and in most cases should open the correct media player and begin playing your stream</p>
<br> <br />
<br> <br />
<br> <h2>URL</h2>
<p>Authenticating listeners via the URL method involves icecast, when a listener connects,
issuing requests to a web server and checking the response headers. If a certain header is
sent back then the listener connecting is allowed to continue, if not, an error is sent back
to the listener.</p>
<p>The URLs specified will invoke some web server scripts like PHP to do any work that they
may choose to do. All that is required of the scripting language is that POST information can
be handled and response headers can be sent back. libcurl is used for the requesting so
https connections may be possible, but be aware of the extra overhead involved.</p>
<p>The useragent sent in each curl request will represent the icecast server version. The
response headers will depend on whether the listener is to be accepted. In the case of
rejection, a response header <pre>icecast-auth-message: reason </pre> should also be returned
for placing in the log files.
</p>
<p>In order to use URL based listener authentication, you MUST configure a mount specific
option. This means that you have to provide a &lt;mount&gt; section in the main icecast
config file. The following shows the list of options available :</p>
<pre>
&lt;mount&gt;
&lt;mount-name&gt;/example.ogg&lt;/mount-name&gt;
&lt;authentication type="url"&gt;
&lt;option name="stream_auth" value="http://myauthserver.com/stream_auth.php"/&gt;
&lt;option name="mount_add" value="http://myauthserver.com/stream_start.php"/&gt;
&lt;option name="mount_remove" value="http://myauthserver.com/stream_end.php"/&gt;
&lt;option name="listener_add" value="http://myauthserver.com/listener_joined.php"/&gt;
&lt;option name="listener_remove" value="http://myauthserver.com/listener_left.php"/&gt;
&lt;option name="username" value="user"/&gt;
&lt;option name="password" value="pass"/&gt;
&lt;option name="auth_header" value="icecast-auth-user: 1"/&gt;
&lt;option name="timelimit_header" value="icecast-auth-timelimit:"/&gt;
&lt;/authentication&gt;
&lt;/mount&gt;
</pre>
<p>The options are described below in more detail, each of which is optional, but in each
case, within the POST data, the value for each setting is encoded.</p>
<h3>stream_auth</h3>
<p>This URL is for determining whether a source or admin request is allowed to proceed. This
is only used for source client connections and admin requests which apply to sources.</p>
<p>POST details are </p>
<pre>
action=stream_auth&amp;mount=&amp;ip=&amp;server=&amp;port=&amp;user=&amp;pass=%s
</pre>
<h3>mount_add</h3>
<p>This URL is for informing the auth server of a stream starting. No listener information
is passed for this, but can be used to initialise any details the auth server may have.
</p>
<p>POST details are</p>
<pre>
action=mount_add&amp;mount=/live&amp;server=myserver.com&amp;port=8000
</pre>
<p>Here the details indicate the server name (&lt;hostname&gt;) and mountpoint starting up</p>
<h3>mount_remove</h3>
<p>This URL is for informing the auth server of a stream finishing, like the start option, no
listener details are passed.</p>
<p>POST details are</p>
<pre>
action=mount_remove&amp;mount=/live&amp;server=myserver.com&amp;port=8000
</pre>
<p>like the start option, server name and mountpoint are provided</p>
</p>
<h3>listener_add</h3>
<p>This is most likely to be used if anything. When a listener connects, before anything is
sent back to them, this request is processed. The default action is to reject a listener
unless the auth server sends back a response header which may be stated in the 'header' option
</p>
<p>POST details are</p>
<pre>
action=listener_add&amp;server=myserver.com&amp;port=8000&amp;client=1&amp;mount=/live&amp;user=&amp;pass=&amp;ip=127.0.0.1&amp;agent="My%20player"
</pre>
<p>There are more details with this, client is the unique ID for the client within icecast,
user and pass may be blank but come from the HTTP basic auth that the listener states, ip
is the listeners IP address and agent is the Useragent from the listeners player.</p>
<p>The mount here (unlike the start/end options) states the requested url including any
query parameters, so for instance the requested URL can be /stream.ogg&amp;session=xyz, but
note that each option data is escaped before being passed via POST
</p>
<h3>listener_remove</h3>
<p>This URL is for when a listener connection closes.</p>
<p>POST details are</p>
<pre>
action=listener_remove&amp;server=myserver.com&amp;port=8000&amp;client=1&amp;mount=/live&amp;user=&amp;pass=&amp;duration=3600
</pre>
<p>Again this is similar to the add option, the difference being that a duration is passed
reflecting the number of seconds the listener was connected for </p>
<h3>auth_header</h3>
<p>The expected response header to be returned that allows the authencation to take
place may be specified here. The default is
<pre>icecast-auth-user: 1</pre>
but it could can anything you like, for instance
<pre>HTTP 200 OK</pre>
<h3>timelimit_header</h3>
<p>Listeners could have a time limit imposed on them, and if this header is sent back with a
figure (which represents seconds) then that is how long the client will remain connected for.
</p>
<br />
<h2>A note about players and authentication</h2> <h2>A note about players and authentication</h2>
<p>We do not have an exaustive list of players that support listener authentication. We use standard HTTP basic authentication, and in general, many media players support this if they support anything at all. Winamp and Foobar2000 support HTTP basic authentication on windows, and XMMS supports it on unix platforms.</p> <p>We do not have an exaustive list of players that support listener authentication. We use
standard HTTP basic authentication, and in general, many media players support this if they
support anything at all. Winamp and Foobar2000 support HTTP basic authentication on windows,
and XMMS supports it on unix platforms. Winamp/XMMS as least support the passing of query
parameters, other players may also do</p>
</div> </div>
</body> </body>
</html> </html>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Name: icecast Name: icecast
Version: 2.0.0 Version: 2.1.0-kh
Release: 1 Release: 1
Summary: Xiph Streaming media server that supports multiple audio formats. Summary: Xiph Streaming media server that supports multiple audio formats.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.