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

1305 Commits

Author SHA1 Message Date
Philipp Schafft
28572be2ec Feature: Extract metadata and export them to stats.xml
All metadata is now extracted from Vorbis streams and ICY streams
and exported as new <metadata> tag into admin/stats if specific
mountpoint is requested.

To testers:
 - Please test with Ogg Vorbis streams.
 - Please test with Ogg Vorbis + Theora streams.
 - Please test chained Ogg streams.
 - Please test with ICY streams.

close #2106
2014-12-09 16:08:27 +00:00
Philipp Schafft
795aa278ad Speedup: Don't copy data into event if there are no registrations
If there are no reistrations that are added to an event the event
doesn't need to be emited as nobody cares anyway. We will do this
simple check before we copy data into the event object to avoid
unnecessary calls to strdup() and other allocation functions.
2014-12-08 07:58:17 +00:00
Philipp Schafft
bdcf008b7c Added <event>: Unified handling of events.
<event> has been added and can be used within <kartoffelsalat>
both in <icecast> and <mount>.
<event> takes backend depending <option> child tags.
Currently supported backends:
 - log: send message to error log.
 - exec: executes a program or script.
 - url: delivers the event via HTTP.

within <mount> <on-connect> and <on-disconnect> has been replaced by
<event>. Config parser can on-the-fly convert old tags.
Also <authentication type="url"> within <mount> has been fixed
for those cases with <option name="mount_add" .../> and
<option name="mount_remove" .../> which are now on-the-fly converted
by the parser to corresponding <event> tags.

Please also see TAGs added as per #2098. Some include hints for
documentation updates needed after this change. Those updates
should take place before 2.4.2.
2014-12-08 00:39:57 +00:00
Philipp Schafft
8f706a4c1e Cleanup: Moved config re-read function into right place
Renamed event_config_read() into config_reread_config() and moved
it into cfgfile.c. This allowed to delete event.[ch].
event.[ch] will later be used to implement <event>.
2014-12-07 10:54:34 +00:00
Philipp Schafft
2eb04ccd04 Corrected Makefile.am to refect README rename and TODO deletion
- Corrected filename as README was renamed to README.md
  in e7f27072a9.
- Removed TODO from file list as it was removed
  in 341374a69d.
2014-12-06 20:24:33 +00:00
Philipp Schafft
5d9d9fbe48 ACL: added {allow,deny}-all, support bool notation
Added {allow,deny}-all option to ACL parser. Setting this will
set {allow,deny}-{method,admin,web} to *.

