mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-11-03 23:53:59 +01:00 
			
		
		
		
	* Removed all CVS tags. * Removed 'const char *name' parameter from all QObject contructors.
		
			
				
	
	
		
			770 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			770 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
# create_db
 | 
						|
#
 | 
						|
# Create and initialize a new database for Rivendell.
 | 
						|
#
 | 
						|
#   (C) Copyright 2002-2003,2016 Fred Gleason <fredg@paravelsystems.com>
 | 
						|
#
 | 
						|
#   This program is free software; you can redistribute it and/or modify
 | 
						|
#   it under the terms of the GNU General Public License version 2 as
 | 
						|
#   published by the Free Software Foundation.
 | 
						|
#
 | 
						|
#   This program is distributed in the hope that it will be useful,
 | 
						|
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
#   GNU General Public License for more details.
 | 
						|
#
 | 
						|
#   You should have received a copy of the GNU General Public
 | 
						|
#   License along with this program; if not, write to the Free Software
 | 
						|
#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
						|
#
 | 
						|
 | 
						|
#
 | 
						|
# Site Configuration
 | 
						|
#
 | 
						|
 | 
						|
#
 | 
						|
# Rivendell mySQL Application Account
 | 
						|
#
 | 
						|
RD_USER=rduser@localhost
 | 
						|
RD_PASSWORD=letmein
 | 
						|
 | 
						|
#
 | 
						|
# Default Rivendell Administrator 
 | 
						|
#
 | 
						|
RDA_LOGIN_NAME=admin
 | 
						|
RDA_PASSWORD=
 | 
						|
RDA_FULL_NAME="System Administrator"
 | 
						|
RDA_DESCRIPTION="Default Administrator Account"
 | 
						|
 | 
						|
#
 | 
						|
# Default Rivendell User
 | 
						|
#
 | 
						|
USER_LOGIN_NAME=user
 | 
						|
USER_PASSWORD=
 | 
						|
USER_FULL_NAME="Rivendell User"
 | 
						|
USER_DESCRIPTION="Default User Account"
 | 
						|
 | 
						|
#
 | 
						|
# Default Rivendell Service
 | 
						|
#
 | 
						|
RD_SVC_NAME="Production"
 | 
						|
RD_SVC_DESC="Default Audio Service"
 | 
						|
 | 
						|
#
 | 
						|
# Rivendell Audio Repository
 | 
						|
#
 | 
						|
RD_AUDIO_ROOT=/var/snd
 | 
						|
 | 
						|
# Nothing should need to be changed below here!
 | 
						|
# ############################################################################
 | 
						|
 | 
						|
# ############################################################################
 | 
						|
# Create a Rivendell Database
 | 
						|
# ############################################################################
 | 
						|
