-- 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 VARCHAR 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 VARCHAR NOT NULL DEFAULT 'relay', relay_password VARCHAR NOT NULL DEFAULT 'jkrelayhack', --The username/password used for all administration functions. admin_user VARCHAR NOT NULL DEFAULT 'jkadmin', admin_password VARCHAR 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 );