1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-12-04 14:46:30 -05:00
Commit Graph

1642 Commits

Author SHA1 Message Date
Philipp Schafft
2bf77f2012 Feature: Support moving individual clients between mounts 2020-09-30 19:47:05 +00:00
Philipp Schafft
81bd709acc Fix: Corrected node vs. client 2020-09-30 19:22:36 +00:00
Philipp Schafft
d92c9758a6 Feature: Prepare for support to move single clients 2020-09-30 18:03:18 +00:00
Philipp Schafft
e86a46ee4a Update: Improved statistic update logic a bit 2020-09-30 17:59:54 +00:00
Philipp Schafft
4f56236cbc Fix: Corrected type for id for source_find_client() 2020-09-30 17:59:52 +00:00
Philipp Schafft
55acb32b71 Cleanup: Corrected code style 2020-09-30 17:59:49 +00:00
Philipp Schafft
b2cd834db7 Cleanup: Move lock out of loop as unlock is also outside the loop 2020-09-30 17:59:43 +00:00
Philipp Schafft
833d666803 Cleanup: Deduplicated code for client moves 2020-09-30 17:58:33 +00:00
Marvin Scholz
9275dfd8c8 Feature: Improve logging for yp-directory options parsing 2020-04-30 10:52:18 +02:00
Marvin Scholz
349c29ca48 Feature: Add "listen-socket" option for YP directories 2020-04-24 23:45:49 +02:00
Marvin Scholz
495ecbf57d Fix: Add missing space in YP log message 2020-04-23 19:01:02 +02:00
Marvin Scholz
632f67b0c8 Feature: New config block to define YP directories
Adds a new config block, <yp-directory> with the mandatory "url"
attribute and optional <option> entries in the block:

  <yp-directory url="http://example.org/yp-cgi">
    <option name="timeout" value="5" />
    <option name="touch-interval" value="45" />
  </yp-directory>
2020-04-23 18:40:36 +02:00
Marvin Scholz
6d3bf28be1 Update: Use linked list for YP config entries
This removes the limit of 25 YP directory entries by using a linked
list like with most other config entries.
2020-04-23 05:14:12 +02:00
Marvin Scholz
4284ea5b3b Cleanup: Prepare migration to new yp options 2020-04-23 03:18:51 +02:00
Marvin Scholz
f2547c7cb0 Cleanup: Remove unused touch_interval config 2020-04-23 03:03:52 +02:00
Marvin Scholz
271ef864ac Cleanup: Remove unused server block in directory
The director block for YP directories accepted a server block which
was completely unused in the whole codebase, so do not parse it in
the first place.
2020-04-23 03:00:32 +02:00
Philipp Schafft
dcdd96c000 Update: Make listensocket_container_get_by_id() public 2020-04-22 19:35:35 +00:00
Marvin Scholz
f898da63b8 Cleanup: YP: Narrow variable scope 2020-04-21 20:43:01 +02:00
Marvin Scholz
e534df86f8 Fix: YP: Improve error handling
In case the url written by client_get_baseurl exceeds the length and
the realloc failed, previously the truncated URL would have been used.

The error case (ret < 0) was not handled at all before.
2020-04-21 20:43:01 +02:00
Marvin Scholz
7563fe9e52 Fix: YP: Send correct listener URL in case of TLS 2020-04-21 20:12:22 +02:00
Marvin Scholz
2b56f73cfb Cleanup: Do not name variable same as hex function 2020-04-19 04:14:07 +02:00
Marvin Scholz
386a461016 Fix: Fixed check for icecast_kva_t value 2020-04-19 04:10:28 +02:00
Marvin Scholz
e6856c153e Cleanup: Fix order of arguments in forward declaration 2020-04-19 04:05:24 +02:00
Marvin Scholz
b93ac5a94e Fix: Fixed check for root node in reportxml 2020-04-19 03:58:31 +02:00
Marvin Scholz
0c3da2df86 Cleanup: Simplify client_complete
Instead of using a "have" variable which makes it a bit confusing
to understand whats going on, use a do {} while (0) and break from it
instead.
2020-04-19 03:43:27 +02:00
Marvin Scholz
4b2d38fcfc Cleanup: Remove duplicated check 2020-04-19 03:32:59 +02:00
Marvin Scholz
3352ddfb36 Cleanup: Remove redundant check
It's already checked earlier if auth is non-NULL, so this check
here is not needed.
2020-04-19 03:28:21 +02:00
Marvin Scholz
25f54db863 Fix: Reorder logging initialization to prevent race
Without this, the logging on the stats thread would race with the log
initialization on the main thread.
2020-04-19 03:09:49 +02:00
Marvin Scholz
d2b137a8ad Fix: Fixed memory leak on relay parsing failure 2020-04-19 03:02:03 +02:00
Philipp Schafft
2ffaa92ea6 Fix: Fixed two double-unlock errors 2020-02-14 14:05:01 +00:00
Philipp Schafft
97181fb112 Updated submodules 2020-02-12 11:13:46 +00:00
Philipp Schafft
6ca6283cb4 Fix: Fixed invalid locking.
* listensocket_get_listener() must always be called with a matching call
  to listensocket_release_listener