Also allow boolean values (insteed of *) for
{allow,deny}-{web,all}.
2014-12-06 20:04:21 +00:00
Philipp Schafft
f7f998e741 renamed <alias> to <resource>.
renamed <alias> to <resource> as it is planned to extent the usage
of this tag. docs and default configs should be updated by those
taking core of them.
2014-12-06 19:47:54 +00:00
Marvin Scholz
fa35f176ab Update submodules 2014-12-05 12:57:02 +01:00
Marvin Scholz
e7f27072a9 Updated README, renamed it so that it is parsed as markdown 2014-12-04 12:45:47 +01:00
Marvin Scholz
341374a69d Remove old TODO file, using trac tickets instead
- #2104 (Check: Bytes sent and time listening might be broken?)
- #2105 (Make config option (-c) optional?)
- #2106 (Pull vorbis comments (metadata) and send to stats)
- #2107 (Provide a way for YP Dirs to check streams)
- #1944 (Rework STATS interface)
- W3C Extended Logging was never requested by someone
- Sending intros is already possible
- #2108 (Registrable URL handlers in connection.c instead of hardcoded list)
- #2109 (Abstract admin functionality to set of commands and handlers)
- #2110 (Timer-based functionalities should use single timer thread)
- #2111 (Race condition in fserv.c?)
- #2112 (Locks on avl client_trees needed?)
2014-12-04 12:14:56 +01:00
Marvin Scholz
a272968a6b Changed URLs to be relative in .gitmodules 2014-12-04 10:24:12 +01:00
Marvin Scholz
3ccdca0498 Updated submodules to the new repository URLs 2014-12-04 08:12:41 +01:00
Marvin Scholz
1bf41cfdb6 Epic Git migration commit
Added .gitignore and submodules
Changed paths to match new location of things
2014-12-02 22:50:57 +01:00
Philipp Schafft
93194594f7 better coding style, patch by ePirat. refs #2059
svn path=/icecast/trunk/icecast/; revision=19376
2014-11-30 20:32:30 +00:00
Philipp Schafft
ea71438af3 s/listener/client/; thanks to micheil.
svn path=/icecast/trunk/icecast/; revision=19375
2014-11-30 18:20:09 +00:00
Philipp Schafft
0ade7d3e17 cleanup: make use of const
svn path=/icecast/trunk/icecast/; revision=19373
2014-11-30 18:18:05 +00:00
Philipp Schafft
35723bed54 sock_active() is broken and can not be used
svn path=/icecast/trunk/icecast/; revision=19372
2014-11-30 18:17:10 +00:00
Philipp Schafft
dae5e45a25 that error is nonsense
svn path=/icecast/trunk/icecast/; revision=19371
2014-11-30 18:15:40 +00:00
Philipp Schafft
0eca1bcfe0 cleanup: don't include "httpp/httpp.h" if not needed
svn path=/icecast/trunk/icecast/; revision=19370
2014-11-30 09:32:06 +00:00
Philipp Schafft
8867d177c5 cleanup: converted printf() into ICECAST_LOG_DEBUG() but commented out so they do not spam logs for normal users.
svn path=/icecast/trunk/icecast/; revision=19368
2014-11-29 12:41:19 +00:00
Thomas B. "dm8tbr" Ruecker
de568c4a33 Fix trailing spaces in default config.
As pointed out by DalekSec on IRC.

svn path=/icecast/trunk/icecast/; revision=19367
2014-11-29 11:39:39 +00:00
Philipp Schafft
7a27cacf0b updated chroot and setuid/gid support. Thanks to d26264b9 for reporting. close #2096
svn path=/icecast/trunk/icecast/; revision=19365
2014-11-29 10:34:07 +00:00
Philipp Schafft
23a47c8ffc in <listener>:
- Added <role>.
- Converted <Referer> to <referer>.
- Set id="nnn" in addition to <ID>nnn</ID>.
- Added TAGged comments about next steps.

refs #2097

svn path=/icecast/trunk/icecast/; revision=19364
2014-11-29 10:16:36 +00:00
Philipp Schafft
fa9ab8eeea include <string.h>
svn path=/icecast/trunk/icecast/; revision=19361
2014-11-29 08:28:55 +00:00
Philipp Schafft
5cd1a0cb03 ensure vhost is not uninitialized
svn path=/icecast/trunk/icecast/; revision=19360
2014-11-29 08:16:42 +00:00
Philipp Schafft
373befb9cc include <stdio.h> as FILE* is used in the header
svn path=/icecast/trunk/icecast/; revision=19359
2014-11-29 08:15:23 +00:00
Philipp Schafft
a642cac542 Wow. Mega patch!
This patch *replaces* the authentication system completly.

