1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-06-23 06:25:24 +00:00
Commit Graph

1653 Commits

Author SHA1 Message Date
Philipp Schafft
212ef5bb8f Cleanup: Use client_set_queue() and only use it once in client_destroy() 2018-09-19 14:39:19 +00:00
Philipp Schafft
4cb4a9b5b1 Feature: Allow altering client based on headers from the URL Auth backend 2018-09-19 13:32:58 +00:00
Philipp Schafft
fa5e2ffee6 Feature: Allow header_* not require being set in lowercase 2018-09-19 13:32:58 +00:00
Philipp Schafft
f2c474ec63 Feature: Added function to lowercase a string 2018-09-19 13:32:58 +00:00
Philipp Schafft
4e69f55410 Feature: Make the message header configurable 2018-09-19 13:32:58 +00:00
Philipp Schafft
8a08ae25c3 Fix: Free memory used for header names 2018-09-19 13:32:58 +00:00
Philipp Schafft
e10c32a837 Feature/Fix: Replaced old auth headers.
This adds some workarounds for old style auth headers in URL auth.
The old code did not check buffer lengths. Buffer overflow seems
possible.

This also adds a new handling that replaces the old one and has a
much cleaner interface. This should be used for future software.
2018-09-19 13:32:58 +00:00
Philipp Schafft
37d9319b1b Cleanup: Use replace_string() and only strdup() if needed 2018-09-19 13:32:58 +00:00
Philipp Schafft
7b608e27be Feature: Added function to convert strings into auth results 2018-09-19 13:32:58 +00:00
Philipp Schafft
b3497e6ec8 Feature: Added way for the auth backend to store per-request data 2018-09-19 13:32:58 +00:00
Philipp Schafft
cb32973572 Feature: Added permission system for auth backends altering clients 2018-09-19 13:32:58 +00:00
Philipp Schafft
bb2ba6e8cf Fix: Avoided segfault if clear_auth() is closed with auth->state == NULL 2018-09-19 13:32:58 +00:00
Philipp Schafft
d0b23fb8c6 Feature: Added support to "static" auth to alter the client 2018-09-19 13:32:58 +00:00
Philipp Schafft
0392b4a32f Feature: Added lookup function for auth_alter_t 2018-09-19 13:32:58 +00:00
Philipp Schafft
4d7a60d588 Feature: Added basic support for auth backends to manipulate the client 2018-09-19 13:32:58 +00:00
Philipp Schafft
dabf9337a6 Feature: Added helper function replace_string() 2018-09-19 13:32:58 +00:00
Philipp Schafft
6c491b3814 Cleanup: Code reformating 2018-09-14 19:25:40 +00:00
Philipp Schafft
355e90ef66 Fix: Corrected used type (int) -> (size_t) 2018-09-14 07:51:38 +00:00
Philipp Schafft
40c5751a06 Cleanup: Updated formating 2018-09-14 07:45:20 +00:00
Philipp Schafft
c97e5d95fc Cleanup: Remove redundant passing of client's uri 2018-09-13 13:38:57 +00:00
Philipp Schafft
e4560e15a2 Cleanup: Made assigning of client->admin_command a function on it's own. 2018-09-13 12:47:28 +00:00
Philipp Schafft
fe948bffea Update: Make client's URI part of it's object 2018-09-13 12:44:57 +00:00
Philipp Schafft
4b44c73d1c Clanup: Unify <authentication> parser code 2018-09-13 12:06:36 +00:00
Philipp Schafft
ed266a5dc7 Feature: Added per <listen-socket> <authentication> 2018-09-13 11:34:01 +00:00
Philipp Schafft
1f8d19cb40 Cleanup: Use (auth_stack_t) not (struct auth_stack_tag) 2018-09-13 11:09:16 +00:00
Philipp Schafft
8bd43eb3d4 Feature: Added new <role> properties: match-method, and nomatch-method. This is more inline with the other properties 2018-09-13 10:37:33 +00:00
Philipp Schafft
d317b6fbdc Feature: Added new <role> properties: match-web, nomatch-web, match-admin, and nomatch-admin 2018-09-13 10:14:31 +00:00
Philipp Schafft
6f2c6b8e84 Fix: Use ADMIN_COMMAND_ERROR not -1 2018-09-13 08:38:16 +00:00
Philipp Schafft
0af45ebf26 Cleanup: Replace and remove leftover old COMMAND_*s 2018-09-13 08:38:12 +00:00
Philipp Schafft
11a04c80c2 Updated submodules 2018-09-13 08:37:37 +00:00
Marvin Scholz
d9793f4e33 Update: Separate integration and unit tests
- Unit tests are now in `src/tests`
- Integration tests are in `tests`
2018-08-16 16:24:48 +02:00
Marvin Scholz
149194d6af Fix: Use POSIX poll.h instead of sys/poll.h 2018-08-14 20:03:01 +02:00
Philipp Schafft
bfcac5d30c Feature: Unifiy response root node generation a bit and make the module list universally available 2018-08-08 14:10:08 +00:00
Philipp Schafft
d0efb73a7b Feature: Also report loaded modules in report XML 2018-08-08 14:10:08 +00:00
Philipp Schafft
51712ebb2a Feature: Provide a unified interface to get an basic report 2018-08-08 14:10:08 +00:00
Philipp Schafft
c67d9de500 Feature: Added functions to get a node from report XML by it's type 2018-08-08 14:10:08 +00:00
Philipp Schafft
e89f1bba8d Feature: Added way to add links to modules 2018-08-08 14:10:08 +00:00
Philipp Schafft
f541cb5c8a Feature: List loaded modules in stats XML 2018-08-08 14:10:08 +00:00
Philipp Schafft
63cc9b9c2a Feature: Also route slow events to fastevent subsystem 2018-08-08 14:05:41 +00:00
Philipp Schafft
cdd09669fa Feature: Added some more useful client fast events 2018-08-08 14:05:41 +00:00
Philipp Schafft
08cf0c1233 Feature: Emit a range of basic connection and client events 2018-08-08 14:05:41 +00:00
Philipp Schafft
23e7069d78 Update: Initialize/Shutdown fast event subsystem 2018-08-08 14:05:40 +00:00
Philipp Schafft
02c9eb7f10 Feature: Added fast event API 2018-08-08 14:05:40 +00:00
Philipp Schafft
8cf3da1a92 Update: Added still stub files for fast events. 2018-08-08 14:05:40 +00:00
Philipp Schafft
680557abc7 Fix: Ensure we have a look while accessing self->module in modulecontainer 2018-08-08 13:39:54 +00:00
Philipp Schafft
d0899fe4fc Fix: Corrected typo in constant name 2018-08-08 10:42:16 +00:00
Philipp Schafft
6cf45fd11d Fix: Handle 0-byte feasts as no-match 2018-08-08 10:14:04 +00:00
Philipp Schafft
03092d1049 Fix: Do not asume listener->id != NULL when looking for a listener with a specific ID 2018-08-08 09:04:55 +00:00
Philipp Schafft
2d0d496ad4 Fix: Set con->readbuffer = NULL after free() 2018-08-02 09:09:19 +00:00
Philipp Schafft
9cdf5761a0 Update: Added some comments in reportxml.c 2018-07-27 11:55:00 +00:00
Philipp Schafft
3a64ffd2de Update: Improved comments on reportxml.h 2018-07-27 11:44:00 +00:00
Philipp Schafft
6f02daafbf Update: Added a huge number of comments to reportxml.h 2018-07-27 11:27:42 +00:00
Philipp Schafft
dd04ef5f77 Update: Added comments to refobject.h 2018-07-27 10:36:59 +00:00
Philipp Schafft
2f938b8500 Fix: set freed pointer to NULL to avoid access-after-free 2018-07-27 10:36:50 +00:00
Philipp Schafft
e900d8e80c Fix: Fixed end-of-input bug in Base64 encoder 2018-07-27 10:07:30 +00:00
Philipp Schafft
648947fe44 Cleanup: Provided connection_send_bytes() to avoid direct access to con->send() 2018-07-27 10:07:18 +00:00
Philipp Schafft
1c61903793 Feature: Allow <relay> within <mount> 2018-07-26 09:24:08 +00:00
Philipp Schafft
1e230972fa Feature: Allow <upstream> within <relay> to have a type="" that can be "normal" and "default" 2018-07-26 09:24:01 +00:00
Philipp Schafft
2c8d45310a Fix: Corrected and improved default value handling for relay upstreams 2018-07-26 09:23:56 +00:00
Philipp Schafft
4b2a062aa0 Feature: Allow actually using more than one upstream 2018-07-26 09:23:52 +00:00
Philipp Schafft
bde17102e2 Fix: Corrected copy function so that number of upstreams is preserved 2018-07-26 09:23:37 +00:00
Philipp Schafft
d61acebf96 Update: Fixed indenting 2018-07-26 09:23:32 +00:00
Philipp Schafft
59697252f0 Feature: Added <upstream>-tag to relay config 2018-07-26 09:23:24 +00:00
Philipp Schafft
fee836f697 Cleanup: Seperated relay upstream parser into seperate function 2018-07-26 09:23:16 +00:00
Philipp Schafft
fd4f28274b Cleanup: Seperated relay config from runtime data 2018-07-26 09:23:06 +00:00
Philipp Schafft
75314c2b34 Fix: Corrects setup of client_t in client mode.
Closes: #2336
2018-07-20 11:41:39 +00:00
Philipp Schafft
c40d12a1c7 Update: Moved _update_client_request_body_length() into new client_complete() 2018-07-20 11:41:37 +00:00
Philipp Schafft
c0155e2404 Fix: Do free connection's putback buffer regardless of it's size 2018-07-20 11:41:03 +00:00
Philipp Schafft
d782eb4c21 Feature: Allow admin commands to have embedded parameters 2018-07-09 10:42:14 +00:00
Philipp Schafft
046bfb9c85 Fix: Removed unused header 2018-07-09 10:41:34 +00:00
Philipp Schafft
43bc709b48 Feature: Added new resource match system 2018-07-09 09:29:54 +00:00
Philipp Schafft
fd2556b4c0 Fix: Corrected use of XMLSTR() 2018-07-09 08:36:48 +00:00
Marvin Scholz
0df3e0eda1 Fix: Correct clearing of XSLT cache entry
Fix a double free that could happen when the cache was cleared
during config reload and then subsequent XSLT requests would try
to evict the same cache item, because the item name was not set to
NULL in clear_cache_entry.

