diff --git a/doc/admin-interface.html b/doc/admin-interface.html index 7553f8c9..0df75833 100644 --- a/doc/admin-interface.html +++ b/doc/admin-interface.html @@ -16,7 +16,7 @@
-

Icecast 2.4.1 Docs — Admin Interface

+

Icecast 2.4.99.1 Docs — Admin Interface

@@ -140,4 +140,4 @@ To see the XML document that is applied to each admin XSLT, just remove the - \ No newline at end of file + diff --git a/doc/auth.html b/doc/auth.html index 2454fc15..9ed12e44 100644 --- a/doc/auth.html +++ b/doc/auth.html @@ -16,7 +16,7 @@
-

Icecast 2.4.1 Docs — Authentication

+

Icecast 2.4.99.1 Docs — Authentication

Listener Authentication

@@ -356,4 +356,4 @@ stream is active. For these admin is set to 1 in POST
- \ No newline at end of file + diff --git a/doc/basic-setup.html b/doc/basic-setup.html index 72bd22dc..95dc25a6 100644 --- a/doc/basic-setup.html +++ b/doc/basic-setup.html @@ -16,7 +16,7 @@
-

Icecast 2.4.1 Docs — Basic Setup

+

Icecast 2.4.99.1 Docs — Basic Setup

Basic Requirements

@@ -88,4 +88,4 @@ source password - from <source-password>

- \ No newline at end of file + diff --git a/doc/changes.html b/doc/changes.html index 374686cb..afb3c585 100644 --- a/doc/changes.html +++ b/doc/changes.html @@ -16,117 +16,129 @@
-

Icecast 2.4.1 Docs — Changes

+

Icecast 2.4.99.1 Docs — Changes

-
-

Version 2.4.1

- -

Fixes

- + +
+

Version 2.4.99.1

+
    -
  • Fixed cross-corruption of file descriptors by on-connect/on-disconnect scripts, specifically STDIN, STDOUT and STDERRR vs TCP connections. -
      -
    • We actually close not just 0, 1 and 2, but the first 1024 FDs, which seems common trade-off practice, but still not ideal. A more thorough fix will need platform specific logic and significant work.
    • -
    • The STDIN/OUT/ERR problem is fixed reliably, but other problems could occur if both the script and the server use FDs >1024 at the same time
    • -
    • This is now reasonably safe, but care should be exercised nevertheless.
    • -
    -
  • -
  • Disabled SSLv3 and SSL compression explicitly to improve security
  • -
  • Updated the default ciphers to be more secure
  • -
  • Fixed JSON status API problems -
      -
    • Put the XSLT last item check into every filtered tag.
    • -
    • This way we shouldn’t run into problems of this type anymore.
    • -
    • Also it should be easier to customize the XSLT this way, if someone wants to filter differently.
    • -
    -
  • -
  • Fixed <auth> in <mount type="default"> to work properly.
  • -
  • Fixed listener connection duration logging in access.log. Regression was introduced for only some platforms by an earlier security fix.
  • -
  • Fixed time zone reporting in _iso8601 fields on Windows.
  • -
  • added warnings on empty and default values of <fileserve>, <hostname>, <location>, <admin> and <server-id>
  • -
  • send errorlog (loglevel WARN) to stderr prior to opening logfiles.
  • -
  • Fixed handling of empty strings in config file. Now empty strings are handled in: accesslog, errorlog, logdir, webroot, adminroot and hopefully all kinds of port.
  • -
  • Be more verbose in case of fileserve off. People disable fileserve and then wonder why the web interface CSS breaks.
  • -
  • More details in log messages -
      -
    • Add source IP adress to startup and source exit logging
    • -
    • Add mountpoint to some log lines
    • -
    -
  • -
  • Updated the config file to avoid common pitfalls and make some things more obvious.
  • -
  • Fixed some compiler warnings
  • -
  • Fixed autogen.sh to work properly on Mac OS
  • -
  • Fixed JSON access by adding support for global and mount specific custom HTTP headers. -
      -
    • The purpose is to fix JSON access from browsers, by supporting basic CORS use cases. This is both important for some HTML5 <audio> or <video> use cases and accessing the JSON status API.
    • -
    • The default icecast config contains the very permissive global header: <header name="Access-Control-Allow-Origin" value="*" />
    • -
    -
  • +
  • Roles
  • +
  • Events
  • +
  • Stuff
  • +
  • Read ChangeLog for details
