When speaking of the Icecast protocol here, actually it's just the HTTP protocol, and here we will explain futher how source clients need to send data to Icecast.
Since Icecast version 2.4.0 there is support for the standard HTTP PUT method.
The mountpoint to which to send the data is specified by the URL path.
The authentication is done using HTTP Basic auth.
To quickly sum it up how it works:
The client needs to send the Authorization header to Icecast, with a value of Basic (for basic authentication)
followed by a whitespace and then the username and password separated by a colon : encoded as Base64.
The mountpoint itself is specified as the path part of the URL.
Additional mountpoint information can be set using specific (non-standard) HTTP headers:
ice-public
: For a mountpoint that doesn't has <public> configured, this influences if the mountpoint shoult be advertised to a YP directory or not.
Thanks for code example!