Previously this was no problem as a cache entry would only be evicted
on load of a new XSLT and that one would immediately fill in the place
of the old one.
2018-07-09 04:00:18 +02:00
Marvin Scholz
5cd32038d0 Update: Reduce unnecessary config locks in XSLT loader 2018-07-09 03:36:37 +02:00
Marvin Scholz
f52f562e76 Fix: Clear XSLT admin path cache on config reload 2018-07-09 03:36:11 +02:00
Marvin Scholz
450c26a45b Fix: Convert admin path in XSLT loader to URI
The xmlBuildURI function only deals with URIs, not paths, therefore
the admin path has to be converted to a URI first.
2018-07-09 03:35:54 +02:00
Marvin Scholz
858ff390d3 Fix: Remove broken XSLT loader cache invalidation
The XSLT loader caches the admin path from the config file and
invalidates it by comparing the stored path with the one in the config.
But to the stored path a / is appended, which means the cache would
always invalidate as it never matches.
2018-07-09 03:35:48 +02:00
Marvin Scholz
c6a8859fbc Fix: compat: Use stdint on Windows if possible 2018-07-09 03:35:25 +02:00
Marvin Scholz
db95e9c6fc Fix: Guard include of <sys/select.h> 2018-07-09 03:35:15 +02:00
Marvin Scholz
9897567ea0 Update: Add debug logging for admin auth error 2018-07-09 03:34:53 +02:00
Philipp Schafft
ade6aef0fd Update: Increased the maximum playlist items default from 4 to 10.
Closes: xiph/icecast-server#2332
2018-07-07 10:08:27 +00:00
Philipp Schafft
45d44a6349 Feature: Clear XSLT cache on config reload 2018-07-06 21:40:37 +00:00
Philipp Schafft
3ffe5f4e96 Update: Adding more debugging to XSLT cache 2018-07-06 20:37:18 +00:00
Philipp Schafft
e9140588c6 Cleanup: Formating 2018-07-06 20:27:02 +00:00
Philipp Schafft
6f6499a187 Cleanup: Formating 2018-07-06 20:26:12 +00:00
Philipp Schafft
73f00d5934 Update: Make connection IDs it's own type 2018-07-06 18:43:25 +00:00
Philipp Schafft
d08eba9607 Fix: Fixed report XML related memory leaks 2018-07-06 18:43:10 +00:00
Philipp Schafft
c02f34e989 Fix: Copy XML childs recursively 2018-07-06 18:42:45 +00:00
Philipp Schafft
d9e96a55e7 Feature: Allow <resource> to match on a specific listen-socket 2018-06-30 14:06:05 +00:00
Philipp Schafft
2febabcddd Update: Corrected copyright 2018-06-30 13:57:37 +00:00
Philipp Schafft
80ffdca7d1 Feature: Allow listen sockets to virtually handle other sockets traffic.
This adds on-behalf-of="#id" to <listen-socket>. It allows a socket
to handle the traffic that was originally meant of another (virtual)
listen socket.
2018-06-30 13:51:42 +00:00
Philipp Schafft
7742bf0a21 Fix: Report correct listen URL to client.
The URL is constructed considering Protocol, TLS Mode, Host, and Port.

This considers:
 - The Host:-header as provided by the client,
 - The effective listensocket of the client,
 - Global configuration.

This works for:
 - Playlist generation,
 - Admin authed playlist generation,
 - Stats based XSLT.

It also unifies code:
 - Default stats values.

Not yet included:
 - YP requests.
2018-06-30 13:12:30 +00:00
Philipp Schafft
33588fc9cf Update: Prepare listensocket_*() API for uses with real listen socket != effective listen socket 2018-06-30 13:10:09 +00:00
Philipp Schafft
58848cbe56 Feature: Allow listen sockets to be of type "virtual" 2018-06-30 13:10:09 +00:00
Philipp Schafft
75be23b550 Fix: Also copy listener type 2018-06-30 13:10:08 +00:00
Philipp Schafft
6ad7f8d3db Feature: Added id and type property to <listen-socket> 2018-06-30 13:10:08 +00:00
Philipp Schafft
e1f944a3f5 Update: Added comment about global lock in __prepare_shoutcast_admin_cgi_request() 2018-06-30 13:10:08 +00:00
Philipp Schafft
ab8d1639ba Update: Made listensocket_* perfect thread safe. 2018-06-30 13:10:08 +00:00
Philipp Schafft
fcef3f12d6 Feature: Allow complete reconfiguration of sockets on config reload 2018-06-30 13:10:08 +00:00
Philipp Schafft
b495a407f9 Feature: Added listensocket_container_configure_and_setup() that combines configure and setup into one call 2018-06-30 13:10:08 +00:00
Philipp Schafft
a6ff1cb2d7 Update: Moved compare of two listeners into __listener_cmp() 2018-06-30 13:10:08 +00:00
Philipp Schafft
e661e14bee Moved config apply on listensocket objects into it's own function 2018-06-30 13:10:08 +00:00
Philipp Schafft
6054f5cce4 Cleanup: Mark static function as inline 2018-06-30 13:10:08 +00:00
Philipp Schafft
8848d74e58 Fix: Correctly detect error condition 2018-06-30 13:10:08 +00:00
Philipp Schafft
4279a6caea Update: Make use of listensocket_container_set_sockcount_cb() and listensocket_container_sockcount()
This fixes the starts-up-with-no-listen-sockets bug.
2018-06-30 13:10:08 +00:00
Philipp Schafft
c401bbcc12 Feature: Added listensocket_container_set_sockcount_cb() and listensocket_container_sockcount() 2018-06-30 13:10:08 +00:00
Philipp Schafft
5490120d4d Update: Rewrote listen socket handling code comepletly.
This moves all the listen socket code into a nice and abstracting file.

Notes:
* Altering listen socket setup does not yet work on config reload.
  (Did it ever work?)
* Server will start with no listen sockets. (There are unconfirmed
  rumours it sometimes(?) did before.) This is to be re-implemented
  in another commit. It can also be improved to work allow checking
  on reload or other config changes.
* For slave connections the server address is now checked against
  the allow/deny-IP list.