* No ticket for this, but may be related to #2372.
* Found an reported by Xogium on IRC.

See: #2372
2019-11-22 14:48:49 +00:00
Philipp Schafft
ddafdd971f Fix: Strange patch for ICY 2019-09-17 18:08:57 +00:00
Philipp Schafft
f83fe87ab9 Update: Added some debugging lines 2019-09-17 17:32:00 +00:00
Philipp Schafft
cf9c8cf9ad Fix: Fixed leak in codec Speex codec probing code.
Thanks to Xogium for finding and debugging this!

Fixes: #2377
2019-06-28 08:03:51 +00:00
Philipp Schafft
1b94dea420 Update: Improved connecting-the-dots regarding clients and object IDs 2019-06-26 08:23:29 +00:00
Philipp Schafft
3761582ab8 Update: Mark a few developer level debugging messages as such 2019-05-28 07:55:18 +00:00
Philipp Schafft
fff3a5c6a6 Update: Write a error level message on admin/ based metadata updates we reject 2019-05-28 07:52:47 +00:00
Philipp Schafft
e60a36bfb6 Fix: Corrected log output from <unknown< to <unknown> 2019-05-28 07:02:45 +00:00
Philipp Schafft
dbabf91510 Fix: Only send 100 on request and 200 only on SOURCE 2019-05-14 11:38:08 +00:00
Philipp Schafft
0288af5a93 Feature: Report SOURCE as deprecated in log on level DEBUG 2019-05-14 11:37:57 +00:00
Philipp Schafft
0467ef5657 Feature: Log HTTP method used to start a source 2019-05-14 11:37:06 +00:00
Marvin Scholz
8b68c462c4 Fix: Free strings with older OpenSSL versions 2019-04-24 18:52:41 +02:00
Marvin Scholz
e09f48a034 Update: Do not use SSLv23_server_method
...with OpenSSL 1.1.0 or newer

Instead use TLS_server_method and
SSL_CTX_set_min_proto_version to limit
the used protocol versions.
2019-04-24 18:52:41 +02:00
Marvin Scholz
e824e48fdf Cleanup: Remove unnecessary SSL_CTX_get_options
According to the documentation the current option state is not cleared
but the options are added to the current options, so gettin the
current options seems redundant to the behavior of SSL_CTX_set_options:

> SSL_CTX_set_options() adds the options set via bitmask in options
> to ctx. Options already set before are not cleared!
2019-04-24 18:52:41 +02:00
Marvin Scholz
14ba90fc93 Cleanup: Simplify adding SSL_OP_NO_COMPRESSION 2019-04-24 18:52:41 +02:00
Marvin Scholz
ed9a4e658c Cleanup: Simplify OpenSSL context initialisation
Assigning the return value of SSLv23_server_method to a variable is
not necessary here and not doing it can get us rid of a lot of
condition code given that the type of the return value changed
at some point.
2019-04-24 18:52:41 +02:00
Marvin Scholz
07304b5193 Update: Do not init OpenSSL since 1.1.0
Explicitly initializing the library is not longer needed since
OpenSSL 1.1.0 and the SSL_library_init function is deprecated.

Citing the manual:

> As of version 1.1.0 OpenSSL will automatically allocate all resources
> that it needs so no explicit initialisation is required. Similarly it
> will also automatically deinitialise as required.