-

Known issues

+
+

Version 2.4.1

-
    -
  • HTTP PUT implementation currently doesn’t support chunked encoding yet.
  • -
  • HTTP PUT with “Expect: 100-Continue” receives first a “100” and soon after a “200”, instead of the “200” at the end of transmission.
  • -
  • Caution should be exercised when using <on-connect> or <on-disconnect>, as there is a small chance of stream file descriptors being mixed up with script file descriptors, if the FD numbers go above 1024. This will be further addressed in the next Icecast release.
  • -
  • Don’t use comments inside <http-headers> as it will prevent processing of further <header> tags.
  • -
-
+

Fixes

-
-

Version 2.4.0

+
    +
  • Fixed cross-corruption of file descriptors by on-connect/on-disconnect scripts, specifically STDIN, STDOUT and STDERRR vs TCP connections. +
      +
    • We actually close not just 0, 1 and 2, but the first 1024 FDs, which seems common trade-off practice, but still not ideal. A more thorough fix will need platform specific logic and significant work.
    • +
    • The STDIN/OUT/ERR problem is fixed reliably, but other problems could occur if both the script and the server use FDs >1024 at the same time
    • +
    • This is now reasonably safe, but care should be exercised nevertheless.
    • +
    +
  • +
  • Disabled SSLv3 and SSL compression explicitly to improve security
  • +
  • Updated the default ciphers to be more secure
  • +
  • Fixed JSON status API problems +
      +
    • Put the XSLT last item check into every filtered tag.
    • +
    • This way we shouldn’t run into problems of this type anymore.
    • +
    • Also it should be easier to customize the XSLT this way, if someone wants to filter differently.
    • +
    +
  • +
  • Fixed <auth> in <mount type="default"> to work properly.
  • +
  • Fixed listener connection duration logging in access.log. Regression was introduced for only some platforms by an earlier security fix.
  • +
  • Fixed time zone reporting in _iso8601 fields on Windows.
  • +
  • added warnings on empty and default values of <fileserve>, <hostname>, <location>, <admin> and <server-id>
  • +
  • send errorlog (loglevel WARN) to stderr prior to opening logfiles.
  • +
  • Fixed handling of empty strings in config file. Now empty strings are handled in: accesslog, errorlog, logdir, webroot, adminroot and hopefully all kinds of port.
  • +
  • Be more verbose in case of fileserve off. People disable fileserve and then wonder why the web interface CSS breaks.
  • +
  • More details in log messages +
      +
    • Add source IP adress to startup and source exit logging
    • +
    • Add mountpoint to some log lines
    • +
    +
  • +
  • Updated the config file to avoid common pitfalls and make some things more obvious.
  • +
  • Fixed some compiler warnings
  • +
  • Fixed autogen.sh to work properly on Mac OS
  • +
  • Fixed JSON access by adding support for global and mount specific custom HTTP headers. +
      +
    • The purpose is to fix JSON access from browsers, by supporting basic CORS use cases. This is both important for some HTML5 <audio> or <video> use cases and accessing the JSON status API.
    • +
    • The default icecast config contains the very permissive global header: <header name="Access-Control-Allow-Origin" value="*" />
    • +
    +
  • +
-

New Features

+

Known issues

