diff --git a/Makefile b/Makefile index 48567b662be..e31884b467d 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,29 @@ 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/sbin#$(bin-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 $(data-prefix)/$(data-dir)/sqlite ; \ + for FILE in $(wildcard scripts/sqlite/*) ; do \ + if [ -f $$FILE ] ; then \ + $(INSTALL_TOUCH) $$FILE \ + $(data-prefix)/$(data-dir)/sqlite/`basename "$$FILE"` ; \ + $(INSTALL_CFG) $$FILE \ + $(data-prefix)/$(data-dir)/sqlite/`basename "$$FILE"` ; \ + fi ;\ + done ; \ + fi .PHONY: install-doc install-app-doc install-modules-doc diff --git a/scripts/opensipsctl b/scripts/opensipsctl index 367d2deaa1f..fffde93cfb8 100755 --- a/scripts/opensipsctl +++ b/scripts/opensipsctl @@ -76,6 +76,12 @@ else exit -1 fi +##### ------------------------------------------------ ##### +### define default parameters that may be overridden by +### different database engines +# +now="now()" + # ##### ------------------------------------------------ ##### ### DBENGINE @@ -113,6 +119,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 +318,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 +1020,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..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, or DBTEXT, by default none is loaded +## 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 @@ -23,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