What is new:
 - <authentication> in mount section is now a container object.
 - <authentication> in root and mount section may hold any number of <role>-Tags.
 - <role> tags:
   Those tags define a 'role' and it's ACL rules.
   A role is a instance of an authentication module (see below).
   <role> takes the following options. All but type are optional.
   - authentication related:
     - type: Type of the authentication module (values: anonymous, static, legacy-password, url or htpasswd;
             symbolic constants in auth.h)
     - name: Name for the role. For later matching. (values: any string; default: (none))
     - method: This rule is only active on the given list of HTTP methods.
               (list of enum values: methods as recognized by httpp/ (e.g: get,post); default: *)
   - ACL related:
     - allow-method: Allowed HTTP methods.
       (list of enum values: methods as recognized by httpp/ (e.g: get,post); default: get)
     - deny-method: Rejected HTTP methods.
       (list of enum values: methods as recognized by httpp/ (e.g: get,post); default: *)
     - allow-admin: Allowed admin commands. (list of enum values: admin command; default: buildm3u)
     - deny-admin: Rejected admin commands. (list of enum values: admin command; default: *)
     - allow-web: Allowed web pages. (values: empty or *; default: *)
     - deny-web: Rejected web pages. (values: empty or *; default: (empty))
     - connections-per-user: maximum number of simultaneous connections per role and username.
       This is only active on active sources.  (values: unlimited or number of connections; default: unlimited)
     - connection-duration: maximum time of a connection. This is only active on active sources.
       (values: unlimited or number of secounds; default: unlimited)
   <role> takes <option> child tags. <option> tags contain a name and a value option.
   Meaning of <option> tags is up to the authentication module.
 - <role>s are considered to build a stack. If a role returns with AUTH_NOMATCH the next one will be tried.
 - <role>s are tested in this order: mount specific, default mount specific, global, internal fallback.
   Internal fallback is set to allow web/ access via GET, POST and HEAD (only GET supported by this time)
   and rejects all other requests.
 - New authentication module: anonymous
   This module matches all requests. No options taken.
 - New authentication module: static
   This module matches with a static username and password.
   It takes two <option>s. One with name="username" and one with name="password" to set username and password.
   This replaces old style <*-username> and <*-password> tags.
 - New authentication module: legacy-password
   This module matches with a statich password.
   It takes one <option> with name="password" to set password.
   This replaces old ICE and ICY (shoutcast compat mode) authentication.
 - Parsing <authentication> in <mount> with a type set in a special way to allow 100% backward compatibility.
 - Parsing of <source-password>, <admin-password>, <admin-user>, <relay-password> and <relay-user> in global
   <authentication> for 100% backward compatibility.
 - <alias> is now proccessed very early. This enables them to be used for all kinds of requests.

To Do List & What does not yet work:
 - type="url" auth: mount_add and mount_remove.
   This should be replaced by an unique feature I would call '<event>'.
 - Admin commands manageauth and manageauth.xsl are disabled as they need more review:
   This code needs to be ported to support multiple <role>s per <mount>.
 - url authentication module can not yet return AUTH_NOMATCH.
   This needs to be reviewed and discussed on how to handle this case best way.
 - Default config files needs to be updated to reflect the changes.
   As this is quite some political act it should be done in dicussion with the whole team
   and permission of the release manager.
 - Docs need to be updated to reflect the changes.

How does it work:
 Code has been changed so that authentification is done early for all clients.
 This allows accessing the ACL data (client->acl) from nearly everywhere in the code.

 After accept() and initial client setup the request is parsed. In the next step
 all <alias>es are resolved. After this the client is passed for authentication.
 After authentication it is passed to the corresponding subsystem depending on kind of request.

 All authentication instances have a thread running for doing the authentication.
 This thread works on a queue of clients.

Hints for testers:
 - Test with default config.
 - Test with diffrent authentication modules in <mount>.
 - Test shoutcast compatibility mode.
 - Test with new style <authentication> and any amount of <role> (zero to quite some).
 - Test <alias> lookup on all kinds of objects.
 - Test source level credential login into the admin interface.
 - Test shoucast style meta data updates.
 - Test playlist generation.

Thank you for reading this long commit message. Have fun reading the full patch!