-
    -
  • Support for Ogg Opus streams
  • -
  • Support for WebM streams
  • -
  • HTTP 1.1 PUT support for source connections. Deprecating SOURCE method
  • -
  • Default mount
    +
      +
    • HTTP PUT implementation currently doesn’t support chunked encoding yet.
    • +
    • HTTP PUT with “Expect: 100-Continue” receives first a “100” and soon after a “200”, instead of the “200” at the end of transmission.
    • +
    • Caution should be exercised when using <on-connect> or <on-disconnect>, as there is a small chance of stream file descriptors being mixed up with script file descriptors, if the FD numbers go above 1024. This will be further addressed in the next Icecast release.
    • +
    • Don’t use comments inside <http-headers> as it will prevent processing of further <header> tags.
    • +
    +
+ +
+

Version 2.4.0

+ +

New Features

+ +
    +
  • Support for Ogg Opus streams
  • +
  • Support for WebM streams
  • +
  • HTTP 1.1 PUT support for source connections. Deprecating SOURCE method
  • +
  • Default mount
    This allows you to define a global set of defaults for ALL mounts. This way you can use e.g. url-auth for sources and or listeners also for dynamically generated mounts.
  • -
  • Web interface redone -
      -
    • Web output properly redone, credit to ePirat
    • -
    • Added <audio> element for supported audio streams
    • -
    • Now validates completely as XHTML1.0 strict
    • -
    • Also improves rendering on mobile devices
    • -
    -
  • -
  • Added basic JSON API (/status-json.xsl) based on a xml2json template by Doeke Zanstra (see xml2json.xslt). Output is roughly limited to data also visible through status.xsl
  • -
  • Send charset in HTTP headers for everything, excluding file-serv and streams
  • -
  • Allow (standard strftime(3)) %x codes in <dump-file>. Disabled for Win32
  • -
  • Added stream_start_iso8601, server_start_iso8601 to statitics. ISO8601 compliante timestamps for statistics. Should make usage in e.g. JSON much easier. Added as new variables to avoid breaking backwards compatibility
  • -
  • Now compiles for Win32 using mingw
  • -
  • Added options headers and header_prefix to URL based listener auth
  • -
  • Updated listener_remove handler, added ip= and agent=
  • -
  • Allow full URLs to be returned by the master server
  • -