Fix #2318
2019-04-24 18:52:41 +02:00
Philipp Schafft
001ac59127 Feature: Added auth backend "enforce_auth".
Closes: #2348
2019-01-16 14:11:03 +00:00
Philipp Schafft
8589c1a040 Feature: Actually disable developer only logging if --enable-devel-logging is not given 2019-01-09 15:39:55 +00:00
Philipp Schafft
e6122f13fb Feature: Marked spammy development only output as such
See: #2358
2019-01-09 15:04:16 +00:00
Philipp Schafft
bb6ecd31fd Cleanup: Use "match-method", not (deprecated) "methods" 2019-01-09 11:14:33 +00:00
Philipp Schafft
e196495008 Cleanup: Fixed spaces 2019-01-09 11:11:25 +00:00
Philipp Schafft
d85a0ded30 Feature: Move common methods into CONFIG_LEGACY_ALL_METHODS 2019-01-09 11:07:40 +00:00
Philipp Schafft
4fbde4b96c Update: Allow relay clients to use OPTIONS 2019-01-09 11:06:28 +00:00
Philipp Schafft
95405e406a Update: Allow source clients to use OPTIONS 2019-01-09 11:04:06 +00:00
Philipp Schafft
5a81e8afa2 Cleanup: Use less magic constants for __append_old_style_auth() 2019-01-09 10:49:00 +00:00
Philipp Schafft
a301a302ba Feature: Replaced free()-strdup() in event code with util_replace_string()
See: #2370
2019-01-09 09:30:31 +00:00
Philipp Schafft
edd3dcc60d Update: Renamed replace_string() to util_replace_string() 2019-01-09 09:18:50 +00:00
spr0cketeer
31da097922 Fix: Correct url event "action" option handling
Closes: #2370
2019-01-06 18:57:45 +00:00
Philipp Schafft
de4fdf6656 Fix: Corrected check for return value of tls_got_shutdown() 2018-12-24 16:29:22 +00:00
Philipp Schafft
0a026c8b45 Cleanup: Corrected code formating 2018-12-17 08:52:51 +00:00
Philipp Schafft
7fdc9ed11f Fix: Permit HTTP keep-alive for report XML based replys 2018-12-17 08:51:25 +00:00
Philipp Schafft
825f92d6e2 Feature: Support HTTP keep-alive for SOURCE connections if they give us a content-length (useful for pokes) 2018-12-17 08:46:52 +00:00
Philipp Schafft
b02f306521 Fix: Updated allowed method lists for legacy-global-source and legacy-mount-source
For legacy-global-source this adds POST to the list.
For legacy-mount-source this adds POST and DELETE to the list.
The lists are now sync.

Closes: #2366
Found while working on & See also: icecast-libshout#2303
2018-12-14 12:57:23 +00:00
Philipp Schafft
6e0f876275 Fix: Corrected Copyright headers 2018-11-26 07:42:05 +00:00
Philipp Schafft
3a3739e90a Update: Updated default list of OpenSSL ciphers.
This updates to the Mozilla Foundation's "Intermediate" list
as of the time of this commit.
The list is appended with several negative rules that we included
before.
2018-11-25 18:50:33 +00:00
Philipp Schafft
df96dcbb6c Update: Announce ourself as HTTP/1.1 in HTTP upgrade 2018-11-13 08:54:06 +00:00
Philipp Schafft
143a8b717f Fix: Send final reply to client on HTTP upgrade
Closes: #2356
2018-11-13 08:51:02 +00:00
Philipp Schafft
7637e8f5e3 Fix: Do not upgrade on already upgraded connections 2018-11-13 08:45:09 +00:00
Philipp Schafft
6583bdfc56 Fix: Corrected error handling for TLS connections
Closes: #2355
2018-11-13 08:25:01 +00:00
Philipp Schafft
0d8b076336 Fix: Corrected confusion with default values for source_timeout and body_timeout 2018-11-13 08:23:06 +00:00
Philipp Schafft
5f4b002485 Feature: Support filtering on CORS "Origin". 2018-11-12 21:51:23 +00:00
Philipp Schafft
c7e355ce49 Update: Improved CORS header handling regarding defaults 2018-11-12 21:51:23 +00:00
Philipp Schafft
f60791ad64 Cleanup: Removed stray error level log line 2018-11-12 21:51:23 +00:00
Philipp Schafft
c71aa0a08f Feature: Support per-<acl> HTTP headers 2018-11-12 21:51:23 +00:00
Philipp Schafft
6f28d3fd3a Update: Mark ice_config_http_header_t *header const in _build_headers_loop() 2018-11-12 21:51:23 +00:00
Philipp Schafft
2c72d9a37c Feature: Support per-<role> HTTP headers 2018-11-12 21:51:23 +00:00
Philipp Schafft
aeeee071d4 Feature: Allow to define ACLs in <acl> (child of <role>) 2018-11-12 21:51:23 +00:00
Philipp Schafft
ca83e6b44b Feature: Added type="cors" to <header>. 2018-11-12 21:51:23 +00:00
Philipp Schafft
ff0263b3a4 Update: Added warning about wrong type of metadata update.
See: #2017
2018-11-10 09:22:16 +00:00
Philipp Schafft
6d0e4e6fc9 Update: Set default HTTP version to 1.1
This changes the default version of HTTP to 1.1.
The version can currently not be changed to something different.