function CreateDB {
 | 
						|
#
 | 
						|
# Create the database
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"CREATE DATABASE IF NOT EXISTS Rivendell"
 | 
						|
 | 
						|
#
 | 
						|
# Set Security Privledges
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
    GRANT ALL ON * TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create USERS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
CREATE TABLE IF NOT EXISTS USERS (
 | 
						|
    LOGIN_NAME CHAR(8) NOT NULL PRIMARY KEY,
 | 
						|
    FULL_NAME CHAR(64),
 | 
						|
    PHONE_NUMBER CHAR(20),
 | 
						|
    DESCRIPTION CHAR(255),
 | 
						|
    PASSWORD CHAR(32) NOT NULL,
 | 
						|
    ADMIN_USERS_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    ADMIN_CONFIG_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    CREATE_CARTS_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    DELETE_CARTS_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    MODIFY_CARTS_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    EDIT_AUDIO_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    ASSIGN_CART_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    CREATE_LOG_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    DELETE_LOG_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    PLAYOUT_LOG_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    ARRANGE_LOG_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    ADDTO_LOG_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    REMOVEFROM_LOG_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    EDIT_CATCHES_PRIV ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
    INDEX FULL_NAME_IDX (FULL_NAME)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
    GRANT ALL ON USERS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create STATIONS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS STATIONS (
 | 
						|
      NAME CHAR(64) PRIMARY KEY NOT NULL,
 | 
						|
      DESCRIPTION CHAR(64),
 | 
						|
      USER_NAME CHAR(8),
 | 
						|
      DEFAULT_NAME CHAR(8),
 | 
						|
      INDEX DESCRIPTION_IDX (DESCRIPTION)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON STATIONS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create CART table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS CART (
 | 
						|
      NUMBER INT UNSIGNED NOT NULL PRIMARY KEY,
 | 
						|
      TYPE INT UNSIGNED NOT NULL,
 | 
						|
      GROUP_NAME CHAR(10) NOT NULL,
 | 
						|
      TITLE CHAR(255),
 | 
						|
      ARTIST CHAR(255),
 | 
						|
      ALBUM CHAR(255),
 | 
						|
      YEAR DATE,
 | 
						|
      ISRC CHAR(12),
 | 
						|
      LABEL CHAR(64),
 | 
						|
      CLIENT CHAR(64),
 | 
						|
      AGENCY CHAR(64),
 | 
						|
      USER_DEFINED CHAR(255),
 | 
						|
      FORCED_LENGTH INT UNSIGNED,
 | 
						|
      CUT_QUANTITY INT UNSIGNED,
 | 
						|
      LAST_CUT_PLAYED INT UNSIGNED,
 | 
						|
      PLAY_ORDER INT UNSIGNED,
 | 
						|
      START_DATETIME DATETIME,
 | 
						|
      END_DATETIME DATETIME,
 | 
						|
      ENFORCE_LENGTH ENUM('N','Y') DEFAULT 'N',
 | 
						|
      PRESERVE_PITCH ENUM('N','Y') DEFAULT 'N',
 | 
						|
      INDEX GROUP_NAME_IDX (GROUP_NAME),
 | 
						|
      INDEX TITLE_IDX (TITLE),
 | 
						|
      INDEX ARTIST_IDX (ARTIST),
 | 
						|
      INDEX ALBUM_IDX (ALBUM),
 | 
						|
      INDEX LABEL_IDX (LABEL),
 | 
						|
      INDEX CLIENT_IDX (CLIENT),
 | 
						|
      INDEX AGENCY_IDX (AGENCY),
 | 
						|
      INDEX USER_DEFINED_IDX (USER_DEFINED)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON CART TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create CUTS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS CUTS (
 | 
						|
      CUT_NAME CHAR(12) PRIMARY KEY NOT NULL,
 | 
						|
      CART_NUMBER INT UNSIGNED NOT NULL,
 | 
						|
      DESCRIPTION CHAR(64),
 | 
						|
      OUTCUE CHAR(64),
 | 
						|
      LENGTH INT UNSIGNED,
 | 
						|
      ORIGIN_DATETIME DATETIME DEFAULT '0/0/0000 24:00:00',
 | 
						|
      START_DATETIME DATETIME DEFAULT '0/0/0000 24:00:00',
 | 
						|
      END_DATETIME DATETIME DEFAULT '0/0/0000 24:00:00',
 | 
						|
      START_DAYPART TIME DEFAULT '24:00:00',
 | 
						|
      END_DAYPART TIME DEFAULT '24:00:00',
 | 
						|
      ORIGIN_NAME CHAR(64),
 | 
						|
      WEIGHT INT UNSIGNED DEFAULT 1,
 | 
						|
      LAST_PLAY_DATETIME DATETIME,
 | 
						|
      PLAY_COUNTER INT UNSIGNED DEFAULT 0,
 | 
						|
      CODING_FORMAT INT UNSIGNED,
 | 
						|
      SAMPLE_RATE INT UNSIGNED,
 | 
						|
      BIT_RATE INT UNSIGNED,
 | 
						|
      CHANNELS INT UNSIGNED,
 | 
						|
      PLAY_GAIN INT DEFAULT 0,
 | 
						|
      START_POINT INT DEFAULT -1,
 | 
						|
      END_POINT INT DEFAULT -1,
 | 
						|
      FADEUP_POINT INT DEFAULT -1,
 | 
						|
      FADEDOWN_POINT INT DEFAULT -1,
 | 
						|
      SEGUE_START_POINT INT DEFAULT -1,
 | 
						|
      SEGUE_END_POINT INT DEFAULT -1,
 | 
						|
      HOOK_START_POINT INT DEFAULT -1,
 | 
						|
      HOOK_END_POINT INT DEFAULT -1,
 | 
						|
      TALK_START_POINT INT DEFAULT -1,
 | 
						|
      TALK_END_POINT INT DEFAULT -1,
 | 
						|
      INDEX CART_NUMBER_IDX (CART_NUMBER),
 | 
						|
      INDEX DESCRIPTION_IDX (DESCRIPTION),
 | 
						|
      INDEX OUTCUE_IDX (OUTCUE),
 | 
						|
      INDEX ORIGIN_DATETIME_IDX (ORIGIN_DATETIME),
 | 
						|
      INDEX START_DATETIME_IDX (START_DATETIME),
 | 
						|
      INDEX END_DATETIME_IDX (END_DATETIME)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON CUTS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create CLIPBOARD table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS CLIPBOARD (
 | 
						|
      CUT_NAME CHAR(12) PRIMARY KEY NOT NULL,
 | 
						|
      CART_NUMBER INT UNSIGNED NOT NULL,
 | 
						|
      DESCRIPTION CHAR(64),
 | 
						|
      OUTCUE CHAR(64),
 | 
						|
      LENGTH INT UNSIGNED,
 | 
						|
      ORIGIN_DATETIME DATETIME,
 | 
						|
      ORIGIN_NAME CHAR(64),
 | 
						|
      WEIGHT INT UNSIGNED DEFAULT 1,
 | 
						|
      LAST_PLAY_DATETIME DATETIME,
 | 
						|
      PLAY_COUNTER INT UNSIGNED DEFAULT 0,
 | 
						|
      CODING_FORMAT INT UNSIGNED,
 | 
						|
      SAMPLE_RATE INT UNSIGNED,
 | 
						|
      BIT_RATE INT UNSIGNED,
 | 
						|
      CHANNELS INT UNSIGNED,
 | 
						|
      PLAY_GAIN INT DEFAULT 0,
 | 
						|
      START_POINT INT DEFAULT -1,
 | 
						|
      END_POINT INT DEFAULT -1,
 | 
						|
      FADEUP_POINT INT DEFAULT -1,
 | 
						|
      FADEDOWN_POINT INT DEFAULT -1,
 | 
						|
      SEGUE_START_POINT INT DEFAULT -1,
 | 
						|
      SEGUE_END_POINT INT DEFAULT -1,
 | 
						|
      HOOK_START_POINT INT DEFAULT -1,
 | 
						|
      HOOK_END_POINT INT DEFAULT -1,
 | 
						|
      TALK_START_POINT INT DEFAULT -1,
 | 
						|
      TALK_END_POINT INT DEFAULT -1,
 | 
						|
      INDEX CART_NUMBER_IDX (CART_NUMBER),
 | 
						|
      INDEX DESCRIPTION_IDX (DESCRIPTION),
 | 
						|
      INDEX OUTCUE_IDX (OUTCUE)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON CLIPBOARD TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create SERVICES table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS SERVICES (
 | 
						|
      NAME CHAR(10) NOT NULL PRIMARY KEY,
 | 
						|
      DESCRIPTION CHAR(255)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON SERVICES TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create GROUPS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS GROUPS (
 | 
						|
      NAME CHAR(10) NOT NULL PRIMARY KEY,
 | 
						|
      DESCRIPTION CHAR(255)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON GROUPS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create AUDIO_PERMS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS AUDIO_PERMS (
 | 
						|
      ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
 | 
						|
      GROUP_NAME CHAR(10),
 | 
						|
      SERVICE_NAME CHAR(10),
 | 
						|
      INDEX GROUP_IDX (GROUP_NAME),
 | 
						|
      INDEX SERVICE_IDX (SERVICE_NAME)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON AUDIO_PERMS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create RDLIBRARY table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS RDLIBRARY (
 | 
						|
      ID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
 | 
						|
      STATION CHAR(40) NOT NULL,
 | 
						|
      INSTANCE INT UNSIGNED NOT NULL,
 | 
						|
      INPUT_CARD INT DEFAULT -1,
 | 
						|
      INPUT_STREAM INT DEFAULT -1,
 | 
						|
      INPUT_PORT INT DEFAULT -1,
 | 
						|
      INPUT_TYPE ENUM('A','D') DEFAULT 'A',
 | 
						|
      OUTPUT_CARD INT DEFAULT -1,
 | 
						|
      OUTPUT_STREAM INT DEFAULT -1,
 | 
						|
      OUTPUT_PORT INT DEFAULT -1,
 | 
						|
      VOX_THRESHOLD INT DEFAULT -5000,
 | 
						|
      TRIM_THRESHOLD INT DEFAULT -3000,
 | 
						|
      RECORD_GPI INT DEFAULT -1,
 | 
						|
      PLAY_GPI INT DEFAULT -1,
 | 
						|
      STOP_GPI INT DEFAULT -1,
 | 
						|
      DEFAULT_FORMAT INT UNSIGNED DEFAULT 0,
 | 
						|
      DEFAULT_CHANNELS INT UNSIGNED DEFAULT 2,
 | 
						|
      DEFAULT_SAMPRATE INT UNSIGNED DEFAULT 44100,
 | 
						|
      DEFAULT_LAYER INT UNSIGNED DEFAULT 0,
 | 
						|
      DEFAULT_BITRATE INT UNSIGNED DEFAULT 0,
 | 
						|
      DEFAULT_RECORD_MODE INT UNSIGNED DEFAULT 0,
 | 
						|
      DEFAULT_TRIM_STATE ENUM('N','Y') DEFAULT 'N',
 | 
						|
      MAXLENGTH INT,
 | 
						|
      TAIL_PREROLL INT UNSIGNED DEFAULT 1500,
 | 
						|
      RIPPER_DEVICE CHAR(64) DEFAULT \"/dev/cdrom\",
 | 
						|
      PARANOIA_LEVEL INT DEFAULT 0,
 | 
						|
      RIPPER_LEVEL INT DEFAULT 0,
 | 
						|
      CDDB_SERVER CHAR(64) DEFAULT \"freedb.freedb.org\",
 | 
						|
      INDEX STATION_IDX (STATION,INSTANCE)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON RDLIBRARY TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create TRIGGERS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS TRIGGERS (
 | 
						|
      ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
 | 
						|
      CUT_NAME CHAR(12),
 | 
						|
      TRIGGER_CODE INT UNSIGNED,
 | 
						|
      OFFSET INT UNSIGNED,
 | 
						|
      INDEX CUT_NAME_IDX (CUT_NAME)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON TRIGGERS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create TTYS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS TTYS (
 | 
						|
      ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
      PORT_ID INT UNSIGNED NOT NULL,
 | 
						|
      ACTIVE ENUM('N','Y') NOT NULL DEFAULT 'N',
 | 
						|
      STATION_NAME CHAR(64) NOT NULL,
 | 
						|
      PORT CHAR(20),
 | 
						|
      BAUD_RATE INT DEFAULT 9600,
 | 
						|
      DATA_BITS INT DEFAULT 8,
 | 
						|
      STOP_BITS INT DEFAULT 1,      
 | 
						|
      PARITY INT DEFAULT 0,
 | 
						|
      TERMINATION INT DEFAULT 0,
 | 
						|
      INDEX STATION_NAME_IDX (STATION_NAME),
 | 
						|
      INDEX ACTIVE_IDX (ACTIVE),
 | 
						|
      INDEX PORT_ID_IDX (PORT_ID)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON TTYS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create DECKS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS DECKS (
 | 
						|
      ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
      STATION_NAME CHAR(64) NOT NULL,
 | 
						|
      CHANNEL INT UNSIGNED NOT NULL,
 | 
						|
      CARD_NUMBER INT DEFAULT -1,
 | 
						|
      STREAM_NUMBER INT DEFAULT -1,
 | 
						|
      PORT_NUMBER INT DEFAULT -1,
 | 
						|
      PORT_TYPE ENUM('A','D') DEFAULT 'A',
 | 
						|
      DEFAULT_FORMAT INT DEFAULT 0,
 | 
						|
      DEFAULT_CHANNELS INT DEFAULT 2,
 | 
						|
      DEFAULT_SAMPRATE INT DEFAULT 44100,
 | 
						|
      DEFAULT_BITRATE INT DEFAULT 0,
 | 
						|
      DEFAULT_THRESHOLD INT DEFAULT 0,
 | 
						|
      SWITCH_TYPE INT DEFAULT 0,
 | 
						|
      TTY_ID INT,
 | 
						|
      INDEX STATION_NAME_IDX (STATION_NAME),
 | 
						|
      INDEX CHANNEL_IDX (CHANNEL)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON DECKS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create SOURCES table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS SOURCES (
 | 
						|
      ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
      STATION_NAME CHAR(64) NOT NULL,
 | 
						|
      CHANNEL INT UNSIGNED NOT NULL,
 | 
						|
      SOURCE_NAME CHAR(64) NOT NULL,
 | 
						|
      SERIAL_COMMAND CHAR(64),
 | 
						|
      GPO_LINE INT UNSIGNED,
 | 
						|
      INDEX STATION_NAME_IDX (STATION_NAME),
 | 
						|
      INDEX CHANNEL_IDX (CHANNEL),
 | 
						|
      INDEX SOURCE_NAME_IDX (SOURCE_NAME)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON SOURCES TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create RECORDINGS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS RECORDINGS (
 | 
						|
      ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
      STATION_NAME CHAR(64) NOT NULL,
 | 
						|
      CHANNEL INT UNSIGNED NOT NULL,
 | 
						|
      CUT_NAME CHAR(12) NOT NULL,
 | 
						|
      SUN ENUM('N','Y') DEFAULT 'N',
 | 
						|
      MON ENUM('N','Y') DEFAULT 'N',
 | 
						|
      TUE ENUM('N','Y') DEFAULT 'N',
 | 
						|
      WED ENUM('N','Y') DEFAULT 'N',
 | 
						|
      THU ENUM('N','Y') DEFAULT 'N',
 | 
						|
      FRI ENUM('N','Y') DEFAULT 'N',
 | 
						|
      SAT ENUM('N','Y') DEFAULT 'N',
 | 
						|
      SOURCE_NAME CHAR(64),
 | 
						|
      DESCRIPTION CHAR(64),
 | 
						|
      START_TIME TIME,
 | 
						|
      LENGTH INT UNSIGNED,
 | 
						|
      START_GPI INT DEFAULT -1,
 | 
						|
      END_GPI INT DEFAULT -1,
 | 
						|
      TRIM_THRESHOLD INT UNSIGNED,
 | 
						|
      STARTDATE_OFFSET INT UNSIGNED DEFAULT 0,
 | 
						|
      ENDDATE_OFFSET INT UNSIGNED DEFAULT 0,
 | 
						|
      FORMAT INT DEFAULT 0,
 | 
						|
      CHANNELS INT DEFAULT 2,
 | 
						|
      SAMPRATE INT DEFAULT 44100,
 | 
						|
      BITRATE INT DEFAULT 0,
 | 
						|
      INDEX STATION_NAME_IDX (STATION_NAME),
 | 
						|
      INDEX CHANNEL_IDX (CHANNEL),
 | 
						|
      INDEX CUT_NAME_IDX (CUT_NAME),
 | 
						|
      INDEX SOURCE_NAME_IDX (SOURCE_NAME),
 | 
						|
      INDEX SUN_IDX (SUN),
 | 
						|
      INDEX MON_IDX (MON),
 | 
						|
      INDEX TUE_IDX (TUE),
 | 
						|
      INDEX WED_IDX (WED),
 | 
						|
      INDEX THU_IDX (THU),
 | 
						|
      INDEX FRI_IDX (FRI),
 | 
						|
      INDEX SAT_IDX (SAT)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON RECORDINGS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create AUDIO_PORTS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS AUDIO_PORTS (
 | 
						|
      ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
      STATION_NAME CHAR(64) NOT NULL,
 | 
						|
      CARD_NUMBER INT NOT NULL,
 | 
						|
      CLOCK_SOURCE INT DEFAULT 0,
 | 
						|
      INPUT_0_LEVEL INT DEFAULT 0,
 | 
						|
      INPUT_0_TYPE INT DEFAULT 0,
 | 
						|
      INPUT_1_LEVEL INT DEFAULT 0,
 | 
						|
      INPUT_1_TYPE INT DEFAULT 0,
 | 
						|
      INPUT_2_LEVEL INT DEFAULT 0,
 | 
						|
      INPUT_2_TYPE INT DEFAULT 0,
 | 
						|
      INPUT_3_LEVEL INT DEFAULT 0,
 | 
						|
      INPUT_3_TYPE INT DEFAULT 0,
 | 
						|
      INPUT_4_LEVEL INT DEFAULT 0,
 | 
						|
      INPUT_4_TYPE INT DEFAULT 0,
 | 
						|
      INPUT_5_LEVEL INT DEFAULT 0,
 | 
						|
      INPUT_5_TYPE INT DEFAULT 0,
 | 
						|
      INPUT_6_LEVEL INT DEFAULT 0,
 | 
						|
      INPUT_6_TYPE INT DEFAULT 0,
 | 
						|
      INPUT_7_LEVEL INT DEFAULT 0,
 | 
						|
      INPUT_7_TYPE INT DEFAULT 0,
 | 
						|
      OUTPUT_0_LEVEL INT DEFAULT 0,
 | 
						|
      OUTPUT_1_LEVEL INT DEFAULT 0,
 | 
						|
      OUTPUT_2_LEVEL INT DEFAULT 0,
 | 
						|
      OUTPUT_3_LEVEL INT DEFAULT 0,
 | 
						|
      OUTPUT_4_LEVEL INT DEFAULT 0,
 | 
						|
      OUTPUT_5_LEVEL INT DEFAULT 0,
 | 
						|
      OUTPUT_6_LEVEL INT DEFAULT 0,
 | 
						|
      OUTPUT_7_LEVEL INT DEFAULT 0,
 | 
						|
      INDEX STATION_NAME_IDX (STATION_NAME),
 | 
						|
      INDEX CARD_NUMBER_IDX (CARD_NUMBER)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON AUDIO_PORTS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
 | 
						|
#
 | 
						|
# Create LOGS table
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS LOGS (
 | 
						|
      NAME CHAR(64) NOT NULL PRIMARY KEY,
 | 
						|
      SERVICE CHAR(10) NOT NULL,
 | 
						|
      DESCRIPTION CHAR(64),
 | 
						|
      ORIGIN_USER CHAR(8) NOT NULL,
 | 
						|
      ORIGIN_DATETIME DATETIME NOT NULL,
 | 
						|
      START_DATE DATE NOT NULL,
 | 
						|
      END_DATE DATE NOT NULL,
 | 
						|
      INDEX SERVICE_IDX (SERVICE),
 | 
						|
      INDEX DESCRIPTION_IDX (DESCRIPTION),
 | 
						|
      INDEX ORIGIN_USER_IDX (ORIGIN_USER),
 | 
						|
      INDEX START_DATE_IDX (START_DATE),
 | 
						|
      INDEX END_DATE_IDX (END_DATE)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON LOGS TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
}
 | 
						|
# ############################################################################
 | 
						|
 | 
						|
 | 
						|
# ############################################################################
 | 
						|
# Initialize a Rivendell Database
 | 
						|
# ############################################################################
 | 
						|
function InitDB {
 | 
						|
#
 | 
						|
# Create Default Admin Account
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO USERS (LOGIN_NAME,PASSWORD,FULL_NAME,DESCRIPTION,ADMIN_USERS_PRIV,ADMIN_CONFIG_PRIV)
 | 
						|
      VALUES (\"$RDA_LOGIN_NAME\",PASSWORD(\"$RDA_PASSWORD\"),\"$RDA_FULL_NAME\",\"$RDA_DESCRIPTION\",'Y','Y')"
 | 
						|
 | 
						|
#
 | 
						|
# Create Default User Account
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO USERS (LOGIN_NAME,PASSWORD,FULL_NAME,DESCRIPTION,
 | 
						|
		  CREATE_CARTS_PRIV,DELETE_CARTS_PRIV,MODIFY_CARTS_PRIV,
 | 
						|
		  EDIT_AUDIO_PRIV,ASSIGN_CART_PRIV,CREATE_LOG_PRIV,
 | 
						|
		  DELETE_LOG_PRIV,PLAYOUT_LOG_PRIV,ARRANGE_LOG_PRIV,
 | 
						|
		  ADDTO_LOG_PRIV,REMOVEFROM_LOG_PRIV,EDIT_CATCHES_PRIV)
 | 
						|
      VALUES (\"$USER_LOGIN_NAME\",PASSWORD(\"$USER_PASSWORD\"),\"$USER_FULL_NAME\",\"$USER_DESCRIPTION\",
 | 
						|
              'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')"
 | 
						|
 | 
						|
#
 | 
						|
# Create Default Workstation
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO STATIONS (NAME,DESCRIPTION,USER_NAME,DEFAULT_NAME)
 | 
						|
      VALUES (\"DEFAULT\",\"Default Workstation\",
 | 
						|
      \"$USER_LOGIN_NAME\",\"$USER_LOGIN_NAME\")"
 | 
						|
 | 
						|
#
 | 
						|
# Create Test Tone Cart
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO CART(TYPE,NUMBER,GROUP_NAME,TITLE,ARTIST,CUT_QUANTITY,
 | 
						|
      FORCED_LENGTH)
 | 
						|
      VALUES (1,999999,\"TEST\",\"Test Tone\",\"Salem Radio Labs\",1,10000)"
 | 
						|
 | 
						|
#
 | 
						|
# Create Default Audio Cut
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO CUTS SET CUT_NAME=\"999999_000\",CART_NUMBER=999999,
 | 
						|
      DESCRIPTION=\"1 kHz at Reference Level [-16 dBFS]\",
 | 
						|
      OUTCUE=\"[tone]\",CODING_FORMAT=0,
 | 
						|
      SAMPLE_RATE=44100,BIT_RATE=0,
 | 
						|
      CHANNELS=2,LENGTH=10000,START_POINT=0,END_POINT=10000,
 | 
						|
      ORIGIN_DATETIME=NOW(),ORIGIN_NAME=\"RDGen\""
 | 
						|
 | 
						|
#
 | 
						|
# Create Clipboard Entry
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO CLIPBOARD SET CUT_NAME=\"clip\",CART_NUMBER=0,
 | 
						|
      DESCRIPTION=\"Default Clipboard\""
 | 
						|
 | 
						|
#
 | 
						|
# Create Default Service
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO SERVICES (NAME,DESCRIPTION) 
 | 
						|
      VALUES (\"$RD_SVC_NAME\",\"$RD_SVC_DESC\")"
 | 
						|
 | 
						|
#
 | 
						|
# Create Default Groups
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO GROUPS (NAME,DESCRIPTION) 
 | 
						|
      VALUES (\"TEMP\",\"Temporary Carts\")"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO GROUPS (NAME,DESCRIPTION) 
 | 
						|
      VALUES (\"TEST\",\"Test Carts\")"
 | 
						|
 | 
						|
#
 | 
						|
# Create Default Audio Permissions
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO AUDIO_PERMS (GROUP_NAME,SERVICE_NAME) 
 | 
						|
      VALUES (\"TEMP\",\"Production\")"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO AUDIO_PERMS (GROUP_NAME,SERVICE_NAME) 
 | 
						|
      VALUES (\"TEST\",\"Production\")"
 | 
						|
 | 
						|
#
 | 
						|
# Create Default Library Configuration
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO RDLIBRARY (STATION,INSTANCE) 
 | 
						|
      VALUES (\"0.0.0.0|0.0.0.0:0\",0)"
 | 
						|
 | 
						|
#
 | 
						|
# Create Sample Log
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      CREATE TABLE IF NOT EXISTS SAMPLE_LOG (
 | 
						|
      ID INT NOT NULL PRIMARY KEY,
 | 
						|
      COUNT INT NOT NULL,
 | 
						|
      START_TIME TIME NOT NULL,
 | 
						|
      CART_NUMBER INT UNSIGNED NOT NULL,
 | 
						|
      TIME_TYPE INT NOT NULL,
 | 
						|
      TRANS_TYPE INT NOT NULL,
 | 
						|
      START_POINT INT NOT NULL DEFAULT -1,
 | 
						|
      END_POINT INT NOT NULL DEFAULT -1,
 | 
						|
      SEGUE_START_POINT INT NOT NULL DEFAULT -1,
 | 
						|
      SEGUE_END_POINT INT NOT NULL DEFAULT -1,
 | 
						|
      INDEX COUNT_IDX (COUNT),
 | 
						|
      INDEX CART_NUMBER_IDX (CART_NUMBER),
 | 
						|
      INDEX START_TIME_IDX (START_TIME)
 | 
						|
)"
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      GRANT ALL ON SAMPLE_LOG TO $RD_USER IDENTIFIED BY \"$RD_PASSWORD\""
 | 
						|
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
 | 
						|
      INSERT INTO LOGS (NAME,SERVICE,DESCRIPTION,ORIGIN_USER,ORIGIN_DATETIME) 
 | 
						|
      VALUES (\"SAMPLE\",\"Production\",\"Sample Log\",\"user\",NOW())"
 | 
						|
}
 | 
						|
 | 
						|
# ############################################################################
 | 
						|
 | 
						|
 | 
						|
# ############################################################################
 | 
						|
# Generate Default Audio
 | 
						|
# ############################################################################
 | 
						|
function GenerateAudio {
 | 
						|
if [ -d $RD_AUDIO_ROOT ] ; then
 | 
						|
  echo -n
 | 
						|
else
 | 
						|
  mkdir $RD_AUDIO_ROOT
 | 
						|
fi
 | 
						|
rdgen -t 10 -l 16 $RD_AUDIO_ROOT/999999_000.wav
 | 
						|
chown -R $SHELL_NAME: $RD_AUDIO_ROOT
 | 
						|
}
 | 
						|
# ############################################################################
 | 
						|
 | 
						|
 | 
						|
# ############################################################################
 | 
						|
# Upgrade a Rivendell Database
 | 
						|
# ############################################################################
 | 
						|
function UpgradeDB {
 | 
						|
#
 | 
						|
# Create the temporary database
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"CREATE DATABASE IF NOT EXISTS Rivendell_TEMP"
 | 
						|
 | 
						|
#
 | 
						|
# Dump primary database to temporary
 | 
						|
#
 | 
						|
mysqldump -u $USER -p$PASSWORD --opt Rivendell \
 | 
						|
| mysql -u $USER -p$PASSWORD -C Rivendell_TEMP
 | 
						|
 | 
						|
#
 | 
						|
# Delete the primary database
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"DROP DATABASE Rivendell"
 | 
						|
 | 
						|
#
 | 
						|
# Create Upgraded Rivendell Database
 | 
						|
#
 | 
						|
CreateDB
 | 
						|
 | 
						|
#
 | 
						|
# Restore Data from temporary Database
 | 
						|
#
 | 
						|
mysqldump -u $USER -p$PASSWORD --opt Rivendell_TEMP \
 | 
						|
| mysql -u $USER -p$PASSWORD -C Rivendell
 | 
						|
 | 
						|
#
 | 
						|
# Delete the temporary database
 | 
						|
#
 | 
						|
mysql -u $USER -p$PASSWORD -e"DROP DATABASE Rivendell_TEMP"
 | 
						|
}
 | 
						|
# ############################################################################
 | 
						|
 | 
						|
 | 
						|
# ############################################################################
 | 
						|
# Main Routine
 | 
						|
# ############################################################################
 | 
						|
#
 | 
						|
# Get the mySQL Administrator Login
 | 
						|
#
 | 
						|
read -p "mySQL account with Admin access []: " USER
 | 
						|
if [ -z $USER ] ; then
 | 
						|
  echo "You must supply a mySQL administrator account name!"
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
read -s -p "mySQL Password: " PASSWORD
 | 
						|
echo
 | 
						|
 | 
						|
#
 | 
						|
# Get the shell account user and group names
 | 
						|
#
 | 
						|
read -p "User account name that will be running Rivendell []: " SHELL_NAME
 | 
						|
echo
 | 
						|
if [ -z $SHELL_NAME ] ; then
 | 
						|
  echo "You must supply a valid user account name!"
 | 
						|
  echo
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
#
 | 
						|
# Check that mySQL is running and accessible
 | 
						|
#
 | 
						|
mysql -s -u $USER -p$PASSWORD -e"use mysql" 2> /dev/null
 | 
						|
if [ $? -ne 0 ] ; then
 | 
						|
  echo
 | 
						|
  echo "*** Unable to connect to the mySQL server. ***"
 | 
						|
  echo "It's possible that the server is not currently running, or that"
 | 
						|
  echo "the name/password you've supplied are not correct.  Please"
 | 
						|
  echo "correct the problem and try again."
 | 
						|
  echo
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
#
 | 
						|
# Check for an existing Rivendell database
 | 
						|
#
 | 
						|
mysql -s -u $USER -p$PASSWORD -e"use Rivendell" 2> /dev/null
 | 
						|
if [ $? -eq 0 ] ; then
 | 
						|
  echo
 | 
						|
  echo "*** A Rivendell database already exists! ***"
 | 
						|
  echo "You can:"
 | 
						|
  echo "  1) Overwrite it and create a new one."
 | 
						|
  echo "     [WARNING: overwriting the database will COMPLETELY DESTROY"
 | 
						|
  echo "     any existing data and audio!]"
 | 
						|
  echo
 | 
						|
  echo "  2) Upgrade the existing database."
 | 
						|
  echo
 | 
						|
  echo "  3) Exit this utility."
 | 
						|
  echo
 | 
						|
  read -p "Your choice [3]: " OVERWRITE
 | 
						|
  echo
 | 
						|
  case "$OVERWRITE" in
 | 
						|
    "1")
 | 
						|
      echo -n "Deleting old Rivendell database..."
 | 
						|
      mysql -s -u $USER -p$PASSWORD -e"drop database Rivendell"
 | 
						|
      echo "done."
 | 
						|
      echo -n "Deleting old audio data..."
 | 
						|
      rm $RD_AUDIO_ROOT/*
 | 
						|
      echo "done."
 | 
						|
      echo -n "Creating new Rivendell database..."
 | 
						|
      CreateDB
 | 
						|
      echo "done."
 | 
						|
      echo -n "Initializing new Rivendell database..."
 | 
						|
      InitDB
 | 
						|
      echo "done."
 | 
						|
      echo -n "Generating new audio data..."
 | 
						|
      GenerateAudio
 | 
						|
      echo "done."
 | 
						|
      echo
 | 
						|
      exit 0
 | 
						|
    ;;
 | 
						|
 | 
						|
   "2")
 | 
						|
     echo -n "Upgrading Rivendell database..."
 | 
						|
     UpgradeDB
 | 
						|
     echo "done."
 | 
						|
     echo
 | 
						|
     exit 0
 | 
						|
   ;;
 | 
						|
 | 
						|
   "3" | "")
 | 
						|
    echo "Database NOT overwritten or upgraded."
 | 
						|
    echo
 | 
						|
    exit 0
 | 
						|
    ;;
 | 
						|
  esac
 | 
						|
fi 
 | 
						|
# ############################################################################
 | 
						|
 | 
						|
# End of rd_create_db
 | 
						|
 | 
						|
 | 
						|
 |