From bfde3a3504b46aac93b31651ee92029adad339e2 Mon Sep 17 00:00:00 2001 From: Jarrod Baumann Date: Thu, 16 Apr 2015 19:34:23 +0000 Subject: [PATCH 1/4] Updated control scripts to include considerations for the new db_sqlite --- Makefile | 30 +++++++++++++++++++++++++++ scripts/opensipsctl | 26 +++++++++++++++++------- scripts/opensipsctl.sqlite | 16 +++++++++++---- scripts/opensipsctlrc | 4 ++-- scripts/opensipsdbctl.sqlite | 39 +++--------------------------------- scripts/osipsconsolerc | 4 ++-- 6 files changed, 68 insertions(+), 51 deletions(-) diff --git a/Makefile b/Makefile index 48567b662be..2d67fa327cb 100644 --- a/Makefile +++ b/Makefile @@ -143,6 +143,12 @@ ifeq (,$(MODULE_DBTEXT_INCLUDED)) else DBTEXTON=yes endif +MODULE_SQLITE_INCLUDED=$(shell echo $(modules)| grep db_sqlite ) +ifeq (,$(MODULE_SQLITE_INCLUDED)) + SQLITEON=no +else + SQLITEON=yes +endif MODULE_RADIUSDEP_INCLUDED=$(shell echo $(modules)| grep _radius ) ifeq (,$(MODULE_RADIUSDEP_INCLUDED)) RADIUSDEPON=no @@ -834,6 +840,30 @@ install-modules-tools: $(bin-prefix)/$(bin-dir) fi ;\ done ;\ fi + # install sqlite stuff + if [ "$(SQLITEON)" = "yes" ]; then \ + mkdir -p $(modules-prefix)/$(lib-dir)/opensipsctl ; \ + sed -e "s#/usr/local/share/opensips/#$(data-target)#g" \ + < scripts/opensipsctl.sqlite > /tmp/opensipsctl.sqlite ; \ + $(INSTALL_CFG) /tmp/opensipsctl.sqlite \ + $(modules-prefix)/$(lib-dir)/opensipsctl/opensipsctl.sqlite ; \ + rm -fr /tmp/opensipsctl.sqlite ; \ + sed -e "s#/usr/local/share/opensips#$(data-target)#g" \ + < scripts/opensipsdbctl.sqlite > /tmp/opensipsdbctl.sqlite ; \ + $(INSTALL_TOUCH) $(modules-prefix)/$(lib-dir)/opensipsctl/opensipsdbctl.sqlite ; \ + $(INSTALL_CFG) /tmp/opensipsdbctl.sqlite $(modules-prefix)/$(lib-dir)/opensipsctl/ ; \ + rm -fr /tmp/opensipsdbctl.sqlite ; \ + mkdir -p $(modules-prefix)/$(lib-dir)/opensipsctl/sqlite ; \ + mkdir -p $(data-prefix)/$(data-dir)/sqlite/opensips ; \ + for FILE in $(wildcard scripts/sqlite/opensips/*) ; do \ + if [ -f $$FILE ] ; then \ + $(INSTALL_TOUCH) $$FILE \ + $(data-prefix)/$(data-dir)/sqlite/opensips/`basename "$$FILE"` ; \ + $(INSTALL_CFG) $$FILE \ + $(data-prefix)/$(data-dir)/sqlite/opensips/`basename "$$FILE"` ; \ + fi ;\ + done ;\ + fi .PHONY: install-doc install-app-doc install-modules-doc diff --git a/scripts/opensipsctl b/scripts/opensipsctl index 367d2deaa1f..e2a9ae2c10f 100755 --- a/scripts/opensipsctl +++ b/scripts/opensipsctl @@ -6,7 +6,7 @@ # #=================================================================== -PATH=$PATH:/usr/local/sbin/ +PATH=$PATH://sbin// # for testing only, please don't enable this in production environments # as this introduce security risks @@ -15,8 +15,8 @@ TEST="false" if [ -f /etc/opensips/opensipsctlrc ]; then . /etc/opensips/opensipsctlrc fi -if [ -f /usr/local/etc/opensips/opensipsctlrc ]; then - . /usr/local/etc/opensips/opensipsctlrc +if [ -f //etc/opensips//opensipsctlrc ]; then + . //etc/opensips//opensipsctlrc fi if [ -f ~/.opensipsctlrc ]; then . ~/.opensipsctlrc @@ -46,7 +46,7 @@ fi ### force values for variables in this section # you better set the variables in ~/.opensipsctlrc if [ -z $ETCDIR ] ; then - ETCDIR="/usr/local/etc/opensips" + ETCDIR="//etc/opensips/" else # Fix relative paths [ "${ETCDIR:0:1}" != "/" ] && ETCDIR=$PWD/$ETCDIR @@ -60,7 +60,7 @@ if [ -z $MYDIR ] ; then fi if [ -z $MYLIBDIR ] ; then - MYLIBDIR="/usr/local/lib/opensips/opensipsctl" + MYLIBDIR="//lib64/opensips/opensipsctl" if [ ! -d $MYLIBDIR ]; then MYLIBDIR=$MYDIR fi @@ -76,7 +76,12 @@ else exit -1 fi +##### ------------------------------------------------ ##### +### define default parameters that may be overridden by +### different database engines # +now="now()" + ##### ------------------------------------------------ ##### ### DBENGINE # @@ -113,6 +118,13 @@ case $DBENGINE in DBENGINELOADED=1 fi ;; + SQLITE|db_sqlite|SQLITE|sqlite) + if [ -f "$MYLIBDIR/opensipsctl.sqlite" ]; then + . "$MYLIBDIR/opensipsctl.sqlite" + DBENGINELOADED=1 + now="datetime('now','localtime')" + fi + ;; esac @@ -305,7 +317,7 @@ acl() { QUERY="insert into $ACL_TABLE ($ACL_USER_COLUMN,\ $ACL_GROUP_COLUMN,$ACL_MODIFIED_COLUMN,$ACL_DOMAIN_COLUMN ) values \ -('$OSIPSUSER','$1', now(), '$OSIPSDOMAIN' );" +('$OSIPSUSER','$1', $now, '$OSIPSDOMAIN' );" $DBCMD "$QUERY" if [ $? -ne 0 ] ; then merr "acl - SQL Error" @@ -1007,7 +1019,7 @@ domain() { exit 0 fi QUERY="insert into $DOMAIN_TABLE ($DO_DOMAIN_COLUMN, \ - $DO_LAST_MODIFIED_COLUMN) VALUES ('$1',now());" + $DO_LAST_MODIFIED_COLUMN) VALUES ('$1',$now);" $DBCMD "$QUERY" if [ $? -ne 0 ] ; then merr "domain - SQL Error" diff --git a/scripts/opensipsctl.sqlite b/scripts/opensipsctl.sqlite index ff241a20c13..5098c2c197d 100644 --- a/scripts/opensipsctl.sqlite +++ b/scripts/opensipsctl.sqlite @@ -6,7 +6,7 @@ #=================================================================== ##### ----------------------------------------------- ##### -### MySQL specific variables and functions +### SQLITE specific variables and functions # ##### ----------------------------------------------- ##### @@ -22,14 +22,22 @@ fi ##### ----------------------------------------------- ##### ### binaries if [ -z "$SQLITE" ] ; then - locate_tool mysql + locate_tool sqlite3 if [ -z "$TOOLPATH" ] ; then - echo "error: 'mysql' tool not found: set MYSQL variable to correct tool path" + echo "error: 'sqlite' tool not found: set SQLITE variable to correct tool path" exit fi SQLITE="$TOOLPATH" fi -DBCMD=sqlite3 +# input: sql query, optional pgsql command-line params +sqlite_query() { + # if password not yet queried, query it now + mecho "sqlite_query: $SQLITE $DB_PATH '$1'" + $SQLITE $DB_PATH "$1" +} + + +DBCMD=sqlite_query DBRAWPARAMS="" diff --git a/scripts/opensipsctlrc b/scripts/opensipsctlrc index 9338976041f..63664c67df6 100644 --- a/scripts/opensipsctlrc +++ b/scripts/opensipsctlrc @@ -12,7 +12,7 @@ ## chrooted directory # $CHROOT_DIR="/path/to/chrooted/directory" -## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, +## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, DBTEXT, or SQLITE ## by default none is loaded # If you want to setup a database with opensipsdbctl, you must at least specify # this parameter. @@ -24,7 +24,7 @@ ## database name (for ORACLE this is TNS name) # DBNAME=opensips -# database path used by dbtext or db_berkeley +# database path used by dbtext, db_berkeley, or sqlite # DB_PATH="/usr/local/etc/opensips/dbtext" ## database read/write user diff --git a/scripts/opensipsdbctl.sqlite b/scripts/opensipsdbctl.sqlite index acce34aa8d8..8a531b4c2d4 100644 --- a/scripts/opensipsdbctl.sqlite +++ b/scripts/opensipsdbctl.sqlite @@ -1,6 +1,6 @@ # $Id$ # -# Script for adding and dropping OpenSIPS MySQL tables +# Script for adding and dropping OpenSIPS SQLITE tables # # History: # 2006-04-07 removed gen_ha1 dependency - use md5sum; @@ -18,7 +18,7 @@ # path to the database schemas DATA_DIR="/usr/local/share/opensips" -if [ -d "$DATA_DIR/sqlie" ]; then +if [ -d "$DATA_DIR/sqlite" ]; then DB_SCHEMA="$DATA_DIR/sqlite" elif [ -d "scripts/mysql" ]; then DB_SCHEMA="scripts/sqlite" @@ -30,26 +30,10 @@ fi # config vars ################################################################# -# full privileges MySQL user -if [ -z "$DBROOTUSER" ]; then - DBROOTUSER="root" -fi - - # path to the db_sqlite database if [ -z "$DB_PATH" ]; then DB_PATH="/usr/local/etc/opensips/sqlite" fi -# Uncomment this to set the database root password if you want to run this -# script without any user prompt. This is unsafe, but useful e.g. for -# automatic testing. -#PW="" - -if ! [ -z "$DBPORT" ]; then - PORT_OPT="-P$DBPORT" -else - PORT_OPT= -fi CMD="sqlite3" DUMP_CMD=".dump" @@ -59,13 +43,6 @@ DUMP_CMD=".dump" # read password prompt_pw() { -# savetty=`stty -g` -# echo -n "SQLITE password for $DBROOTUSER: " -# stty -echo -# read PW -# stty $savetty -# echo -# export PW echo "SQLITE does not use password" } @@ -75,23 +52,13 @@ sql_query() { if [ $# -gt 1 ] ; then if [ -n "$1" ]; then - DB="$1" # no quoting, mysql client don't like this + DB="$1" else DB="" fi shift -# if [ -n "$PW" ]; then -# $CMD "-p$PW" $DB -Bse "$@" -# else -# $CMD $DB -Bse "$@" -# fi $CMD $DB "$@" else -# if [ -n "$PW" ]; then -# $CMD "-p$PW" -Bs "$@" -# else -# $CMD -Bs "$@" -# fi merr "sqlite3 requires db name" fi } diff --git a/scripts/osipsconsolerc b/scripts/osipsconsolerc index e55108b0ba8..c5b5af16a91 100644 --- a/scripts/osipsconsolerc +++ b/scripts/osipsconsolerc @@ -9,7 +9,7 @@ ## your SIP domain # SIP_DOMAIN=opensips.org -## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, by default none is loaded +## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, SQLITE, or DBTEXT (default: none) # If you want to setup a database with opensipsdbctl, you must at least specify # this parameter. # DBENGINE=MYSQL @@ -23,7 +23,7 @@ ## database name (for ORACLE this is TNS name) # DBNAME=opensips -## database path used by dbtext or db_berkeley +## database path used by dbtext, db_berkeley, or sqlite # DB_PATH="/usr/local/etc/opensips/dbtext" ## database read/write user From 5b557d081cf11cebf4fe87938be140c07e5af44e Mon Sep 17 00:00:00 2001 From: Jarrod Baumann Date: Thu, 16 Apr 2015 19:44:27 +0000 Subject: [PATCH 2/4] updated osipsconsolerc to match the opensipsctlrc header for the DBENGINE definition --- scripts/osipsconsolerc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/osipsconsolerc b/scripts/osipsconsolerc index c5b5af16a91..f2619df7474 100644 --- a/scripts/osipsconsolerc +++ b/scripts/osipsconsolerc @@ -9,7 +9,8 @@ ## your SIP domain # SIP_DOMAIN=opensips.org -## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, SQLITE, or DBTEXT (default: none) +## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, DBTEXT, or SQLITE +## by default none is loaded # If you want to setup a database with opensipsdbctl, you must at least specify # this parameter. # DBENGINE=MYSQL From 060643557e7699354fd4fea3ee72735ee72c1b0b Mon Sep 17 00:00:00 2001 From: Jarrod Baumann Date: Thu, 16 Apr 2015 19:57:54 +0000 Subject: [PATCH 3/4] Fixed Makefile script sqlite references that move the database related files into the library path --- Makefile | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 2d67fa327cb..e31884b467d 100644 --- a/Makefile +++ b/Makefile @@ -840,10 +840,10 @@ install-modules-tools: $(bin-prefix)/$(bin-dir) fi ;\ done ;\ fi - # install sqlite stuff + # install SQLITE stuff if [ "$(SQLITEON)" = "yes" ]; then \ mkdir -p $(modules-prefix)/$(lib-dir)/opensipsctl ; \ - sed -e "s#/usr/local/share/opensips/#$(data-target)#g" \ + sed -e "s#/usr/local/sbin#$(bin-target)#g" \ < scripts/opensipsctl.sqlite > /tmp/opensipsctl.sqlite ; \ $(INSTALL_CFG) /tmp/opensipsctl.sqlite \ $(modules-prefix)/$(lib-dir)/opensipsctl/opensipsctl.sqlite ; \ @@ -853,16 +853,15 @@ install-modules-tools: $(bin-prefix)/$(bin-dir) $(INSTALL_TOUCH) $(modules-prefix)/$(lib-dir)/opensipsctl/opensipsdbctl.sqlite ; \ $(INSTALL_CFG) /tmp/opensipsdbctl.sqlite $(modules-prefix)/$(lib-dir)/opensipsctl/ ; \ rm -fr /tmp/opensipsdbctl.sqlite ; \ - mkdir -p $(modules-prefix)/$(lib-dir)/opensipsctl/sqlite ; \ - mkdir -p $(data-prefix)/$(data-dir)/sqlite/opensips ; \ - for FILE in $(wildcard scripts/sqlite/opensips/*) ; do \ + mkdir -p $(data-prefix)/$(data-dir)/sqlite ; \ + for FILE in $(wildcard scripts/sqlite/*) ; do \ if [ -f $$FILE ] ; then \ - $(INSTALL_TOUCH) $$FILE \ - $(data-prefix)/$(data-dir)/sqlite/opensips/`basename "$$FILE"` ; \ - $(INSTALL_CFG) $$FILE \ - $(data-prefix)/$(data-dir)/sqlite/opensips/`basename "$$FILE"` ; \ + $(INSTALL_TOUCH) $$FILE \ + $(data-prefix)/$(data-dir)/sqlite/`basename "$$FILE"` ; \ + $(INSTALL_CFG) $$FILE \ + $(data-prefix)/$(data-dir)/sqlite/`basename "$$FILE"` ; \ fi ;\ - done ;\ + done ; \ fi From 40308f9be1c5984ad032ab9681b6ed5dfd06196e Mon Sep 17 00:00:00 2001 From: Jarrod Baumann Date: Thu, 16 Apr 2015 20:04:12 +0000 Subject: [PATCH 4/4] Reset default /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin references back to original script (had copied from an already installed file) --- scripts/opensipsctl | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scripts/opensipsctl b/scripts/opensipsctl index e2a9ae2c10f..fffde93cfb8 100755 --- a/scripts/opensipsctl +++ b/scripts/opensipsctl @@ -6,7 +6,7 @@ # #=================================================================== -PATH=$PATH://sbin// +PATH=$PATH:/usr/local/sbin/ # for testing only, please don't enable this in production environments # as this introduce security risks @@ -15,8 +15,8 @@ TEST="false" if [ -f /etc/opensips/opensipsctlrc ]; then . /etc/opensips/opensipsctlrc fi -if [ -f //etc/opensips//opensipsctlrc ]; then - . //etc/opensips//opensipsctlrc +if [ -f /usr/local/etc/opensips/opensipsctlrc ]; then + . /usr/local/etc/opensips/opensipsctlrc fi if [ -f ~/.opensipsctlrc ]; then . ~/.opensipsctlrc @@ -46,7 +46,7 @@ fi ### force values for variables in this section # you better set the variables in ~/.opensipsctlrc if [ -z $ETCDIR ] ; then - ETCDIR="//etc/opensips/" + ETCDIR="/usr/local/etc/opensips" else # Fix relative paths [ "${ETCDIR:0:1}" != "/" ] && ETCDIR=$PWD/$ETCDIR @@ -60,7 +60,7 @@ if [ -z $MYDIR ] ; then fi if [ -z $MYLIBDIR ] ; then - MYLIBDIR="//lib64/opensips/opensipsctl" + MYLIBDIR="/usr/local/lib/opensips/opensipsctl" if [ ! -d $MYLIBDIR ]; then MYLIBDIR=$MYDIR fi @@ -82,6 +82,7 @@ fi # now="now()" +# ##### ------------------------------------------------ ##### ### DBENGINE # @@ -119,9 +120,9 @@ case $DBENGINE in fi ;; SQLITE|db_sqlite|SQLITE|sqlite) - if [ -f "$MYLIBDIR/opensipsctl.sqlite" ]; then + if [ -f "$MYLIBDIR/opensipsctl.sqlite" ]; then . "$MYLIBDIR/opensipsctl.sqlite" - DBENGINELOADED=1 + DBENGINELOADED=1 now="datetime('now','localtime')" fi ;;