2018-06-30 13:10:08 +00:00
Philipp Schafft
1a426f7f81 Cleanup: Renamed *_TRANSFORMED* to *_HTML* 2018-06-29 15:25:12 +00:00
Philipp Schafft
4e7985c168 Fix: Allocate XML namespace 2018-06-29 13:40:06 +00:00
Philipp Schafft
962805df82 Update: Added attribute "application" for node "extension" 2018-06-29 13:40:03 +00:00
Philipp Schafft
0c7073f04f Update: Attach definition to childs based on their type 2018-06-29 10:29:22 +00:00
Philipp Schafft
4188bd899f Feature: Add definition ID to the first child of generated reports 2018-06-29 10:29:19 +00:00
Philipp Schafft
6168573e86 Feature: Render error messages via Report XML and XSLT 2018-06-27 16:07:21 +00:00
Philipp Schafft
7fadb6ce86 Feature: Added function to send XML Report to client 2018-06-27 15:54:31 +00:00
Philipp Schafft
8ea908e332 Feature: Only allow those nodes as childs that are allowed as per specs 2018-06-27 15:54:31 +00:00
Philipp Schafft
5eac0d80ca Feature: Allow only the correct type of content per node 2018-06-27 15:54:31 +00:00
Philipp Schafft
7ffe12bc8b Fix: Also copy XML childs when doing a node copy 2018-06-27 15:54:30 +00:00
Philipp Schafft
e24e524cb5 Fix: Access correct object 2018-06-27 15:54:30 +00:00
Philipp Schafft
52429c714f Feature: Allow attaching XML to extentions 2018-06-27 15:54:30 +00:00
Philipp Schafft
86a62889d2 Feature: Added a way to find a node by attribute (useful for IDs). 2018-06-27 15:54:30 +00:00
Philipp Schafft
32a410bdd6 Feature: Allow xslt_transform() to send non-200 status 2018-06-27 15:54:30 +00:00
Philipp Schafft
d6a9530238 Update: Added useful logging in case report xml database has been loaded 2018-06-27 15:54:30 +00:00
Philipp Schafft
c1c5bd02e3 Fix: Corrected type detection logic for mixed-type <definition>s 2018-06-27 15:54:30 +00:00
Philipp Schafft
fecc38452a Update: Added useful error message in case of unknown node name 2018-06-27 15:54:30 +00:00
Philipp Schafft
6f9c20e230 Feature: Added global (in config) reportxml database 2018-06-27 15:54:30 +00:00
Philipp Schafft
93897aebb3 Feature: Allow fully recursive lookup of definitions 2018-06-27 15:54:30 +00:00
Philipp Schafft
5d4430a645 Update: Made norec parameter optional 2018-06-27 15:54:30 +00:00
Philipp Schafft
6f8270dcfb Update: Only look up first child if we really need to. 2018-06-27 15:54:30 +00:00
Philipp Schafft
a014f1c5cc Feature: Added first level recursive definition lookup 2018-06-27 15:54:30 +00:00
Philipp Schafft
ae489acc93 Fix: Ensure references are counted correctly in case reportxml_node_copy() fails 2018-06-27 15:54:30 +00:00
Philipp Schafft
c4dca907ab Fix: Use correct data type 2018-06-27 15:54:30 +00:00
Philipp Schafft
d9686e701a Fix: Free temp memory 2018-06-27 15:54:29 +00:00
Philipp Schafft
c60e957782 Feature: Added a database to store definitions 2018-06-27 15:54:29 +00:00
Philipp Schafft
903ac2f1b3 Feature: Added fundamental report xml handling 2018-06-27 15:54:29 +00:00
Philipp Schafft
5df79580f7 Cleanup: Removed leftover debugging output 2018-06-27 15:52:54 +00:00
Philipp Schafft
b10406df20 Fix: Fixed ICECAST_LOG_DEBUG()'s format string 2018-06-20 12:33:34 +00:00
Philipp Schafft
526ecdaa8b Updated submodules 2018-06-20 06:43:52 +00:00
Philipp Schafft
b9ff70b589 Fix: Only allow access to "*" for OPTIONS 2018-06-20 06:34:00 +00:00
Philipp Schafft
7e76986741 Update: Added a fast lane for client requests with a small body 2018-06-19 13:44:07 +00:00
Philipp Schafft
59cf2ff426 Cleanup: Removed now useless start-of-stream passing code (as much as I found. There is more) 2018-06-19 13:44:07 +00:00
Philipp Schafft
b8ceef2425 Fix: Fixed some compiler warnings 2018-06-19 13:44:07 +00:00
Philipp Schafft
c3afdff5fb Feature: Allow POST for web requests 2018-06-19 13:44:07 +00:00
Philipp Schafft
a466900ae1 Feature: Allow POST for admin requests 2018-06-19 13:44:07 +00:00
Philipp Schafft
44ebc3cf22 Update: Added protection against re-queueing a client for reading body that has been queued once already 2018-06-19 13:44:07 +00:00
Philipp Schafft
19dda79146 Update: Added timeout and size limit to client body queue handling 2018-06-19 13:44:07 +00:00
Philipp Schafft
669707d312 Update: Added basic client body slurping 2018-06-19 13:44:07 +00:00
Philipp Schafft
bde88f82ae Update: Added debug level logging for client slurping 2018-06-19 13:44:07 +00:00
Philipp Schafft
e9624ef523 Cleanup: Removed unused structure 2018-06-19 13:44:07 +00:00
Philipp Schafft
1c7329cfbf Feature: Added some client request body slurping helpers 2018-06-19 13:44:07 +00:00
Philipp Schafft
b0c7da36a0 Fix: Fixed HTTP/1.1 pipelineing 2018-06-19 13:44:07 +00:00
Philipp Schafft
33dcf24d21 Fix: Only reuse client IF we reached the end of it's body 2018-06-19 13:44:07 +00:00
Philipp Schafft
01c35e2c41 Feature: Check if we know client's body length. If so do not allow reading more than it. 2018-06-19 13:44:07 +00:00
Philipp Schafft
f370e88335 Feature: Implemented a way to put back data read from a connection 2018-06-19 13:44:07 +00:00
Philipp Schafft
460477230d Feature: Consider encoding backend EOF state 2018-06-19 13:44:07 +00:00
Philipp Schafft
38436c3f6e Update: Abstract body read with client_body_read() and client_body_eof() 2018-06-19 13:44:07 +00:00
Philipp Schafft
ece3786a0a Fix: Check if we actually have source->client->con in case we want to access source->client->con->tls 2018-06-19 13:44:06 +00:00
Philipp Schafft
551a36e43b Fix: Added handling of newcb and freecb 2018-06-19 12:56:40 +00:00
Philipp Schafft
38c71f7673 Feature: Allow modules to handle client requests via <resource> tags 2018-06-19 12:56:40 +00:00
Philipp Schafft
f02c23a593 Fix: Corrected reference counters 2018-06-19 12:56:40 +00:00
Philipp Schafft
5d815f2205 Feature: Added a global module container object 2018-06-19 12:56:40 +00:00
Philipp Schafft
bb77660020 Feature: Added infrastructure for modules. Currently not used by Icecast at all. 2018-06-19 12:56:40 +00:00
Philipp Schafft
d745d02f4b Cleanup: Removed unused member 2018-06-19 10:47:49 +00:00
Philipp Schafft
513b62aeea Cleanup: Fixed some compiler warnings 2018-06-19 10:47:03 +00:00
Philipp Schafft
ea42a12efb Fix: Fixed regression in htpasswd auth detecting no user list.
This fixed a regression caused by 4828c07d6b.
The patch was also applied into release-2.4.4 as c5201770b6.
However the patch for release-2.4.4 was correct. So no regression there.
2018-06-19 09:09:16 +00:00
Philipp Schafft
a3f29ae42a Update: Renamed "parent" to "associated" to make it more generally useful 2018-06-17 13:17:05 +00:00
Philipp Schafft
4e1dc94c50 Feature: Added some useful macros to refobject API 2018-06-17 13:16:07 +00:00
Philipp Schafft
ac372a2edc Fix: Do free the base of a refobject as well 2018-06-17 13:13:10 +00:00
Philipp Schafft
48c3ce52b3 Fix: Corrected used headers 2018-06-17 13:12:59 +00:00
Philipp Schafft
7cba708a50 Feature: Make refobject more general useful 2018-06-17 13:12:51 +00:00
Philipp Schafft
a9d391ffbc Feature: Added generic reference object 2018-06-17 13:12:21 +00:00
Philipp Schafft
059bfdc7ce Cleanup: Corrected headers used in code 2018-06-17 12:47:35 +00:00
Philipp Schafft
5c3e7760c5 Cleanup: Corrected headers used in headers 2018-06-17 12:28:38 +00:00
Philipp Schafft
8b86373e32 Cleanup: Moved types from "cfgfile.h" to "icecasttypes.h" 2018-06-17 12:15:18 +00:00
Philipp Schafft
aeaa91f633 Cleanup: Moved types from "connection.h" and "slave.h" to "icecasttypes.h" 2018-06-17 11:42:20 +00:00
Philipp Schafft
34b10657da Cleanup: Make use of "icecasttypes.h" 2018-06-17 10:33:10 +00:00
Philipp Schafft
e467f6e31b Cleanup: Make use of "icecasttypes.h" in format*.[ch] 2018-06-17 10:26:34 +00:00
Philipp Schafft
65f5eb9771 Cleanup: Make use of "icecasttypes.h" in connection.[ch] 2018-06-17 10:22:17 +00:00
Philipp Schafft
7893fc7560 Cleanup: Removed unused forward declaration 2018-06-17 10:21:33 +00:00
Philipp Schafft
f8e1ed0827 Cleanup: Removed unused forward declaration 2018-06-17 10:16:07 +00:00
Philipp Schafft
0adab82a71 Update: Moved ice_config_t into "icecasttypes.h" 2018-06-17 10:15:32 +00:00
Philipp Schafft
6ffc893b6a Update: Move most common types into "icecasttypes.h" 2018-06-17 10:12:15 +00:00
Philipp Schafft
50a9d3382a Update: Added a header for commonly used types 2018-06-17 09:43:55 +00:00
Philipp Schafft
41ab50dc9a Update: Include <config.h> as we need it 2018-06-17 08:57:31 +00:00
Philipp Schafft
6136810f27 Fix: Corrected const for SSL_METHOD*.
I did this for OpenSSL 1.0.1t (0x1000114fL) as I don't
know which was the first affected version.
2018-06-16 18:40:04 +00:00
Philipp Schafft
d1dbc561ac Update: Announce support for OPTIONS 2018-06-16 17:59:11 +00:00
Philipp Schafft
0bb65ed090 Feature: Allow OPTIONS on admin requests 2018-06-16 17:59:11 +00:00
Philipp Schafft
2bd71b9d01 Feature: Allow OPTIONS request for * and web requests 2018-06-16 17:59:11 +00:00
Philipp Schafft
6f7881a875 Update: Allow update of pidfile on the fly. 2018-06-16 17:53:29 +00:00
Philipp Schafft
a2763ac9e4 Update: Improved pidfile error handling 2018-06-16 17:51:16 +00:00
Philipp Schafft
23cc8a9646 Cleanup: Mark local functions static 2018-06-16 17:51:16 +00:00
Philipp Schafft
be0bf035c7 Update: Added comments to make code easier to understand 2018-06-16 17:38:35 +00:00
Philipp Schafft
2b3f07e9b0 Feature: Allow using default config filename.
This uses the new configure option --with-default-config=PATH.
2018-06-16 17:33:14 +00:00
Philipp Schafft
452c2b17d3 Fix: Use size_t not int 2018-06-16 17:30:42 +00:00
Philipp Schafft
beb4523b84 Cleanup: Replaced magic number with sizeof() 2018-06-16 17:29:51 +00:00
Philipp Schafft
8a69db3ab7 Update: Allow running as root IF Icecast has PID=1 2018-06-16 17:28:42 +00:00
Philipp Schafft
cc0f62df89 Update: Log PID on process startup. 2018-06-16 17:27:59 +00:00
Philipp Schafft
55e34b3b52 Fix: Removed erroneously defined types 2018-06-16 14:30:46 +00:00
Philipp Schafft
02fb2aa97b Fix: Corrected the include of <stdint.h> and <inttypes.h> to match IEEE Std 1003.1-2017 ("POSIX 7") 2018-06-16 15:34:56 +02:00
Philipp Schafft
fd1f34c1e2 Cleanup: HAVE_AUTH_URL -> HAVE_CURL 2018-06-16 15:34:56 +02:00
Philipp Schafft
8b3372e085 Cleanup: Removed unused (and broken?) libkate support from format_kate.c 2018-06-16 15:34:56 +02:00
Marvin Scholz
39a0ca8491 Makefiles cleanup 2018-06-16 15:34:56 +02:00
Marvin Scholz
3b5d5b7b93 Makefile formatting improvements 2018-06-16 15:34:56 +02:00
Marvin Scholz
af608dd120 Remove debug and profile targets 2018-06-16 15:34:56 +02:00
Marvin Scholz
3f7d218576 Remove automake options from makefiles 2018-06-16 15:34:56 +02:00
Marvin Scholz
61ac5f9b9c Rewrite configure.ac
This rewritten configure.ac is nearly independent of any of the xiph m4
macros, most of which are ancient and can nowadays easily replaced
with pkg-config.
2018-06-16 15:34:56 +02:00
Philipp Schafft
822057ca57 Feature: Allow registering new admin commands on the fly 2018-06-09 12:43:09 +00:00
Philipp Schafft
bc38c93545 Update: Check admin command table before use 2018-06-09 12:43:09 +00:00
Philipp Schafft
86154bc6d9 Feature: Set foundation for having multiple admin/ sub-directories 2018-06-09 12:43:09 +00:00
Philipp Schafft
9fb26c4607 Fix: Allow non-1-byte PATH_SEPARATOR in admin_send_response() 2018-06-09 11:11:29 +00:00
Philipp Schafft
442960ac4a Feature: Added admin format ADMIN_FORMAT_AUTO 2018-06-09 10:43:57 +00:00
Philipp Schafft
88ca36545e Update: Converted the response format for admin requests into a enum 2018-06-09 10:34:34 +00:00
Philipp Schafft
91134b75c0 Fix: Fixed memory leak with new prefixmatch="" attribute of <resource> 2018-06-06 10:50:56 +00:00
Philipp Schafft
819dc9c72e Fix: Fixed memory leak with new way of sending requests to corresponding endpoints 2018-05-28 14:59:47 +00:00
Philipp Schafft
9b8ca49f99 Cleanup: Dispatch admin requests not as part of GET request handling but more general 2018-05-28 14:59:43 +00:00
Philipp Schafft
728ed8575d Cleanup: Massive cleanup of the <resource>-tag handling 2018-05-28 14:45:54 +00:00
Philipp Schafft
07ee2814e0 Cleanup: Renamed alias -> resource 2018-05-28 14:45:49 +00:00
Philipp Schafft
29c0501237 Feature: Allow prefix matching aliases 2018-05-28 14:45:35 +00:00
Philipp Schafft
6c0b0e2976 Update: Make the alias dereferencing loop more easy 2018-05-28 14:45:06 +00:00
Philipp Schafft
306cc58d74 Cleanup: Removed useless #includes 2018-05-28 14:32:46 +00:00
Philipp Schafft
4f90399257 Fix: Corrected includes. Made stuff that worked by accident actually work 2018-05-28 14:31:36 +00:00
Philipp Schafft
651ece018c Update: Corrected Copyright statements 2018-05-28 14:19:55 +00:00
Philipp Schafft
097e62394f Update: Made error IDs an enum.
Thanks to ePirat for the suggestion.
2018-05-26 06:29:10 +00:00
Philipp Schafft
a612d0c4a1 Fix: Fixed log level for auth internal debug message
Thanks to ePirat.
2018-05-26 06:17:56 +00:00
Philipp Schafft
4828c07d6b Fix: Fixed segfault in htpasswd auth if no filename is set 2018-05-26 06:07:24 +00:00
Philipp Schafft
00cb6b0042 Fix: Do not report passwords at all 2018-05-20 19:35:45 +00:00
Philipp Schafft
465aac14f3 Fix: Do not report hashed user passworts in user list. 2018-05-20 19:35:44 +00:00
Philipp Schafft
42b24d1840 Fix: Shut down TLS before closing socket.
We should first shut down TLS so we can signal the other end a clean shutdown
in contrast to a socket failure.

