1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-09-22 04:15:54 -04:00
Commit Graph

1307 Commits

Author SHA1 Message Date
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