Closes: #2057
2018-11-09 07:30:30 +00:00
Philipp Schafft
fbddf8d2f0 Cleanup: Removed <threadpool> completly.
This adds a error level log line to the block in case unknown nodes are used
as we do for other blocks already.

Closes: #2085
2018-11-09 07:12:07 +00:00
Philipp Schafft
03249ff5f4 Fix: Do not segfault if no real source could be found 2018-11-04 09:28:41 +00:00
Philipp Schafft
6c42bcb0f4 Cleanup: Corrected formating 2018-11-04 09:02:40 +00:00
Philipp Schafft
162e3dd650 Fix: Corrected possible bufferoverflows in format_prepare_headers() 2018-10-31 09:28:08 +00:00
Philipp Schafft
548e7963a7 Fix: Fixed bufferoverflow within url_add_client()
This can be trigged by:
* overly long username,
* overly long password,
* overly long user agent string,
* overly long path.
2018-10-31 09:28:08 +00:00
Philipp Schafft
081a7974e6 Fix: Fixed buffer overflow in URL auth code.
Closes: #2342
2018-10-31 09:28:08 +00:00
Philipp Schafft
e75b85fe66 Update: Added "no-store" to Cache-Control:-header. 2018-10-31 09:11:12 +00:00
Philipp Schafft
30c8df8aba Fix: Corrected locking for recursive event_release() 2018-10-26 08:09:09 +00:00
Philipp Schafft
a192f696c3 Fix: Corrected reported Allow:-header (mostly for 204-responses) 2018-10-26 08:05:45 +00:00
Philipp Schafft
0bdad13fd2 Feature: Implemented DELETE on sources 2018-10-26 08:03:46 +00:00
Marvin Scholz
2bb49deeb0 Fix: Add missing log message arguments
Found with lgtm.com
2018-10-17 13:35:34 +00:00
Philipp Schafft
eb66a682c0 Revert "Fix: Corrected use of XMLSTR()"
This reverts commit fd2556b4c0.