Big thanks to wget(1) to find it. Fantastic tool.
2018-05-20 14:40:01 +00:00
Philipp Schafft
0fe5d5fa1f Fix: Added missing status codes to header generator 2018-05-07 16:33:17 +00:00
Philipp Schafft
1c3b10e07a Update: mark internal table static 2018-05-07 16:33:06 +00:00
Philipp Schafft
4b190d2481 Feature: Added per Error UUID. Also formats error pages nicer 2018-05-07 16:32:56 +00:00
Philipp Schafft
b42378abc4 Feature: Generate errors based on IDs.
This generates error pages based on IDs. This allows to reuse errors
and add more advanced information to them.

This patch also makes Icecast send in plain text OR HTML based
on the clients Accept:-string.
2018-05-07 16:28:46 +00:00
Marvin Scholz
cf21756035 Refactor admin.c handlers 2018-05-06 14:22:51 +02:00
Marvin Scholz
e99ebfae3a Move helper macros in admin.c to the top 2018-05-05 07:26:37 +00:00
Philipp Schafft
0db820c9dd Feature: Added parser for Accept*:-headers 2018-05-05 06:42:56 +00:00
Philipp Schafft
3b55f16977 Updated submodules 2018-05-05 06:42:56 +00:00
Philipp Schafft
bcc0e86ca0 Fix: Fixed regression for ICY source client's auth
This allows ICY source clients to log in again with 2.4.x-style config.
ICY does not provide a username. Therefore the username was unset.
This patch sets the username for ICY source connections and allow them
to be handled as if a username was provided.
Configuration tag <shoutcast-user> was added to select the username to set
to. This defaults to "source".
2018-05-05 06:42:56 +00:00
Philipp Schafft
578366e541 Cleanup: Removed useless stats_event() 2018-05-05 06:42:56 +00:00
Philipp Schafft
5d603a01d8 Fix: Fixed a segfault when xsltApplyStylesheet() returns error 2018-05-05 06:42:42 +00:00
Philipp Schafft
fb3678b0ca Fix: Do not access request type when we have no parser (slaves) 2018-05-05 06:42:34 +00:00
Philipp Schafft
514e825a81 Fix: Corrected response and fixed TLS for 416 Request Range Not Satisfiable responses 2018-04-21 11:06:48 +00:00
Philipp Schafft
be407ebbc7 Fix: Unbreak TLS for ICECAST_PROTOCOL_SHOUTCAST source clients 2018-04-21 11:06:42 +00:00
Philipp Schafft
2c32f02083 Update: Code style 2018-04-13 18:48:03 +00:00
Philipp Schafft
698186608b Fix: Send "Content-Length: 0" on 100-continue 2018-04-13 13:43:36 +00:00
Philipp Schafft
e099f80af1 Fix: Only report one Upgrade:-Header on upgrade 2018-03-28 15:10:05 +00:00
Philipp Schafft
789dd06762 Feature: Export used protocol in status XML 2018-03-01 10:41:52 +00:00
Marvin Scholz
51edb020a7 Makefile: Add missing tls.h to header files
This fixes make distcheck and the distribution tarballs, those
were previously lacking this header which caused builds to fail.
2018-01-13 21:43:32 +01:00
Philipp Schafft
cd9c8420d3 Feature: Added new config tag tls-context, tls-key and attribute implementation 2017-07-23 13:14:48 +00:00
Philipp Schafft
ac92af50c5 Fix: Corrected typo 2017-07-23 13:14:48 +00:00
Philipp Schafft
b47ae369b6 Update: Prepare code for a new <tls-context> element 2017-07-23 13:14:48 +00:00
Philipp Schafft
68b3b1c72a Feature: Added function to check for specific TLS implementation 2017-07-23 13:14:48 +00:00
Philipp Schafft
9cbc110f78 Fix: Do not announce Upgrade to TLS on TLS Mode DISABLED sockets 2017-07-23 13:14:48 +00:00
Philipp Schafft
a864fbf47a Make tls mode more configureable 2017-07-23 13:14:48 +00:00
Philipp Schafft
d7cd12de75 Cleanup: Wording and object names from SSL to TLS 2017-07-23 13:14:48 +00:00
Philipp Schafft
e513f09b85 Typo: openSSL->OpenSSL 2017-07-23 13:14:48 +00:00
Philipp Schafft
3376498e5e Update: completly abstracted OpenSSL into tls.[ch] 2017-07-23 13:14:48 +00:00
Philipp Schafft
a1aa0196b2 Feature: Allow to use of non-TLS sockets for TLS clients 2017-07-23 13:14:48 +00:00
Philipp Schafft
1d39b657da Feature: Allow reloading TLS key on the fly 2017-07-23 13:14:48 +00:00
Philipp Schafft
a6eb48e44d Update: Abstracted TLS support in tls.c 2017-07-23 13:14:48 +00:00
Philipp Schafft
64b16f8296 Update: Abstracted the TLS context code into tls.c 2017-07-23 13:14:48 +00:00
Philipp Schafft
53e95727b4 Update: Code style 2017-01-22 08:52:57 +00:00
Philipp Schafft
89804764b0 Fix: Do not segfaul on bad Opus streams 2017-01-22 08:52:57 +00:00
Philipp Schafft
5b512da304 Cleanup: corrected debug output of Opus support 2017-01-22 08:52:56 +00:00
Philipp Schafft
0d7f81b75a Feature: Added support to extract metadata from Opus streams.
This adds support to read metadata from Ogg/Opus streams:
 * Original sample rate from OpusHead,
 * number of channels from OpusHead,
 * Tags from OpusTags.