+
  • Web interface redone +
      +
    • Web output properly redone, credit to ePirat
    • +
    • Added <audio> element for supported audio streams
    • +
    • Now validates completely as XHTML1.0 strict
    • +
    • Also improves rendering on mobile devices
    • +
    +
  • +
  • Added basic JSON API (/status-json.xsl) based on a xml2json template by Doeke Zanstra (see xml2json.xslt). Output is roughly limited to data also visible through status.xsl
  • +
  • Send charset in HTTP headers for everything, excluding file-serv and streams
  • +
  • Allow (standard strftime(3)) %x codes in <dump-file>. Disabled for Win32
  • +
  • Added stream_start_iso8601, server_start_iso8601 to statitics. ISO8601 compliante timestamps for statistics. Should make usage in e.g. JSON much easier. Added as new variables to avoid breaking backwards compatibility
  • +
  • Now compiles for Win32 using mingw
  • +
  • Added options headers and header_prefix to URL based listener auth
  • +
  • Updated listener_remove handler, added ip= and agent=
  • +
  • Allow full URLs to be returned by the master server
  • + -

    Fixes

    +

    Fixes

    -
      -
    • Security fix: Override supplementary groups if is used
    • -
    • Fixes for some race conditions
    • -
    • Dropped debian packaging directory as debian use their own.
    • -
    • Send proper HTTP headers in responses to clients.
    • -
    • Corrected Content-Length: header in admin (raw) requests. Thanks to paluh for reporting.
    • -
    • Escape log entries in access log
    • -
    • Fixed a memory leak. Lost headers of stream because of wrong ref counter in associated refbuf objects.
    • -
    • Avoid memory leak in _parse_mount() when type-attribute is set
    • -
    • Updated web interface to be XHTML compliant.
    • -
    • Removed status2.xsl from release. It was only a broken example file anyway.
    • -
    +
      +
    • Security fix: Override supplementary groups if is used
    • +
    • Fixes for some race conditions
    • +
    • Dropped debian packaging directory as debian use their own.
    • +
    • Send proper HTTP headers in responses to clients.
    • +
    • Corrected Content-Length: header in admin (raw) requests. Thanks to paluh for reporting.
    • +
    • Escape log entries in access log
    • +
    • Fixed a memory leak. Lost headers of stream because of wrong ref counter in associated refbuf objects.
    • +
    • Avoid memory leak in _parse_mount() when type-attribute is set
    • +
    • Updated web interface to be XHTML compliant.
    • +
    • Removed status2.xsl from release. It was only a broken example file anyway.
    • +
    -

    Known issues

    +

    Known issues

    -
      -
    • Will crash if certain config tags are left empty
    • -
    +
      +
    • Will crash if certain config tags are left empty
    • +
    + +
    -
    +
    -

    Icecast 2.4.1 Docs — Config File

    +

    Icecast 2.4.99.1 Docs — Config File

    +

    Overview

    @@ -27,6 +29,8 @@
  • Authentication
  • Stream Directory Settings
  • Misc Server settings
  • +
  • TCP-Port settings
  • +
  • Global HTTP Headers
  • Relay settings
  • Mount Specific settings
  • File path settings
  • @@ -109,6 +113,7 @@ initial burst leading to the connection already exceeding the queue-size limit.<

    Authentication

    +
    <authentication>
         <source-password>hackme</source-password>
    @@ -118,18 +123,38 @@ initial burst leading to the connection already exceeding the queue-size limit.<
         <admin-password>hackme</admin-password>
     </authentication>
    +

    This section contains all the usernames and passwords used for administration purposes or to connect sources and relays.

    + +
    +
    role
    +
    contains role definitions
    +
    + +
    source-password
    The unencrypted password used by sources to connect to Icecast. The default username for all source connections is ‘source’ but this option allows to specify a default password. This and the username can be changed in the individual mount sections.
    +
    + + +
    relay-user
    Used in the master server as part of the authentication when a slave requests the list of streams to relay. The default username is relay
    +
    + + +
    relay-password
    Used in the master server as part of the authentication when a slave requests the list of streams to relay.
    +
    + + +
    admin-user/admin-password
    The username/password used for all administration functions. This includes retrieving statistics, accessing the web-based administration screens, etc. A list of these functions can be found in the “Administration” section of the manual.
    @@ -168,7 +193,7 @@ The value for this setting is provided by the owner of the Directory server.<location>earth</location> <admin>icemaster@localhost</admin> <fileserve>1</fileserve> -<server-id>icecast 2.4.1</server-id>
    +<server-id>icecast 2.5</server-id>
    hostname
    @@ -200,7 +225,7 @@ setting, unless you have very good reasons and know what you are doing.

    The following shows how you can specify the listening settings for the server.

    -

    generic port setup

    +

    Generic port setup

    The first shows an example of a common and simple way to define a listening socket:

    @@ -213,7 +238,7 @@ will listen on. Most will not need to use bind-address and often get confused by no need. Another possibility is to use an <ssl> boolean setting which informs Icecast that a secured connection is to be used. A common use for using a secure connection would be for admin page access.

    -

    backward compatibility with Shoutcast source clients

    +

    Backward compatibility with Shoutcast source clients

    The following shows how we can extend a single listen-socket to work with Shoutcast style source clients. There are two issues shoutcast source clients have over icecast source clients, one is the lack of mountpoint @@ -230,7 +255,7 @@ listening socket whose port number is always one higher than the port defined, t of which mountpoint the shoutcast source client on this socket will be using. Using this approach you can allow multiple shoutcast source clients to connect at the same time.

    -

    old style Shoutcast source client compatible setup (deprecated)

    +

    Old style Shoutcast source client compatible setup (deprecated)

    The following is just to show the longer approach to defining shoutcast compatability.

    @@ -257,8 +282,7 @@ be required and often confuses people.

    An optional IP address that can be used to bind to a specific network card. If not supplied, then it will bind to all interfaces.
    ssl
    -
    If set to 1 will enable HTTPS on this listen-socket. Icecast must have been compiled against openSSL to be able -to do so.
    +
    If set to 1 will enable HTTPS on this listen-socket. Icecast must have been compiled against openSSL to be able to do so.
    shoutcast-mount
    An optional mountpoint setting to be used when shoutcast DSP compatible clients connect. The default global setting is /stream but can be overridden here to use an alternative name which may include an extension that some clients @@ -296,7 +320,7 @@ of 8000 and it must not also be defined as shoutcast-compat
    http-headers
    -
    This element is placed anywhere inside the main section of the icecast config. It will contain <header> child elements, that specify the actual headers one by one.
    +
    This element is placed anywhere inside the main section of the Icecast config. It will contain <header> child elements, that specify the actual headers one by one.
    header
    This tag specifies the actual header to be sent to a HTTP client in response to every request. This tag can contain the following attributes: @@ -310,7 +334,7 @@ This tag can contain the following attributes:

    At the moment only global headers will be sent in case the HTTP status is not “200”. This is subject to change in the future. -Avoid placing comments inside <http-headers> as, in this release, it will prevent icecast from parsing further <header> tags.

    +Avoid placing comments inside <http-headers> as, in this release, it will prevent Icecast from parsing further <header> tags.

    @@ -421,6 +445,8 @@ limit bandwidth costs when no one is listening.

    Mount Specific Settings

    + +
    <mount type="normal">
         <mount-name>/example-complex.ogg</mount-name>
         <username>othersource</username>
    @@ -445,7 +471,7 @@ limit bandwidth costs when no one is listening.
         <burst-size>65536</burst-size>
         <mp3-metadata-interval>4096</mp3-metadata-interval>
         <authentication type="xxxxxx">
    -            <!-- See listener authentiaction documentation -->
    +            <!-- See authentication documentation -->
         </authentication>
         <http-headers>
                 <header name="Access-Control-Allow-Origin" value="*" />
    @@ -477,11 +503,19 @@ corresponding to your mountpoint.
         
    mount-name
    The name of the mount point for which these settings apply. MUST NOT be used in case of mount type “default”.
    + + + +
    username
    An optional value which will set the username that a source must use to connect using this mountpoint. Do not set this value unless you are sure that the source clients connecting to the mount point can be configured to send a username other than source.
    If this value is not present the default username is source.
    +
    + + +
    password
    An optional value which will set the password that a source must use to connect using this mountpoint. There is also a URL based authentication method for sources that can be used instead.
    @@ -568,11 +602,15 @@ default is either the hardcoded server default or the value passed from a relay.
    hidden
    Enable this to prevent this mount from being shown on the xsl pages. This is mainly for cases where a local relay is configured and you do not want the source of the local relay to be shown.
    +
    + + +
    authentication
    This specifies that the named mount point will require listener (or source) authentication. Currently, we support a file-based authentication scheme (type=htpasswd) and URL based authentication request forwarding. A mountpoint configured with an authenticator will display a red key next to the mount point name on the admin screens.
    -You can read more about listener authentication and URL based source authentication here.
    +You can read more about authentication and URL based source authentication here.
    http-headers
    This element is placed anywhere inside the mount section of the icecast config. It will contain <header> child elements, that specify the actual HTTP headers one by one.
    header
    @@ -618,7 +656,7 @@ Caution should be exercised as there is a small chance of stream file descriptor
    basedir
    -
    This path is used in conjunction with the chroot settings, and specified the base directory that is chrooted to when the server is started.
    +
    This path is used in conjunction with the chroot settings, and specifies the base directory that is chrooted to when the server is started.
    This feature is not supported on Win32.
    logdir
    This path specifies the base directory used for logging. Both the error.log and access.log will be created relative to this directory.
    @@ -640,6 +678,10 @@ The format of the file is simple, one IP per line.
    If specified, this points to the location of a file that contains a list of IP addressess that will be dropped immediately. This is mainly for problem clients when you have no access to any firewall configuration.
    The format of the file is simple, one IP per line.
    +
    + + +
    alias
    Aliases are used to provide a way to create multiple mountpoints that refer to the same mountpoint.
    For example: <alias source="/foo" dest="/bar">
    @@ -680,7 +722,7 @@ STDERR instead of a file.

    this file can grow fairly large over time. Currently, there is no log-rotation implemented.
    playlistlog
    Into this file, a log of all metadata for each mountpoint will be written. The format of the logfile will most likely change over time -as we narrow in on a standard format for this. Currently, the file is pipe delimited. This option is optional and can be removed entirely +as we narrow in on a standard format for this. Currently, the file is pipe delimited. This is optional and can be removed entirely from the config file.
    logsize
    This value specifies (in Kbytes) the maxmimum size of any of the log files. When the logfile grows beyond this value, icecast will either @@ -738,4 +780,4 @@ These need to be valid users on the system. Icecast must be started as root for
    - \ No newline at end of file + diff --git a/doc/faq.html b/doc/faq.html index 6b20686d..61934fd6 100644 --- a/doc/faq.html +++ b/doc/faq.html @@ -16,7 +16,7 @@
    -

    Icecast 2.4.1 Docs — FAQ

    +

    Icecast 2.4.99.1 Docs — FAQ

    General Questions

    @@ -53,4 +53,4 @@ it on the fly.

    - \ No newline at end of file + diff --git a/doc/glossary.html b/doc/glossary.html index 36006bd0..d046c412 100644 --- a/doc/glossary.html +++ b/doc/glossary.html @@ -16,7 +16,7 @@
    -

    Icecast 2.4.1 Docs — Glossary

    +

    Icecast 2.4.99.1 Docs — Glossary

    @@ -48,4 +48,4 @@ Icecast will then move all clients currently connected to the now defunct mountp
    - \ No newline at end of file + diff --git a/doc/index.html b/doc/index.html index 9ab3cf53..d2d3cd28 100644 --- a/doc/index.html +++ b/doc/index.html @@ -16,7 +16,7 @@
    -

    Icecast 2.4.1 Docs — Table of Contents

    +

    Icecast 2.4.99.1 Docs — Table of Contents

    Pages

    @@ -39,7 +39,7 @@
    -

    Icecast 2.4.1 Readme

    +

    Icecast 2.4.99.1 Readme

    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 @@ -96,4 +96,4 @@ at irc.freenode.net, channel #icecast, if you have any troubles.

    - \ No newline at end of file + diff --git a/doc/introduction.html b/doc/introduction.html index ad3f3699..fa2685ce 100644 --- a/doc/introduction.html +++ b/doc/introduction.html @@ -16,11 +16,11 @@
    -

    Icecast 2.4.1 Docs — Introduction

    +

    Icecast 2.4.99.1 Docs — Introduction

    What is Icecast?

    -

    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.

    +

    Icecast is a streaming media server which currently supports Ogg Vorbis, Opus, Theora and WebM streams, MP3 and AAC streams are known to work. 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.

    There are two major parts to most streaming media servers: the component providing the content (what we call source clients) and the component which is responsible for serving that content to listeners (this is the function of icecast).

    @@ -56,8 +56,8 @@

    Best Ways:

    @@ -70,4 +70,4 @@
    - \ No newline at end of file + diff --git a/doc/relaying.html b/doc/relaying.html index ff920712..4c22d8a9 100644 --- a/doc/relaying.html +++ b/doc/relaying.html @@ -16,7 +16,7 @@
    -

    Icecast 2.4.1 Docs — Relaying

    +

    Icecast 2.4.99.1 Docs — Relaying

    Overview

    @@ -92,4 +92,4 @@ in the stream itself) then the <relay-shoutcast-metadata> nee
    - \ No newline at end of file + diff --git a/doc/server-stats.html b/doc/server-stats.html index 44d06cd0..7c97b03c 100644 --- a/doc/server-stats.html +++ b/doc/server-stats.html @@ -16,7 +16,8 @@
    -

    Icecast 2.4.1 Docs — Server Statistics

    +

    Icecast 2.4.99.1 Docs — Server Statistics

    +

    Overview

    @@ -36,17 +37,22 @@ API and will change it, even completely, between versions!
    The preferred ways are custom XSLT, JSON and raw XML.

    + +
    +

    JSON API, machine readable data

    + +

    Since version 2.4.0 Icecast includes a basic JSON API (/status-json.xsl) based on a xml2json template by Doeke Zanstra +(see xml2json.xslt). It exposes the same set of server statistics that are available through the web interface and +should fulfil basic user needs. The intention is to not break backwards compatibility of this interface in the future, +still we recommend to design robust software that can deal with possible changes like addition or removal of variables. +Also note that not all variables are available all the time and availability may change at runtime due to stream type, etc.

    +
    +

    Advanced machine readable data, XSLT generated

    Icecast uses the very powerful libXSLT engine to transform its internal raw statistical data into custom tailored interfaces. Many people have written custom XSLT code that produces e.g. plain text “now playing”, XSPF, VCLT, munin interface data, etc.

    - -

    Since version 2.4.0 Icecast includes a basic JSON API (/status-json.xsl) based on a xml2json template by Doeke Zanstra -(see xml2json.xslt). It exposes a basic set of server statistics that should fulfil basic user needs. The intention is -to not break backwards compatibility of this interface in the future, still we recommend to design robust software that -can deal with possible changes like addition or removal of variables.

    -
    @@ -55,6 +61,8 @@ can deal with possible changes like addition or removal of variables.

    This section contains information about the raw XML server statistics data available inside Icecast. An example stats XML tree will be shown and each element will be described. The following example stats tree will be used:

    + +
    <icestats>
     	<admin>icemaster@localhost</admin>
     	<client_connections>649</client_connections>
    @@ -65,7 +73,7 @@ stats XML tree will be shown and each element will be described. The following e
     	<listener_connections>90</listener_connections>
     	<listeners>0</listeners>
     	<location>Earth</location>
    -	<server_id>Icecast 2.4.0</server_id>
    +	<server_id>Icecast 2.5</server_id>
     	<source_client_connections>164</source_client_connections>
     	<source_relay_connections>0</source_relay_connections>
     	<source_total_connections>164</source_total_connections>
    diff --git a/doc/win32.html b/doc/win32.html
    index 6dcb8820..21ed1dba 100644
    --- a/doc/win32.html
    +++ b/doc/win32.html
    @@ -16,17 +16,21 @@
     
         
    -

    Icecast 2.4.1 Docs — Win32 Specifics

    +

    Icecast 2.4.99.1 Docs — Win32 Specifics

    +

    The Win32 port of Icecast 2 is a simple command line application, it used to be a UI framework around the core Icecast 2 server.

    +

    The GUI is no longer necessary as Icecast has achieved all of its +functionality in its web interface.

    +

    Most of the features of Icecast 2 are available in the Win32 port.
    A notable absence is IPv6 support.

    -

    If there is sufficient user interest we may reintroduce the Icecast GUI -and capability to start Icecast as a Windows Service.

    +

    We are planning to reintroduce the capability to start Icecast +as a Windows Service in the 2.5.0 release.

    diff --git a/doc/yp.html b/doc/yp.html index d805bb57..e0529e91 100644 --- a/doc/yp.html +++ b/doc/yp.html @@ -16,16 +16,18 @@
    -

    Icecast 2.4.1 Docs — YP Directories

    +

    Icecast 2.4.99.1 Docs — YP Directories

    +

    Overview

    -

    A YP (Yellow Pages) directory is a listing of broadcast streams. Icecast 2 has it own YP directory located at +

    A YP directory is a listing of broadcast streams. Icecast has it own YP directory located at http://dir.xiph.org. Currently Icecast can only be listed in an Icecast-supported YP directory.
    -This means that you cannot list your stream in the Shoutcast YP directory.

    +This means that you cannot list your stream in the Shoutcast YP directory, due to their terms of service.

    In the Icecast configuration file are all the currently available YP directory servers. Listing your stream in a YP is -a combination of settings in the Icecast configuration file and also in your source client.

    +a combination of settings in the Icecast configuration file and also in your source client. It is of great importance +to configure Icecast correctly, as even one wrong setting can prevent listings to be accepted by a YP directory.

    @@ -42,22 +44,88 @@ If Icecast has been built with YP support, then the following configuration opti

    Multiple directory XML chunks can be specified in order to be listed in multiple directories.

    +

    Further options that play a significant role in YP listings

    + +
    <hostname>
    +

    The hostname option MUST be set to a name that resolves to the machine this Icecast server runs on.

    + +
    <listener-socket><port>
    +

    The first listener-socke+port entry is used to build the URL advertized to the YP server.

    + +
    <listener-socket><bind-address>
    +

    If you don’t specify an explicit bind-address, including :: and 0.0.0.0, then the default +bind behaviour of your operating system will apply, this may have unexpected consequences for dual-stack +(IPv6 and IPv4) setups.

    + +

    If your hostname resolves to both an AAAA and an A record (IPv6 and IPv4), then you MUST verify, +that Icecast listens to both. If in doubt create two listener-socket entries and use :: and 0.0.0.0 +as the respective bind-address.

    + +
    <admin> contact
    +

    If you are listing on a YP, then this field MUST contain a valid email address of a technical contact +on your side. YP admins will use this to reach you in case your server is misconfigured and causes problems +for the YP directory. An invalid or unreachable address is likely to get your radio/server/network banned from YP.

    + +
    Verifying the advertized URL
    + +

    After adjusting the settings and configuring your source client, you should verify setup:
    +Go to the Icecast web interface, specifically the admin part /admin/ and look for the listenurl values +of your streams. These URLs MUST work from the public internet, or your listings will fail.

    + +

    This is also one of the checks performed by a YP server. Common misconfigurations are:
    + * <hostname> set to localhost + * <hostname> set to some address that does NOT point to the Icecast server + * hostname has AAAA record but Icecast not bound to :: + * multiple <listener-socket> entries, but the first one is not publicly reachable

    +

    Configuring Your Source Client for YP Support

    This is usually covered in the source client documentation. More specifically, the source client needs to provide the HTTP header Ice-Public: 1 on connect in order to enable YP listing of the stream.
    -This can however be overridden in mount point settings, refer to “Icecast Config File” +This can however be overridden in the server side mount point settings, refer to “Icecast Config File” for further details.
    If a mountpoint is being listed on a YP, then you will see some additional statistics relating to the YP such as last-touch, currently-playing, etc.

    +
    +

    Troubleshooting

    +

    As with all Icecast problems, the error log is the goto place to start. If necessary temporary increase the log level to +4 (debug) and reload the Icecast config. All relevant messages will contain YP. Especially those messages that tell +you that something failed will contain important hints and or messages from the YP server. If your entry submission +is directly rejected the server will tell why, if your entry gets delisted after submission, then you will see +updates/touches fail. Depending on the YP server the stream reachability check will be deferred, so you will see +a successfull initial submission, but if your stream is found to be unreachable it will be delisted and updates will fail. +Please note that YP directories will check both IPv6 and IPv4 availability of streams. See the list of common misconfigurations +for further hints.

    + +

    Should you still have problems listing on http://dir.xiph.org, then please: +* set your logging to 4 (debug) +* reload/restart Icecast +* make sure your streams are running and marked public (either by source setting or mountpoint override) +* wait for one hour +* filter the error log for messages from the last hour, that are beginning with yp/ +* join the http://lists.xiph.org/mailman/listinfo/icecast (else the following step will fail!) +* send a mail to mailto:icecast@xiph.org containing: + 1. The public URL of your Icecast server - e.g. http://icecast.example.org:8000/ (Even if you have removed the status pages! This does NOT mean your homepage.) + 2. The <hostname>, <listen-socket> and <directory> sections of your icecast.xml + 3. The filtered error.log prepared previously (as an attachment) +* wait for replies from the mailing list

    + +
    + +