See libxml2's 4472c3a5a5b516aaf59b89be602fbce52756c3e9.
2018-10-11 11:04:56 +00:00
Philipp Schafft
9b49c2bae3 Update: Added some comments to struct connection_tag 2018-10-11 10:38:54 +00:00
Philipp Schafft
6656edacad Update: Added names for HTTP status codes 30x. 2018-10-11 10:38:14 +00:00
Philipp Schafft
d8c887aa37 Update: Added comments about the API 2018-10-11 09:17:40 +00:00
Philipp Schafft
a242f0f77b Update: Replaced reportxml_new() and reportxml_database_new() 2018-10-11 08:58:22 +00:00
Philipp Schafft
fea817da2d Update: Replaced listensocket_container_new() 2018-10-10 15:06:45 +00:00
Philipp Schafft
b875e80230 Update: Replaced module_container_new() 2018-10-10 15:01:10 +00:00
Philipp Schafft
bdbe3379ce Update: Replaced buffer_new_simple() by refobject_new(buffer_t) 2018-10-10 14:48:25 +00:00
Philipp Schafft
48bb477301 Feature: Added REFOBJECT_DEFINE_TYPE_NEW_NOOP() 2018-10-10 14:42:37 +00:00
Philipp Schafft
491c4ab2f4 Feature: Implemented simple API refobject_new() and refobject_new_ext() 2018-10-10 14:27:07 +00:00
Philipp Schafft
9f6d3c3018 Cleanup: Removed no longer needed REFOBJECT_DEFINE_TYPE_FREE(NULL)s 2018-10-10 14:15:00 +00:00
Philipp Schafft
2dd9045842 Fix: Corrected structure of how refobject_type*__* is generated. 2018-10-10 14:11:24 +00:00
Philipp Schafft
0cbc5c01ed Update: Added comments 2018-10-10 13:18:33 +00:00
Philipp Schafft
d10a9683aa Feature: Added tests for REFOBJECT_GET_TYPENAME() and REFOBJECT_IS_VALID() 2018-10-10 13:12:01 +00:00
Philipp Schafft
c0ff861107 Fix: Updated unit tests to new refobject API 2018-10-10 12:55:32 +00:00
Philipp Schafft
f1b2785fc4 Feature: Changed refobject subsystem to use defined types 2018-10-10 11:15:39 +00:00
Philipp Schafft
1b6c51787f Fix: Corrected type of #include 2018-10-10 11:10:30 +00:00
Philipp Schafft
07899c4aab Fix: Fixed a race condition in event_shutdown() 2018-10-04 11:21:24 +00:00
Philipp Schafft
f20dfcef63 Fix: SECURITY Do not handle admin-requests in listen-socket auth differently.
This also adds comments to _handle_authentication_global() and
_handle_authentication_mount_default() to explain the situation.
2018-10-04 09:00:26 +00:00
Philipp Schafft
de6e8b4197 Feature: Added support to set listen(2) backlog.
Closes: #2225
2018-09-28 13:52:39 +00:00
Philipp Schafft
dd967ad17b Update: Init method matching depending on what parameters we have. 2018-09-28 13:02:37 +00:00
Philipp Schafft
29680ec6e2 Fix: Allow the use of bools for <logarchive> 2018-09-28 13:02:28 +00:00
Philipp Schafft
53d8b7c35f Fix: Avoid dead-lock in case of config reload 2018-09-20 14:21:16 +00:00
Philipp Schafft
5df028691a Fix: Corrected a possible race codition 2018-09-20 14:13:50 +00:00
Philipp Schafft
9d120d126f Fix: Corrected order of locks to avoid dead-locks 2018-09-20 14:13:19 +00:00
Philipp Schafft
7b84c45a81 Fix: Corrected two possible dead-locks. 2018-09-20 13:03:05 +00:00
Philipp Schafft
1e171a8e4e Fix: Corrected a number of lockings to avoid race conditions 2018-09-20 12:12:59 +00:00
Philipp Schafft
3f3191ce0b Fix: Corrected copy and paste error of lock/unlock 2018-09-20 12:12:40 +00:00
Philipp Schafft
231e60a46a Updated submodules 2018-09-20 10:05:30 +00:00
Philipp Schafft
9a4491e43a Feature: Report Host:-header in <listener> 2018-09-20 09:30:49 +00:00
Philipp Schafft
934cc32285 Feature: Added a way to push buffers into buffers 2018-09-20 09:11:55 +00:00
Philipp Schafft
71b156afc6 Feature: Added buffer_push_printf() and buffer_push_vprintf() 2018-09-20 09:01:49 +00:00
Philipp Schafft
03d56ca35f Fix: Corrected typo 2018-09-20 08:32:26 +00:00
Philipp Schafft
36a8d198fd Fix: Make buffer_get_string() respect offsets 2018-09-20 08:16:25 +00:00
Philipp Schafft
f58f11f2d2 Feature: Test buffer_set_length() 2018-09-20 08:16:25 +00:00
Philipp Schafft
99671cdb40 Feature: Added tests for buffer_shift() 2018-09-20 08:16:25 +00:00
Philipp Schafft
b45c254bf9 Feature: Test bit patterns 2018-09-20 08:16:25 +00:00
Philipp Schafft
661f101790 Feature: Added tests related to buffer_t's string interface 2018-09-20 08:16:25 +00:00
Philipp Schafft
aa270e7bd3 Feature: Run getter tests on empty buffers 2018-09-20 08:16:25 +00:00
Philipp Schafft
bc69719462 Feature: Added first (create/unref) tests for buffers 2018-09-20 08:16:25 +00:00
Philipp Schafft
a92b39becd Feature: Added code that can undo the effect of offsets 2018-09-20 08:16:25 +00:00
Philipp Schafft
18e410cf24 Feature: Implemented new buffer API 2018-09-20 08:16:25 +00:00
Philipp Schafft
a8cae91f10 Feature: Added stubs and interface for new buffer_t that should replace refbuf_t some day. 2018-09-20 08:16:25 +00:00
Philipp Schafft
f6d269c80d Fix: Actually destroy clients on if auth has release callback 2018-09-20 08:13:16 +00:00
Philipp Schafft
1b5572f700 Fix: Fixed a memory leak caused by assigning the client's role twice in some cases 2018-09-20 08:07:29 +00:00
Philipp Schafft
9ffd16cb60 Fix: Fixed two memory leaks in URL auth 2018-09-19 14:56:56 +00:00
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