123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- PATH=$PATH:/usr/local/sbin
- # config vars
- # name of the database to be used by Kamailio
- DBNAME=${DBNAME:-kamailio}
- # address of database server
- DBHOST=${DBHOST:-localhost}
- # user with full privileges over DBNAME database
- DBRWUSER=${DBRWUSER:-kamailio}
- # password user with full privileges over DBNAME database
- DBRWPW=${DBRWPW:-kamailiorw}
- # read-only user
- DBROUSER=${DBROUSER:-kamailioro}
- # password for read-only user
- DBROPW=${DBROPW:-kamailioro}
- # user name column
- USERCOL=${USERCOL:-username}
- # Describe what additional tables to install. Valid values for the variables
- # below are yes/no/ask. With ask it will interactively ask the user for the
- # answer, while yes/no allow for automated, unassisted installs.
- INSTALL_EXTRA_TABLES=${INSTALL_EXTRA_TABLES:-ask}
- INSTALL_PRESENCE_TABLES=${INSTALL_PRESENCE_TABLES:-ask}
- INSTALL_DBUID_TABLES=${INSTALL_DBUID_TABLES:-ask}
- # Used by dbtext and db_berkeley to define tables to be created, used by
- # postgres to do the grants
- STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases domain domain_attrs
- grp uri speed_dial lcr_gw lcr_rule lcr_rule_target pdt subscriber
- location location_attrs re_grp trusted address missed_calls
- usr_preferences aliases silo dialog dialog_vars dispatcher dialplan
- acc_cdrs topos_d topos_t}
- EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy
- carrierroute carrier_name domain_name carrierfailureroute userblacklist
- globalblacklist htable purplemap uacreg pl_pipes mtree mtrees
- sca_subscriptions mohqcalls mohqueues rtpproxy}
- PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap
- pua rls_presentity rls_watchers}
- DBUID_TABLES=${UID_TABLES:-uid_credentials uid_domain uid_domain_attrs
- uid_global_attrs uid_uri uid_uri_attrs uid_user_attrs}
- # SQL definitions
- # If you change this definitions here, then you must change them
- # in ../../lib/srdb1/schema/entities.xml too. They are used in this
- # script and needed to be the same as in the database definitions.
- # FIXME
- FOREVER=${FOREVER:-2030-05-28 21:32:15}
- # default location for config files
- DEFAULT_CFG_DIR=/usr/local/etc/kamailio
- # default location for data files
- DEFAULT_DATA_DIR=/usr/local/share/kamailio
- # Needed programs
- MD5=${MD5:-md5sum}
- AWK=${AWK:-awk}
- GREP=${GREP:-grep}
- SED=${SED:-sed}
- # define what modules should be installed
- STANDARD_MODULES=${STANDARD_MODULES:-standard acc lcr domain group
- permissions registrar usrloc msilo alias_db uri_db speeddial
- avpops auth_db pdt dialog dispatcher dialplan topos}
- PRESENCE_MODULES=${PRESENCE_MODULES:-presence rls}
- EXTRA_MODULES=${EXTRA_MODULES:-imc cpl siptrace domainpolicy carrierroute
- userblacklist htable purple uac pipelimit mtree sca mohqueue
- rtpproxy}
- DBUID_MODULES=${UID_MODULES:-uid_auth_db uid_avp_db uid_domain uid_gflags
- uid_uri_db}
- ############################################################
- # common functions
- usage() {
- COMMAND=`basename $0`
- cat <<EOF
- $0 $VERSION
- usage: $COMMAND create <db name or db_path, optional> ...(creates a new database)
- $COMMAND drop <db name or db_path, optional> .....(!entirely deletes tables!)
- $COMMAND reinit <db name or db_path, optional> ...(!entirely deletes and than re-creates tables!)
- $COMMAND backup <file> ...........................(dumps current database to file)
- $COMMAND restore <file> ..........................(restores tables from a file)
- $COMMAND copy <new_db> ...........................(creates a new db from an existing one)
- $COMMAND migrate <old_db> <new_db> ...............(migrates DB from 1.2 to 1.3, not implemented yet!)
- $COMMAND presence ................................(adds the presence related tables)
- $COMMAND extra ...................................(adds the extra tables)
- $COMMAND dbuid ...................................(adds the uid tables)
- $COMMAND dbonly ..................................(creates empty database)
- $COMMAND grant ...................................(grant privileges to database)
- $COMMAND revoke ..................................(revoke privileges to database)
- $COMMAND add-tables <gid> ........................(creates only tables groupped in gid)
- if you want to manipulate database as other database user than
- root, want to change database name from default value "$DBNAME",
- or want to use other values for users and password, edit the
- "config vars" section of the command $COMMAND.
- $COMMAND pframework create .......................(creates a sample provisioning framework file)
- EOF
- } #usage
- # read realm
- prompt_realm()
- {
- printf "Domain (realm) for the default user 'admin': "
- read SIP_DOMAIN
- echo
- }
- # calculate credentials for admin
- credentials()
- {
- HA1=`echo -n "admin:$SIP_DOMAIN:$DBRWPW" | $MD5 | $AWK '{ print $1 }'`
- if [ $? -ne 0 ] ; then
- merr "HA1 calculation failed"
- exit 1
- fi
- HA1B=`echo -n "admin@$SIP_DOMAIN:$SIP_DOMAIN:$DBRWPW" | $MD5 | $AWK '{ print $1 }'`
- if [ $? -ne 0 ] ; then
- merr "HA1B calculation failed"
- exit 1
- fi
- #PHPLIB_ID of users should be difficulty to guess for security reasons
- NOW=`date`;
- PHPLIB_ID=`echo -n "$RANDOM:$NOW:$SIP_DOMAIN" | $MD5 | $AWK '{ print $1 }'`
- if [ $? -ne 0 ] ; then
- merr "PHPLIB_ID calculation failed"
- exit 1
- fi
- }
- # FIXME use the definition from kamctl.base
- mdbg() {
- if [ "0$VERBOSE" -ne 0 ] ; then
- if [ -t 1 -a -z "$NOHLPRINT" ] ; then
- echo -e "\033[1m$1\033[0m"
- else
- echo "$1"
- fi
- fi
- }
- mwarn() {
- if [ -t 1 -a -z "$NOHLPRINT" ] ; then
- echo -e '\E[37;32m'"\033[1mWARNING: $1\033[0m"
- else
- echo "** WARNING: $1"
- fi
- }
- minfo() {
- if [ -t 1 -a -z "$NOHLPRINT" ] ; then
- echo -e '\E[37;33m'"\033[1mINFO: $1\033[0m"
- else
- echo "** INFO: $1"
- fi
- }
- mecho() {
- if [ -t 1 -a -z "$NOHLPRINT" ] ; then
- echo -e "\033[1m$1\033[0m"
- else
- echo "$1"
- fi
- }
- merr() {
- if [ -t 1 -a -z "$NOHLPRINT" ] ; then
- echo -e '\E[37;31m'"\033[1mERROR: $1\033[0m"
- else
- echo "** ERROR: $1"
- fi
- }
- # Get a y/n value from a variable. If the variable contains the keyword
- # `ask', then interactively ask the user for an answer.
- #
- # Arguments:
- # $1 - variable holding yes/no/ask
- # $2 - question to print if value of variable is ask
- #
- # Return:
- # On return $ANSWER will be available with y/n
- #
- get_answer ()
- {
- value=$1
- question=$2
- if [ "${value}" = "ask" ]; then
- echo -n "$question"
- read ANSWER
- else
- ANSWER=${value}
- fi
- ANSWER=${ANSWER:0:1}
- ANSWER=${ANSWER/Y/y}
- ANSWER=${ANSWER/N/n}
- }
|