2017-01-22 08:52:56 +00:00
Philipp Schafft
84124c313a Update: Added spaces to output of auth_result2str().
This adds spaces into the strings such as "nomatch" (-> "no match")
as returned by auth_result2str(). This is to improve readability of
resulting logfiles by most uses.
2017-01-22 08:38:01 +00:00
Philipp Schafft
e75b1a1612 Fix: Corrected number of arguments for ICECAST_LOG_INFO()
This fixes the number of arguments for ICECAST_LOG_INFO().
Why doesn't GCC warn about this?
2017-01-22 08:38:01 +00:00
Philipp Schafft
f5dd306f71 Update: improved auth related logging 2017-01-22 08:38:01 +00:00
Philipp Schafft
ce2b4195da Fix: Fixes a number of empty string segfaults in config parser
This fixes a number of segfault happening in case config tags are
empty. This patch also adds warnings for most cases.

Please test for any regressions.
This should likely be ported to 2.4.4 as well.

Closes: #2265
2016-11-30 11:22:36 +00:00
Thomas B. Ruecker
70265c466e Spelling fix, thanks to Ukikie 2016-11-23 20:36:53 +00:00
Philipp Schafft
b3b1dd12a1 Workaround: This avoids libspeex printing warnings on Opus streams.
libspeex reports warnings in case of oddnesses with the data to stderr.
However Icecast2 uses those functions in it's codec probeing process.
This way libspeex will write messages to a posibily reused random handle.

This is clearly a bug by package maintainers of libspeex.
See the source code of this change as well as libspeex's source code
as reference.
2016-10-29 11:42:52 +00:00
Philipp Schafft
72075d0d0d Fix: Fixed regression introduced by r19250.
This fixes the regression introduced by r19250 (461a537561).
The fix checks if the source client is actually known before printing it's IP-Address.

See also: #2016
2016-09-04 11:38:07 +00:00
Marvin Scholz
4117a2d2e2 Config: Rename mp3-metadata-interval to icy-metadata-interval
As proposed in #2272, this renames the mount specific
mp3-metadata-interval to icy-metadata-interval to prevent
confusion about what it does (setting the icy metadata
interval) and to make clear it's not mp3 specific but ICY
specific.
2016-06-28 11:39:57 +00:00
Marvin Scholz
4345060c02 Cleanup: corrected usage of spaces 2016-06-07 11:30:46 +00:00
Philipp Schafft
834de5ba77 Fix: allow building without libcurl support 2016-04-19 15:13:12 +00:00
Marvin Scholz
43658deb37 Add log message for succesful streamlist requests 2016-04-13 10:12:39 +02:00
JRS
a552c6e667 Fix update_from_master() for receiving HTTP/1.1
Signed-off-by: Marvin Scholz <epirat07@gmail.com>
2016-04-13 09:57:00 +02:00
Philipp Schafft
c8f565b030 Update: SECURITY File extension check for trailing characters
This changes the file extension check in a way that it no longer
ignores trailing characters. This significantly reduces the risk
for false positives while matching. However this invalidates old
setups with files like foo.xsl3. However I have never files like
that in the wild.

This is based on the patch privided by ePirat in ticket #2248.

See: #2248
2016-03-27 17:51:59 +00:00
Joseph Wallace
a2cac3ee93 Make ebml_parse_tag return tag ID code
(applying lessons learned from libshout)
2016-03-27 12:29:23 -04:00
Joseph Wallace
a218055158 Move tag-parsing bail conditions to top for clarity. 2016-03-27 12:29:23 -04:00
Joseph Wallace
78293f0485 Delete some debugging comments. 2016-03-27 12:29:06 -04:00
Joseph Wallace
dcbba0c600 Cleanup some signed-type issues in format-ebml.c 2016-03-27 12:29:06 -04:00
Philipp Schafft
9cae2ef646 Updated submodules 2016-03-27 13:16:23 +00:00
Joseph Wallace
788bd94eeb BUGFIX: Use a signed type for capturing the return value of client_read_bytes()
Signed-off-by: Marvin Scholz <epirat07@gmail.com>
2016-02-13 21:12:34 +01:00
Marvin Scholz
3a73f9c146 More hardening of XML output against invalid entities
This replaces the add node function with the one intended for text nodes
to prevent that invalid entities are not encoded and therefore could
break the XML output.