svn path=/icecast/trunk/icecast/; revision=19358
2014-11-28 23:46:08 +00:00
Philipp Schafft
637af17f82 some more changes for ACL framework: exported admin_get_command() and ADMIN_COMMAND_ERROR as well as introduced ADMIN_COMMAND_ANY
svn path=/icecast/trunk/icecast/; revision=19349
2014-11-22 05:42:36 +00:00
Philipp Schafft
09692dd45e expose converting of method names to enum values as httpp_str_to_method()
svn path=/icecast/trunk/httpp/; revision=19348
2014-11-22 04:44:47 +00:00
Philipp Schafft
ec439d10eb Changed ABI a bit: updated httpp_request_type_e-type. To avoid any problems do a complet rebuild of your projects. Thank you.
svn path=/icecast/trunk/httpp/; revision=19347
2014-11-22 04:06:26 +00:00
Philipp Schafft
bdc392beb1 some smaller stuff needed to get new authing stuff done
svn path=/icecast/trunk/icecast/; revision=19346
2014-11-22 03:49:36 +00:00
Philipp Schafft
6cca1c5585 allow symbolc names for bools, public settings and loglevel
svn path=/icecast/trunk/icecast/; revision=19345
2014-11-21 19:52:48 +00:00
Philipp Schafft
0df154f3bf remove client_send_[0-9]{3}() in favor of client_send_error(). Please test
svn path=/icecast/trunk/icecast/; revision=19344
2014-11-21 18:05:17 +00:00
Philipp Schafft
237eb4f770 first part of patch to allow kh like admin stats with listener tags inside
svn path=/icecast/trunk/icecast/; revision=19343
2014-11-21 15:37:50 +00:00
Philipp Schafft
1fe898adb5 allow comments to be within the <http-headers> block, not just at the end
svn path=/icecast/trunk/icecast/; revision=19342
2014-11-21 10:08:16 +00:00
Philipp Schafft
558cff06d9 (sync with my branch) Updated handling of <on-connect> and <on-disconnect> in <mount>, see r19305:r19312, refs #1354, #2089, #2087, #1752
svn path=/icecast/trunk/icecast/; revision=19340
2014-11-21 09:28:29 +00:00
Philipp Schafft
503059f481 (sync with my branch) report system name and print better warnings about <hostname> at start of process
svn path=/icecast/trunk/icecast/; revision=19339
2014-11-20 18:41:42 +00:00
Philipp Schafft
dfd6b74068 (sync with my branch) remove threadpool_size in global config, added warnings for <threadpool> and <no-yp> as well as updated warning for <source-password>
svn path=/icecast/trunk/icecast/; revision=19338
2014-11-20 18:36:57 +00:00
Philipp Schafft
6dca08ee5d (sync with my branch) Support for reloading server config using admin interface. close #2018
svn path=/icecast/trunk/icecast/; revision=19337
2014-11-20 18:34:41 +00:00
Philipp Schafft
5a8d0d1646 (sync with my branch) support vhosting on aliases
svn path=/icecast/trunk/icecast/; revision=19336
2014-11-20 18:32:14 +00:00
Thomas B. "dm8tbr" Ruecker
1a3fd18cd4 meh, one more fix, remove spec from Makefile
svn path=/icecast/trunk/icecast/; revision=19326
2014-11-19 13:59:27 +00:00
Thomas B. "dm8tbr" Ruecker
d1ee618e10 This is Spaaarrr^w Icecast 2.4.1!
svn path=/icecast/trunk/icecast/; revision=19325
2014-11-19 13:55:58 +00:00
Thomas B. "dm8tbr" Ruecker
92dfbc5be5 Makefile.am and configure.in for new docs
svn path=/icecast/trunk/icecast/; revision=19324
2014-11-19 13:41:09 +00:00
Thomas B. "dm8tbr" Ruecker
b465436a24 deleting files that erroneously ended up in SVN
svn path=/icecast/trunk/icecast/; revision=19323
2014-11-19 12:28:30 +00:00
Thomas B. "dm8tbr" Ruecker
75994eeb5e Removing unmaintained RPM spec file
svn path=/icecast/trunk/icecast/; revision=19322
2014-11-19 12:18:49 +00:00
ePirat
95e7e42b49 Set PATH_MAX to 4096 if not defined (patch by Svante Signell <svante.signell@gmail.com>)
See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=767542

svn path=/icecast/trunk/icecast/; revision=19321
2014-11-19 11:30:58 +00:00
ePirat
abc75687dc Docs: 2.4.1 docs added
svn path=/icecast/trunk/icecast/; revision=19319
2014-11-18 19:57:21 +00:00
ePirat
e7d68fd3b0 Move declarations to begin of block
(patch by Andreas Mieke)

svn path=/icecast/trunk/icecast/; revision=19318
2014-11-18 17:43:34 +00:00
Thomas B. "dm8tbr" Ruecker
dbab3fd07b corrected email address
svn path=/icecast/trunk/icecast/; revision=19317
2014-11-18 16:18:08 +00:00
ePirat
42f763bf37 Experimental fix for memory errors when using a lot of headers, see #1885
svn path=/icecast/trunk/icecast/; revision=19316
2014-11-18 10:17:16 +00:00