From 1ac74eadb3fb9adba66c63847da0bb89ef1fd037 Mon Sep 17 00:00:00 2001 From: jam Date: Tue, 7 Jan 2014 14:32:12 -0600 Subject: [PATCH] Icecast changes --- db/up/icecast.sql | 305 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 305 insertions(+) create mode 100644 db/up/icecast.sql diff --git a/db/up/icecast.sql b/db/up/icecast.sql new file mode 100644 index 000000000..8ad8c84b7 --- /dev/null +++ b/db/up/icecast.sql @@ -0,0 +1,305 @@ + +-- see http://www.icecast.org/docs/icecast-2.3.3/icecast2_config_file.html#limits +CREATE TABLE icecast_limits ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + + -- number of listening clients + clients INTEGER NOT NULL DEFAULT 1000, + + --number of sources include souce clients and relays + sources INTEGER NOT NULL DEFAULT 50, + + -- maximum size (in bytes) of the stream queue + queue_size INTEGER NOT NULL DEFAULT 102400, + + -- does not appear to be used + client_timeout INTEGER DEFAULT 10, + + -- The maximum time (in seconds) to wait for a request to come in once + -- the client has made a connection to the server. + -- In general this value should not need to be tweaked. + header_timeout INTEGER DEFAULT 15, + + -- If a connected source does not send any data within this + -- timeout period (in seconds), then the source connection + -- will be removed from the server. + source_timeout INTEGER DEFAULT 10, + + -- The burst size is the amount of data (in bytes) + -- to burst to a client at connection time. + burst_size INTEGER DEFAULT 65536, + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + + ); + + +create table icecast_admin_authentications ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + + -- The unencrypted password used by sources to connect to icecast2. + -- The default username for all source connections is 'source' but + -- this option allows to specify a default password. This and the username + -- can be changed in the individual mount sections. + source_password character NOT NULL DEFAULT 'icejam321', + + -- Used in the master server as part of the authentication when a slave requests + -- the list of streams to relay. The default username is 'relay' + relay_user character NOT NULL DEFAULT 'relay', + relay_password character NOT NULL DEFAULT 'jkrelayhack', + + --The username/password used for all administration functions. + admin_user character NOT NULL DEFAULT 'jkadmin', + admin_password character NOT NULL DEFAULT 'jKadmin123', + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + ); + + +--contains all the settings for listing a stream on any of the Icecast2 YP Directory servers. +-- Multiple occurances of this section can be specified in order to be listed on multiple directory servers. +create table icecast_directorys ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + yp_url_timeout integer not null default 15, + yp_url character not null UNIQUE default 'http://dir.xiph.org/cgi-bin/yp-cgi', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +create table icecast_servermiscs ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + -- This is the DNS name or IP address that will be used for the stream directory lookups or possibily + -- the playlist generation if a Host header is not provided. While localhost is shown as an example, + -- in fact you will want something that your listeners can use. + hostname character not null default 'concertsvr.jamkazam.com', + --This sets the location string for this icecast instance. It will be shown e.g in the web interface. + location character not null default 'earth', + --This should contain contact details for getting in touch with the server administrator. + admin character not null default 'icemaster@localhost', + -- This flag turns on the icecast2 fileserver from which static files can be served. + -- All files are served relative to the path specified in the configuration + -- setting. By default the setting is enabled so that requests for the images + -- on the status page are retrievable. + fileserve INTEGER not null default 1, + -- This optional setting allows for the administrator of the server to override the + -- default server identification. The default is icecast followed by a version number + -- and most will not care to change it however this setting will change that. + server_id character not null default 'icecast 2.3', + + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +create table icecast_listen_sockets ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + + -- The TCP port that will be used to accept client connections. + port integer not null default 8001, + + -- An optional IP address that can be used to bind to a specific network card. + -- If not supplied, then it will bind to all interfaces. + bind_address character, + + shoutcast_mount character default NULL, + shoutcast_compat INTEGER not null default 0, + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + + +create table icecast_mastersvr_relays ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + + -- ip address of the master icecast server and port number + master_server character not null, + master_server_port integer not null, + --The interval (in seconds) that the Relay Server will poll the Master Server for any new mountpoints to relay. + master_update_interval integer not null default 120, + + -- This is the relay username on the master server. It is used to query the server for a list of + -- mountpoints to relay. If not specified then 'relay' is used + master_username character not null default 'relay', + master_password character not null, + + --Global on-demand setting for relays. Because you do not have individual relay options when + -- using a master server relay, you still may want those relays to only pull the stream when + -- there is at least one listener on the slave. The typical case here is to avoid surplus + -- bandwidth costs when no one is listening. + relays_on_demand INTEGER default 0, + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + --make sure this combo is unique + --CONSTRAINT serverID UNIQUE KEY (master_server,master_server_port) +); + +create table icecast_relays ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + + -- ip address of server we are relaying from and port number + server character not null, + port integer not null default 8001, + + -- mount at server. eg /example.ogg + mount character not null, + -- eg /different.ogg + local_mount character not null, + -- eg joe. could be null + username character default NULL , + -- user password + password character default null , + relay_shoutcast_metadata INTEGER default 0, + --- relay only if we have someone wanting to listen + on_demand INTEGER default 0, + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +create TABLE icecast_user_authentications( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + --"htpasswd or url" + type CHARACTER DEFAULT NULL , + -- these are for httpasswd + filename CHARACTER default NULL, + allow_duplicate_users INTEGER DEFAULT 0, + + -- these options are for url + -- eg value="http://myauthserver.com/stream_start.php" + mount_add CHARACTER default NULL, + --value="http://myauthserver.com/stream_end.php" + mount_remove CHARACTER default NULL, + --value="http://myauthserver.com/listener_joined.php" + listener_add CHARACTER default NULL, + --value="http://myauthserver.com/listener_left.php" + listener_remove CHARACTER default NULL, + -- value="user" + username CHARACTER default NULL, + -- value="pass" + password CHARACTER default NULL, + -- value="icecast-auth-user: 1" + auth_header CHARACTER default NULL, + -- value="icecast-auth-timelimit:" + timelimit_header CHARACTER default NULL, + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + + +create table icecast_mounts ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + -- eg/example-complex.ogg + mount_name CHARACTER UNIQUE NOT NULL, + username CHARACTER NOT NULL DEFAULT 'jamsource', + password CHARACTER NOT NULL DEFAULT 'jamksource', + max_listeners INTEGER NOT NULL DEFAULT 4, + max_listener_duration INTEGER NOT NULL DEFAULT 3600, + -- dump of the stream coming through on this mountpoint. + -- eg /tmp/dump-example1.ogg + dump_file CHARACTER DEFAULT NULL, + + -- intro music to play + -- This optional value specifies a mountpoint that clients are automatically moved to + -- if the source shuts down or is not streaming at the time a listener connects. + intro CHARACTER NOT NULL DEFAULT '/intro.ogg', + fallback_mount CHARACTER NOT NULL DEFAULT '/sourcedown.ogg', + -- When enabled, this allows a connecting source client or relay on this mountpoint + -- to move listening clients back from the fallback mount. + fallback_override INTEGER DEFAULT 1, + + -- When set to 1, this will cause new listeners, when the max listener count for the mountpoint + -- has been reached, to move to the fallback mount if there is one specified. + fallback_when_full INTEGER DEFAULT 1, + + --For non-Ogg streams like MP3, the metadata that is inserted into the stream often + -- has no defined character set. + charset CHARACTER NOT NULL DEFAULT 'ISO8859-1', + -- possilble values are -1, 0, 1 + public INTEGER DEFAULT 1, + + stream_name VARCHAR NOT NULL DEFAULT 'My Jamkazam Audio Stream', + stream_description VARCHAR NOT NULL DEFAULT 'My JK audio description', + -- direct to user page + stream_url CHARACTER NOT NULL DEFAULT 'http://wwww.jamakazam.com#user_id', + -- get this from the session info + genre VARCHAR NOT NULL DEFAULT 'Unknown', + bitrate integer NOT NULL default 92, + type CHARACTER NOT NULL DEFAULT 'application/ogg' , + subtype CHARACTER NOT NULL DEFAULT 'vorbis', + -- Enable this to prevent this mount from being shown on the xsl pages. + -- This is mainly for cases where a local relay is configured and you do + -- not want the source of the local relay to be shown + hidden INTEGER DEFAULT 1, + + -- This optional setting allows for providing a burst size which overrides the + -- default burst size as defined in limits. The value is in bytes. + burst_size INTEGER DEFAULT 65536, + mp3_metadata_interval INTEGER DEFAULT 4096, + + --called when the source connects or disconnects. The scripts are called with the name of the mount + on_connect CHARACTER DEFAULT '/home/icecast/bin/source-start', + on_disconnect CHARACTER DEFAULT '/home/icecast/bin/source-end', + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + auth_id VARCHAR(64) NOT NULL REFERENCES icecast_user_authentications(id) +); + + +create table icecast_paths ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + basedir CHARACTER NOT NULL DEFAULT './', + logdir CHARACTER NOT NULL DEFAULT './logs', + pidfile CHARACTER NOT NULL DEFAULT './icecast.pid', + webroot CHARACTER NOT NULL DEFAULT './web', + adminroot CHARACTER NOT NULL DEFAULT './admin', + allow_ip CHARACTER NOT NULL DEFAULT '/path/to/ip_allowlist', + deny_ip CHARACTER NOT NULL DEFAULT '/path_to_ip_denylist', + alias CHARACTER DEFAULT 'source="/foo" dest="/bar"', + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + + +create table icecast_loggings ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + accesslog CHARACTER NOT NULL DEFAULT 'access.log', + errorlog CHARACTER NOT NULL DEFAULT 'error.log', + playlistlog CHARACTER NOT NULL DEFAULT 'playlist.log', + -- 4 Debug, 3 Info, 2 Warn, 1 Error + loglevel INTEGER NOT NULL DEFAULT 4 , + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + + +create table icecast_securitys ( + id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(), + + chroot INTEGER NOT NULL DEFAULT 0, + changeowner_user CHARACTER DEFAULT 'nobody', + changeowner_group CHARACTER DEFAULT 'nogroup', + + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +create TABLE icecast_servers( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + icecast_limit_id VARCHAR(64) REFERENCES icecast_limits(id) + + + + -- configs + -- mounts + +); + +