(See d739c65e54 and #2255)
2016-02-10 20:56:56 +01:00
Thomas B. Ruecker
4c57532e7b Added missing space to fix output 2016-02-10 08:15:48 +00:00
Marvin Scholz
37150fe020 Fix STATS legacy authentication
This fixes the issue that auth for STATS method always fails, by
adding stats method to legacy admin auth in cfgfile.c
2016-02-09 20:27:10 +01:00
Marvin Scholz
d739c65e54 Fix invalid entities in listclient xml
This fixes a bug where listener Referer or User-Agent strings containing
a sequence like `&T;` was not escaped properly and therefore made the
whole XML document invalid.
Injecting new XML nodes (<foo></foo>) was not possible, it seems in the
worse case all it could cause was that the XML failed to parse.

Fix #2255
2016-02-08 23:02:02 +01:00
Philipp Schafft
235527192c Merge branch 'webmKeyFrames' 2016-02-06 17:44:56 +00:00
Marvin Scholz
eecbc647b4 Fix handling of URIs in custom XSL loader
There was an error how URIs were handled in our custom XSL loader
that rewrites include URIs to point to admin dir if the include
is not found in the current dir.

The check for the file would not work if the path contains chars
that are usually escaped in URIs, like a space (%20), as we get
a already encoded version of that URI in the loader and did not
decode it before checking the existence of the file.

(Fix #2249)
2016-01-26 10:13:07 +01:00
Philipp Schafft
471cbaa60b Fix: remove tailing dots in URI.
This works around the problem that windows ignores tailing dots.
This way you could trick Icecast2 to send a XSLT file as plain text.

Please test.

Closes: #2247
2015-12-24 00:38:11 +00:00
Joseph Wallace
d196e75416 Convert ints used as boolean values into actual bools. 2015-12-19 15:32:37 -05:00
Joseph Wallace
1f6a0a497f Replace "long long"s with an appropriate type from <stdint.h> 2015-12-19 15:02:33 -05:00
Philipp Schafft
255af9e610 Fix: Moved <mime-types> into <paths>.
This moved the <mime-types> setting into <paths>. The code still
supports reading it from the root element but will warn the user
about this.

Also there seems to be no documentation about this setting.

Closes: #2164
2015-12-12 08:17:58 +00:00
Joseph Wallace
de004670c3 Be clearer about ebml_parse_sized_int's sign & endian behavior. 2015-12-01 02:21:24 -05:00
Philipp Schafft
d3370f3d1c Cleanup: unify util.c a bit with libshout. 2015-11-28 17:58:18 +00:00
Joseph Wallace
e6cb7e26ee Move ebml-private structure definitions out of header file. 2015-11-28 12:49:54 -05:00
Joseph Wallace
0d7448efc7 Change buffer-related sizes & indices to size_t or ssize_t, as applicable. 2015-11-28 12:49:45 -05:00
Joseph Wallace
8a09627d05 Fix type of copy_state in EBML parser to an enum variable. 2015-11-28 12:41:46 -05:00
Joseph Wallace
dc263858a4 Additional format_ebml.c comments. 2015-11-28 12:41:46 -05:00
Joseph Wallace
af238d9129 Move MKV element magic values into proper #define constants. 2015-11-28 12:41:46 -05:00
Joseph Wallace
d394a244f0 Bugfix: Cluster test could have read past the end of the input buffer.
Move the cluster test inside the space-to-read check with the other tests.
2015-11-28 12:41:46 -05:00
Joseph Wallace
9de8fe483d Remove spare whitespace on blank lines. 2015-11-28 12:41:46 -05:00
Joseph Wallace
e4258bfad3 Don't wait for video keyframes on audio-only streams. 2015-11-28 12:41:46 -05:00
Joseph Wallace
9cf4ed560c Probe SimpleBlocks to determine which clusters start with a keyframe. 2015-11-28 12:41:45 -05:00
Joseph Wallace
6e11db5de2 Probe Tracks section of header to identify the video track.
We'll sync keyframes on that track next commit.
2015-11-28 12:41:45 -05:00
Joseph Wallace
9899413839 Add parser for bodies of Integer elements. 2015-11-28 12:41:45 -05:00
Joseph Wallace
f461ff6763 Buffer clusters to have time to probe them for metadata, like keyframes. 2015-11-28 12:41:45 -05:00
Joseph Wallace
def5a4cf6c Implement EBML-aware parser.
* Loop over elements in input buffer.
* Most are literally copied with their contents without
  inspection into the header or data buffers as appropriate.
* Some only copy the element header, to allow inspecting
  children elements.
* Cluster elements are identified and used as sync points.

No probing is done for keyframes *yet*
2015-11-28 12:41:45 -05:00
Joseph Wallace
50c4984c78 Add functions to comprehend EBML tags. 2015-11-28 12:41:45 -05:00
Joseph Wallace
531d060d16 Adjust EBML parser writing protocol.
This will allow leaving unparsed data in the input buffer to wait for completion.
2015-11-28 12:41:45 -05:00
Joseph Wallace
13dc880d29 Yield sync point status from ebml_read directly.
This simplifies some fragile "was the last chunk a sync point?" logic.
2015-11-28 12:41:45 -05:00
Joseph Wallace
744b66c40e Make the state-machine nature of the EBML parser more evident. 2015-11-28 12:41:45 -05:00
Joseph Wallace
15e7fc6e4a Add comments & braces to format_ebml.c.
This should help make future changes to the code clearer.
2015-11-28 12:41:45 -05:00
Marvin Scholz
2ff8c50d3b Makefile: Fix commons include path 2015-11-28 17:15:42 +01:00
Marvin Scholz
d16e091e25 Update submodule for more deprecated Makefile INCLUDES fixes 2015-11-28 17:15:42 +01:00
Marvin Scholz
d3c1dafa7e Change deprecated INCLUDES variable in Makefile 2015-11-28 17:15:42 +01:00
Philipp Schafft
24bc25ec38 Cleanup: fixed some compiler warnings 2015-11-28 11:30:34 +00:00
Philipp Schafft
d51b9afc49 Cleanup: unify util.h a bit with libshout. 2015-11-28 10:51:50 +00:00
Philipp Schafft
32216013b2 Cleanup: unify util.c a bit with libshout. 2015-11-28 10:44:05 +00:00
Philipp Schafft
85b709da04 Merge branch 'matchfile' 2015-11-23 13:01:23 +00:00
Philipp Schafft
752b2f90fe Cleanup: mark constant loopup tables read only 2015-11-23 12:47:56 +00:00
Philipp Schafft
a650965cfd Cleanup: make util_base64_encode() useful for binary data. 2015-11-23 12:47:47 +00:00
Philipp Schafft
de48bdd13f Cleanup: Removed unused member host vom connection struct 2015-11-23 11:44:14 +00:00
Philipp Schafft
69cf9ad6c2 added <errno.h> as we use errno 2015-11-23 11:41:25 +00:00
Philipp Schafft
b7d0188e1d Update: updated submodules 2015-11-22 18:52:15 +00:00
Philipp Schafft
c0e895404e Cleanup: mark key as const (why wasn't it const already?) 2015-11-22 18:47:11 +00:00
Philipp Schafft
b55bae035d Update: Improved matchfile API
This adds support for allow-deny kind of rules with the matchfile API.

See: #2119
2015-11-22 18:47:06 +00:00
Philipp Schafft
d24dda61d0 Cleanup: moved ban and allow file support into generic implementation
ban and allow file support has been moved into a generic implementation
that can be re-used by later code such as proxy matching or other
blacklisting.
See: #1959
2015-11-22 18:47:00 +00:00
Philipp Schafft
3653a1f812 updated submodules 2015-11-19 10:47:08 +00:00
Philipp Schafft
8e2fe8a3f7 Fix: Handle mount=NULL in config_find_mount() correctly. 2015-11-11 12:18:15 +00:00
Philipp Schafft
f5d728d730 Fix: Include required headers 2015-08-10 08:54:21 +00:00
Marvin Scholz
16dac2505e Fix that global listener count could be negative under certain circumstances
This fixes a bug that could cause the global listener count of Icecast to
be negative. This was caused due to wrong handling of errors in the
format_prepare_headers function.

Fixes: #2199

Thanks a lot to Simeon Völkel (0xBD4E031CDB4043C9) for reporting
and investigating the bug.
2015-06-06 14:09:44 +02:00
Marvin Scholz
c35760cd50 Fix possible segfaults when header allocation fails
This fixes some possible segfaults that could happen if the header
(re)allocation fails.
2015-06-06 14:09:44 +02:00
Philipp Schafft
3d2ab9aec2 Fix: Handle case realloc() is used as free().
This (hopefully) corrects the usage of realloc() as free().
This patch is part of the series based on Denis Denisov's input.
2015-04-08 13:05:10 +00:00
Philipp Schafft
6605f4ddaa Fix: Let util_url_escape() handle NULL parameter.
This let util_url_escape() handle NULL passed as parameter.
In case the parameter is NULL it will also return NULL.

This patch also does some cleanup of the code such as migration
away from int and thus avoiding future failtures.

This is a re-apply of 3baa4e46aa
as git refuses to cherry-pick.
2015-04-08 10:25:25 +00:00
Philipp Schafft
c1f0eaff8a Fix: Fixed some smaller bugs such as leaks and performance improvements.
This is a first commit to correct minor problmes reported by
Denis Denisov. There is likely another commit to correct some more
such problems.

Thank you Denis Denisov.
2015-04-08 09:36:59 +00:00
Philipp Schafft
7402383448 Cleanup: move libcurl specifc code into curl.c
This cleans the libcurl usage up a bit. It moves common code used
to interact with libcurl into a single new file curl.[ch].

Notes:
* It does not alter any features nor fixes any bugs.
* Thew REVIEW about strdup(self->url) in event_url.c as been processed.
  According to the manpage for curl_easy_setopt()/CURLOPT_URL
  there is no need for us to copy.
* URL Auth as well as URL triggers have sent ICECAST_VERSION_STRING
  as User-Agent:, this has be corrected to what is set in the config
  file.
* As curl.c is now a single point for setting parameters all the TLS
  parameters should be reviewed and set (based on config).

Please test!
2015-04-08 07:44:36 +00:00
Philipp Schafft
a1f204c184 Cleanup: Renamed <kartoffelsalat> to <event-bindings>
The parent element for <event> was renamed from <kartoffelsalat>
to <event-bindings> as discussed on the mailinglist and on IRC.
2015-03-31 08:20:37 +00:00
Philipp Schafft
2661d4360e Cleanup: More space corrections 2015-03-31 08:14:42 +00:00
Philipp Schafft
8455dbde57 Cleanup: corrected a space 2015-03-31 08:03:28 +00:00
Philipp Schafft
bfbb8f207c Feature: playlist history for ICY based streams.
This patch adds support for history for ICY based streams.
Of cause this has the same limits for metedata as ICY has.

See: #766
2015-03-28 18:14:41 +00:00
Philipp Schafft
961453b0de Added config option for history size.
This adds a <max-history> config option to the <mount> section.
Default is a history size of 4.

See: #766
2015-03-28 17:34:35 +00:00
Philipp Schafft
06fe442c2d Fixed off-by-one error in playlist truncation.
The playlist truncation (may_tracks) was off by one.
This fixes the problem.
2015-03-28 17:33:09 +00:00
Philipp Schafft
5f77b35d14 Initial patch for playlist history support.
This allows to store a history of played songs along the source
object and report it as part of the status XML.

Additional work needs to be done to make this configurable.
Also format_mp3.c needs work to support this.

A generic song changed handler should be implemented to handle this
in a nice way.
That one should also be the point to call logging_playlist().

See: #766
2015-03-28 16:15:49 +00:00
Philipp Schafft
8d513db405 Added operation mode (omode) "strict".
This adds the operation mode "strict". It does not yet have
any specific features and alias the "normal" mode.
This change is mostly to make the setting of "strict" valid
so it can be used already.
2015-03-27 11:15:22 +00:00
Philipp Schafft
5dac23adda Renamed config file SSL references to TLS.
As we do not support any SSL version but TLS this renames
all TLS related config options. Docs still need to be updated.
Close still uses 'ssl' internally e.g. for variable names.
This should be changed on a later patch.
2015-03-27 11:08:50 +00:00
Thomas B. Ruecker
99e11adac3 Remove stray space that managed to sneak in 2015-03-01 17:11:31 +00:00
Thomas B. Ruecker
671c2366cf Fixed log messages and comments
* Reworded many log messages for better understanding.
 * Adjusted some version targets as we won't have a 2.4.2 release.
 * Added some FIXME comments
2015-03-01 16:55:27 +00:00
Thomas B. Ruecker
314aa9660d remove some spurious tabs and replace with spaces
Fix variable alignment if necessary.
2015-03-01 16:55:27 +00:00
Philipp Schafft
c1034058f6 Fix: do not close(-1) on Keep-Alive clients 2015-03-01 16:53:17 +00:00
Philipp Schafft
5e8b24785e Fix: Use correct malloc function 2015-03-01 15:53:57 +00:00
Philipp Schafft
e870c21384 Cleanup: some style corrections. 2015-03-01 15:52:37 +00:00
Marvin Scholz
e0c05ef8a9 Fix another memory leak in xslt loader
This fixes another memory leak, which was caused by not freeing
the admin_path when a subsequent xslt file was loaded.
2015-03-01 15:35:14 +01:00
Marvin Scholz
06545b25c0 Fixed memory leaks in custom xslt loader
This fixes some memory leaks in the xslt loader,
additionally it now makes no copy of the URI if not needed.
2015-03-01 14:30:19 +01:00
Marvin Scholz
0709b4e66d Only look for admin include if no local found
This switches the behaviour introduced with the last commit
so that now the admin folder is only checked for includes if
in the specified path none is found.
2015-02-25 16:11:42 +01:00
Marvin Scholz
5b416b311c Add support for 'admin' includes from web XSLT files
This adds support for including xslt files that are in the admin
directory in an xslt file which is in the webroot, without having to
specify the full path.

For example:

    <xsl:include href="includes/head.xsl"/>

will look inside the admin directory (foo/bar/admin/includes/header.xsl)
and include it, if it's found. If not it will as usual look for it in
the directory where the xslt file is located. This enables us to have
common files like the header, footer, json stuff, etc. in the admin
directory, so we don't need to have an extra copy in the web folder.

Note:
The configuration value for the admin directory is requested
every time an xslt is requested (if not in the cache).
Additonally it should be noted that the includes are not cached.
2015-02-25 15:49:01 +01:00
Philipp Schafft
225c6f240a Fix: do not FTBFS in case OpenSSL support is not compiled in 2015-02-23 21:43:07 +00:00
Philipp Schafft
1e80611d1c Sync submodules 2015-02-10 21:26:33 +00:00
Philipp Schafft
a1e5d2ab8a Cleanup: connection.c:776: warning: unused variable expectcontinue 2015-02-10 21:20:58 +00:00
Philipp Schafft
36d10121cf Feature: Support PUT with chunked transfer encoding.
This adds the Transfer-Encoding chunked to PUT support.

Please test carefully. Will add PUT to Allow: header after testing.

Have fun.

Closes: #2088
2015-02-10 21:18:52 +00:00
Philipp Schafft
79cb147c4a Cleanup: unbreak 100-continue a bit.
This tries to unbreak the 100-continue thing a bit.
Proper headers are send in case of 100-continue. Also the 200 OK
was moved to the end of the stream.
The client may even be reused. But I'm not sure we only do
'End of stream' in cases we are not on an undefined state of the
client. Do we as of now support anything that give us EOS without
a fatal socket state (error or shutdown)?

At least this unbreaks 100-continue with active TLS that was broken
as hell as we sent the header in clear over the socket. Not checking
if it was transmitted completly or something. Using lowlevel socket
calls (in contrast to the connection level calls that would have
handled the TLS just fine).

While this seem sto be a huge improvement to the situation I kindly
ask you to do a lot testing on this. Both with SOURCE as well as
PUT clients.
2015-02-10 09:44:11 +00:00
Philipp Schafft
d6908eb024 Fix/Cleanup: Answer SOURCE/PUT requests with a real 200-OK.
We have answered SOURCE/PUT requests with a simple
"HTTP/1.0 200 OK\r\n\r\n" while we should answer with complet
headers. This commit corrects this.

Interoperability:
This will work for two classes of clients:
 * Super dumb ones not checking the response and will just send
   data and hope the socket is still open.
 * Those with a real parser.
 * Shoutcast clients (indepnded code path).
 * All libshout, curl, wget, ... based clients.

This *could* break:
 * Clients that check for the exact returned message. However
   as we start with the same string this should work.
   Only client that check for the string including the End-of-header
   CRLF sequense may break.

Please test careful before release.
2015-02-10 09:12:33 +00:00
Philipp Schafft
9cf6d9313c Sync common/ 2015-02-10 08:46:44 +00:00
Philipp Schafft
91eb78fc3a Feature: Expose TLS status in <listener> tags.
This exposes the TLS status as <tls> tag in the <listener> tag.
The tag contains a bool ("true" or "false"). TLS mode, version and
other parameters are out of the scope of this tag and may be added
as independed tags in later commits.
2015-02-09 12:14:16 +00:00
Philipp Schafft
927ccf5213 Cleanup: corrected comment TAGs 2015-02-09 12:06:29 +00:00
Philipp Schafft
c89a5714fb Cleanup: Converted tag <Listeners> to lowercase.
This converts the <Listeners> tag to lowercase on listclients admin
command. This is to align with stats.xml which already uses lowercase.
See: #2097
2015-02-09 12:03:00 +00:00
Philipp Schafft
765ceabe81 Fix: Detect socket errors on TLS based source connections 2015-02-07 12:21:31 +00:00
Philipp Schafft
7bc7472972 Fix: do keep SSL state when reusing a TLS connection. 2015-02-06 10:25:40 +00:00
Philipp Schafft
a18e2540fb Fix: Allow client=NULL in util_http_build_header()
This fixes a bug in 8941de3273975504aaa00a35d145c3f26c832d70:
When passing NULL as client parameter to util_http_build_header()
there was a segfault before this change.
2015-02-02 01:08:37 +00:00
Philipp Schafft
19162018f4 Fix: Announce RFC 2817 TLS Support if TLS support is enabled.
This announces TLS support if enabled via Upgrade:-header.
Closes: #2159
2015-02-02 01:05:05 +00:00
Philipp Schafft
dbbd22f792 Cleanup: Set Connection:-Header via client->reuse 2015-02-02 00:50:56 +00:00
Philipp Schafft
68248d15b1 Fix: Also check for Connection:-Header 2015-02-02 00:38:14 +00:00
Philipp Schafft
71408e6291 Feature: Allow RFC 2817 style Upgrade command.
This allows the usage of RFC 2817 style upgrade commands.
This is not correctly announced yet.
Can hardly be tested as most clients do not support this.
Will be helpful with TLS support in libshout.
See: #2159, #2152
2015-02-02 00:34:45 +00:00
Philipp Schafft
c806e47a4a Fix: allow Keep-Alive connections on normal error pages 2015-02-01 23:04:54 +00:00
Philipp Schafft
78213fe30a Cleanup: Move client queue node creation into function.
This adds the function create_client_node() taking care of
client queue node creation.
2015-02-01 21:01:01 +00:00
Philipp Schafft
8941de3273 Fix: Added some more HTTP/1.1 headers
This adds to all responses:
 * "Accept-Encoding: identity"
 * "Connection: close"
 * "Allow: GET, SOURCE" or "Allow: GET" (on admin pages)

This is to generate some infrastructure for Icecast to tell futur
source clients what is supported.

"Upgrade: TLS/1.0" should be added later when upgrade support is present.

See: #2152
2015-02-01 11:56:03 +00:00
Marvin Scholz
0dfc7c5b6a Cleanup codestyle
This commit cleanups codestyle a bit, yet there is still some work to be done
2015-01-25 19:57:27 +01:00
Philipp Schafft
9d84ba2036 Feature: Sending <admin> field to yp server
This sends the <admin> field to yp servers. It is thought be useful
to allow reaching the admins more easily in case of any yp problem.

Closes: #2146
2015-01-18 18:47:24 +00:00
Philipp Schafft
319b6d577f Fix: fix memory leak of active and pending ypdata_t
This (hopefully) fixes a memory leak that caused active and
pending ypdata_t objects to be not freed up on server shutdown
or config reload.

To testers: please enable yp submission and restart and SIGHUP
your instance several times with loglevel set to warning or higher.
Each time after shutdown or SIGHUP check your log for one of the
following two warnings:
 * 'active ypdata not freed up'
 * 'pending ypdata not freed up'

Those warnings must not be in the log. If you spot one please report.
2015-01-18 17:51:58 +00:00
Philipp Schafft
cc613d405f Fix: do not release events that are still in the queue 2015-01-18 17:26:07 +00:00
Philipp Schafft
7e4650138e Fix: fixed memory leak on XSPF generation 2015-01-18 17:14:03 +00:00
Philipp Schafft
3b4e3ed0ed Cleanup: more cleanly define blocks for admin command IDs
This adds info to the blocks about their size.
Also added two more blocks:
* for experimental features such as in private branches or
  or feature branches. This is for command IDs that are going to
  be merged with master some day. At merge they need to be changed
  and put into the regular position.
* for private features that are not going to be merged into master.
  e.g. specific features for a very specific user that are not
  useful for general audiance.

This should help keeping stuff sorted and largey reducing the risk
of command ID collissions on merges of branches.
Also this should make the merger's job a little bit more easy as
there are less likely any conflicts on merge if someone else got
a number closeby and those change is within the diff's context lines.
2015-01-13 08:42:02 +00:00
Philipp Schafft
db9b419250 Cleanup: Removed left overs from pre-<role> auth 2015-01-11 15:40:36 +00:00
Philipp Schafft
11d5dffd49 Cleanup: Removed tailing spaces 2015-01-10 18:53:44 +00:00
Philipp Schafft
e9a90f9918 Cleanup: converted tabs into spaces 2015-01-10 01:48:15 +00:00
Philipp Schafft
99d9be1dc5 Cleanup: two minor code style corrections 2015-01-08 23:39:59 +00:00
Philipp Schafft
205eca50ab Fix: Do not shut down fserve engine if not started up
This avoids a endless loop in a spin lock that has not been inited
yet if fserve engine was not started up by the time it was sent to
go down. This happened if icecast couldn't read the config because
the file was corrupted or non-existent.
Closes: #2144
2015-01-08 23:15:13 +00:00
Philipp Schafft
f992da8cfa Fix: Set on_demand on creation of on-demand relay
This sets the on_demand parameter of the source correctly on
creation of a on-demand relay.
Thanks to Marvin Scholz <epirat07@gmail.com>.
Closes: #2054
2015-01-06 17:12:56 +00:00
Philipp Schafft
f39b7d8880 Cleanup: Removed trivial header files for auth backends
All Auth backends had just one prototype in auth_*.h. Those
got merged into auth.h to avoid to have many small files around.
2015-01-06 11:29:07 +00:00
Philipp Schafft
a52e2e1a35 Fix: SECURITY allow global admins to access all mounts 2015-01-05 16:58:43 +00:00
Thomas B. Ruecker
3d8245f71a making sure submodules are sync 2014-12-31 17:45:09 +00:00
Philipp Schafft
490482deaf Fix: SECURITY Corrected methods of anonymous role for htpasswd legacy auth 2014-12-29 09:48:00 +00:00
Philipp Schafft
0f311a318d Fix: Do not segfault if <role type="..."> is unknown 2014-12-28 21:11:52 +00:00
Philipp Schafft
b638d3c939 Fix: Added support to admin/ interface to list <role>s
This adds support to list global and per mount roles on stats.xsl.
This isn't nicest formated but works.
This also adds <source>-like <authentication> with <role>s to
root node.
Closes: #2133
2014-12-26 21:57:50 +00:00
Philipp Schafft
785c32bfc5 Revert "Fix: avoid assignment discards 'const' qualifier warning"
This reverts commit 0dbabcc44c.
Breaks other OpenSSL versions.
2014-12-24 11:36:34 +00:00
Philipp Schafft
0b1af34f0e Prevent various redefined definitions in win32-specific code
From: Erik van Pienbroek <epienbro@fedoraproject.org>
Date: Mon, 22 Dec 2014 18:02:09 +0100
2014-12-24 11:35:56 +00:00
Philipp Schafft
0dbabcc44c Fix: avoid assignment discards 'const' qualifier warning
Untested. Please test.
See #2063
2014-12-24 09:03:26 +00:00
Philipp Schafft
d75d1d6a7a Feature: Allow <resource> to have only one of source and destination
This allows <resource> (former <alias>) to have only one of the
attribues source and destination. In that case other parameters
will be applied to the client but uri is not mapped.

See #2097
2014-12-20 18:48:03 +00:00
Philipp Schafft
7b5bafdf55 Merge branch fix for <metadata> of relays. 2014-12-20 18:07:04 +00:00
Philipp Schafft
7e9e298e33 Fix: avoid segfault by generating <metadata> for relays 2014-12-20 18:06:42 +00:00
Philipp Schafft
857264acdc Fix: memory leak and race condition fix 2014-12-20 16:12:27 +00:00