Преглед на файлове

kamctl: added option to creat uid-related tables

- few more options to be able to create database only, grant or revoke
  privileges from command line
- the extensions were added for mysql
Daniel-Constantin Mierla преди 12 години
родител
ревизия
1fd2b4ec86
променени са 3 файла, в които са добавени 215 реда и са изтрити 94 реда
  1. 46 0
      utils/kamctl/kamdbctl
  2. 23 10
      utils/kamctl/kamdbctl.base
  3. 146 84
      utils/kamctl/kamdbctl.mysql

+ 46 - 0
utils/kamctl/kamdbctl

@@ -372,6 +372,10 @@ case $1 in
 		extra_create $DBNAME
 		extra_create $DBNAME
 		exit $?
 		exit $?
 		;;
 		;;
+	dbuid)
+		dbuid_create $DBNAME
+		exit $?
+		;;
 	drop)
 	drop)
 		# delete kamailio database
 		# delete kamailio database
 		# create new database structures
 		# create new database structures
@@ -398,6 +402,48 @@ case $1 in
 		kamailio_create $DBNAME
 		kamailio_create $DBNAME
 		exit $?
 		exit $?
 		;;
 		;;
+	dbonly)
+		# create only an empty database
+		if [ "$USED_DBENGINE" != "mysql" ] ; then
+			merr "$USED_DBENGINE db engine doesn't support this operation"
+			exit 1
+		fi
+		shift
+		if [ $# -eq 1 ] ; then
+			DBNAME="$1"
+		fi
+
+		kamailio_db_create $DBNAME
+		exit $?
+		;;
+	grant)
+		# grant privileges to database
+		if [ "$USED_DBENGINE" != "mysql" ] ; then
+			merr "$USED_DBENGINE db engine doesn't support this operation"
+			exit 1
+		fi
+		shift
+		if [ $# -eq 1 ] ; then
+			DBNAME="$1"
+		fi
+
+		kamailio_db_grant $DBNAME
+		exit $?
+		;;
+	revoke)
+		# revoke privileges to database
+		if [ "$USED_DBENGINE" != "mysql" ] ; then
+			merr "$USED_DBENGINE db engine doesn't support this operation"
+			exit 1
+		fi
+		shift
+		if [ $# -eq 1 ] ; then
+			DBNAME="$1"
+		fi
+
+		kamailio_db_revoke $DBNAME
+		exit $?
+		;;
 	bdb|db_berkeley)
 	bdb|db_berkeley)
 		shift
 		shift
 		kamailio_berkeley "$@"
 		kamailio_berkeley "$@"

+ 23 - 10
utils/kamctl/kamdbctl.base

@@ -29,18 +29,22 @@ USERCOL=${USERCOL:-username}
 
 
 INSTALL_EXTRA_TABLES=${INSTALL_EXTRA_TABLES:-ask}
 INSTALL_EXTRA_TABLES=${INSTALL_EXTRA_TABLES:-ask}
 INSTALL_PRESENCE_TABLES=${INSTALL_PRESENCE_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
 # Used by dbtext and db_berkeley to define tables to be created, used by
 # postgres to do the grants
 # 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 re_grp trusted address missed_calls usr_preferences
-		aliases silo dialog dialog_vars dispatcher dialplan}
+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}
 EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy
 EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy
 		carrierroute carrier_name domain_name carrierfailureroute userblacklist
 		carrierroute carrier_name domain_name carrierfailureroute userblacklist
-		globalblacklist htable purplemap uacreg pl_pipes mtree mtrees}
+		globalblacklist htable purplemap uacreg pl_pipes mtree mtrees
+		sca_subscriptions}
 PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap 
 PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap 
 		pua rls_presentity rls_watchers}
 		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
 # SQL definitions
 # If you change this definitions here, then you must change them
 # If you change this definitions here, then you must change them
@@ -69,12 +73,17 @@ GREP=${GREP:-grep}
 SED=${SED:-sed}
 SED=${SED:-sed}
 
 
 # define what modules should be installed
 # 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}
+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}
+
+PRESENCE_MODULES=${PRESENCE_MODULES:-presence rls}
+
 EXTRA_MODULES=${EXTRA_MODULES:-imc cpl siptrace domainpolicy carrierroute
 EXTRA_MODULES=${EXTRA_MODULES:-imc cpl siptrace domainpolicy carrierroute
-    userblacklist htable purple uac pipelimit mtree}
+		userblacklist htable purple uac pipelimit mtree sca}
+
+DBUID_MODULES=${UID_MODULES:-uid_auth_db uid_avp_db uid_domain uid_gflags
+		uid_uri_db}
 
 
 ############################################################
 ############################################################
 
 
@@ -94,6 +103,10 @@ usage: $COMMAND create <db name or db_path, optional> ...(creates a new database
        $COMMAND migrate <old_db> <new_db> ...............(migrates DB from 1.2 to 1.3, not implemented yet!)
        $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 presence ................................(adds the presence related tables)
        $COMMAND extra ...................................(adds the extra 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)
 
 
        if you want to manipulate database as other database user than
        if you want to manipulate database as other database user than
        root, want to change database name from default value "$DBNAME",
        root, want to change database name from default value "$DBNAME",

+ 146 - 84
utils/kamctl/kamdbctl.mysql

@@ -136,7 +136,7 @@ kamailio_db_create () # pars: <database name>
 
 
 	minfo "creating database $1 ..."
 	minfo "creating database $1 ..."
 
 
-	sql_query "" "CREATE DATACASE $1 CHARACTER SET $CHARSET;"
+	sql_query "" "CREATE DATABASE $1 CHARACTER SET $CHARSET;"
 
 
 	if [ $? -ne 0 ] ; then
 	if [ $? -ne 0 ] ; then
 		merr "Creating database $1 failed!"
 		merr "Creating database $1 failed!"
@@ -172,128 +172,190 @@ kamailio_db_grant () # pars: <database name>
 	fi
 	fi
 }
 }
 
 
-kamailio_create () # pars: <database name>
+kamailio_db_revoke () # pars: <database name>
 {
 {
-if [ $# -ne 1 ] ; then
-	merr "kamailio_create function takes one param"
-	exit 1
-fi
+	if [ $# -ne 1 ] ; then
+		merr "kamailio_db_revoke function takes one param"
+		exit 1
+	fi
 
 
-kamailio_db_create $1
+	minfo "revoking privileges to database $1 ..."
 
 
-kamailio_db_grant $1
+	# Users: kamailio is the regular user, kamailioro only for reading
+	sql_query "" "REVOKE ALL PRIVILEGES ON $1.* FROM '${DBRWUSER}'@'$DBHOST';
+		REVOKE SELECT ON $1.* FROM '${DBROUSER}'@'$DBHOST';"
 
 
-for TABLE in $STANDARD_MODULES; do
-	mdbg "Creating core table: $TABLE"
-	sql_query $1 < $DB_SCHEMA/$TABLE-create.sql
 	if [ $? -ne 0 ] ; then
 	if [ $? -ne 0 ] ; then
-		merr "Creating core tables failed!"
+		merr "revoking privileges to database $1 failed!"
 		exit 1
 		exit 1
 	fi
 	fi
-done
 
 
-minfo "Core Kamailio tables succesfully created."
+	if [ "$DBHOST" != "localhost" ] ; then
+		sql_query "" "REVOKE ALL PRIVILEGES ON $1.* FROM '$DBRWUSER'@'localhost';
+			REVOKE SELECT ON $1.* FROM '$DBROUSER'@'localhost';"
+		if [ $? -ne 0 ] ; then
+			merr "granting localhost privileges to database $1 failed!"
+			exit 1
+		fi
+	fi
+}
 
 
-if [ -e $DB_SCHEMA/extensions-create.sql ]
-then
-	minfo "Creating custom extensions tables"
-	sql_query $1 < $DB_SCHEMA/extensions-create.sql
-	if [ $? -ne 0 ] ; then
-		merr "Creating custom extensions tables failed!"
+
+kamailio_create () # pars: <database name>
+{
+	if [ $# -ne 1 ] ; then
+		merr "kamailio_create function takes one param"
 		exit 1
 		exit 1
 	fi
 	fi
-fi
 
 
-get_answer $INSTALL_PRESENCE_TABLES "Install presence related tables? (y/n): "
-if [ "$ANSWER" = "y" ]; then
-	presence_create $1
-fi
+	kamailio_db_create $1
 
 
-get_answer $INSTALL_EXTRA_TABLES "Install tables for $EXTRA_MODULES? (y/n): "
-if [ "$ANSWER" = "y" ]; then
-	HAS_EXTRA="yes"
-	extra_create $1
-fi
-} # kamailio_create
+	kamailio_db_grant $1
 
 
+	standard_create $1
 
 
-presence_create () # pars: <database name>
+	get_answer $INSTALL_PRESENCE_TABLES "Install presence related tables? (y/n): "
+	if [ "$ANSWER" = "y" ]; then
+		presence_create $1
+	fi
+
+	get_answer $INSTALL_EXTRA_TABLES "Install tables for $EXTRA_MODULES? (y/n): "
+	if [ "$ANSWER" = "y" ]; then
+		HAS_EXTRA="yes"
+		extra_create $1
+	fi
+
+	get_answer $INSTALL_DBUID_TABLES "Install tables for $DBUID_MODULES? (y/n): "
+	if [ "$ANSWER" = "y" ]; then
+		HAS_EXTRA="yes"
+		dbuid_create $1
+	fi
+} # end kamailio_create
+
+standard_create () # pars: <database name>
 {
 {
-if [ $# -ne 1 ] ; then
-	merr "presence_create function takes one param"
-	exit 1
-fi
+	if [ $# -ne 1 ] ; then
+		merr "standard_create function takes one param"
+		exit 1
+	fi
 
 
-minfo "creating presence tables into $1 ..."
+	minfo "creating standard tables into $1 ..."
 
 
-sql_query $1 < $DB_SCHEMA/presence-create.sql
+	for TABLE in $STANDARD_MODULES; do
+		mdbg "Creating core table: $TABLE"
+		sql_query $1 < $DB_SCHEMA/$TABLE-create.sql
+		if [ $? -ne 0 ] ; then
+			merr "Creating core tables failed at $TABLE!"
+			exit 1
+		fi
+	done
 
 
-if [ $? -ne 0 ] ; then
-	merr "Failed to create presence tables!"
-	exit 1
-fi
+	minfo "Core Kamailio tables succesfully created."
 
 
-sql_query $1 < $DB_SCHEMA/rls-create.sql
+	if [ -e $DB_SCHEMA/extensions-create.sql ]
+	then
+		minfo "Creating custom extensions tables"
+		sql_query $1 < $DB_SCHEMA/extensions-create.sql
+		if [ $? -ne 0 ] ; then
+			merr "Creating custom extensions tables failed!"
+			exit 1
+		fi
+	fi
+}  # end standard_create
 
 
-if [ $? -ne 0 ] ; then
-	merr "Failed to create rls-presence tables!"
-	exit 1
-fi
 
 
-minfo "Presence tables succesfully created."
+presence_create () # pars: <database name>
+{
+	if [ $# -ne 1 ] ; then
+		merr "presence_create function takes one param"
+		exit 1
+	fi
+
+	minfo "creating presence tables into $1 ..."
+
+	for TABLE in $PRESENCE_MODULES; do
+		mdbg "Creating presence tables for $TABLE"
+		sql_query $1 < $DB_SCHEMA/$TABLE-create.sql
+		if [ $? -ne 0 ] ; then
+			merr "Creating presence tables failed at $TABLE!"
+			exit 1
+		fi
+	done
+
+	minfo "Presence tables succesfully created."
 }  # end presence_create
 }  # end presence_create
 
 
 
 
 extra_create () # pars: <database name>
 extra_create () # pars: <database name>
 {
 {
-if [ $# -ne 1 ] ; then
-	merr "extra_create function takes one param"
-	exit 1
-fi
+	if [ $# -ne 1 ] ; then
+		merr "extra_create function takes one param"
+		exit 1
+	fi
 
 
-minfo "creating extra tables into $1 ..."
+	minfo "creating extra tables into $1 ..."
 
 
-for TABLE in $EXTRA_MODULES; do
-	mdbg "Creating extra table: $TABLE"
-	sql_query $1 < $DB_SCHEMA/$TABLE-create.sql
-	if [ $? -ne 0 ] ; then
-		merr "Creating extra tables failed at $TABLE!"
-		exit 1
-		fi
-	done
-minfo "Extra tables succesfully created."
+	for TABLE in $EXTRA_MODULES; do
+		mdbg "Creating extra table: $TABLE"
+		sql_query $1 < $DB_SCHEMA/$TABLE-create.sql
+		if [ $? -ne 0 ] ; then
+			merr "Creating extra tables failed at $TABLE!"
+			exit 1
+			fi
+		done
+	minfo "Extra tables succesfully created."
 }  # end extra_create
 }  # end extra_create
 
 
+dbuid_create () # pars: <database name>
+{
+	if [ $# -ne 1 ] ; then
+		merr "dbuid_create function takes one param"
+		exit 1
+	fi
+
+	minfo "creating uid tables into $1 ..."
+
+	for TABLE in $DBUID_MODULES; do
+		mdbg "Creating uid table: $TABLE"
+		sql_query $1 < $DB_SCHEMA/$TABLE-create.sql
+		if [ $? -ne 0 ] ; then
+			merr "Creating uid tables failed at $TABLE!"
+			exit 1
+			fi
+		done
+	minfo "UID tables succesfully created."
+}  # end uid_create
+
 
 
 migrate_table () # 4 paremeters (dst_table, dst_cols, src_table, src_cols)
 migrate_table () # 4 paremeters (dst_table, dst_cols, src_table, src_cols)
 {
 {
-if [ $# -ne 4 ] ; then
-	merr "migrate_table function takes 4 params $@"
-	exit 1
-fi
+	if [ $# -ne 4 ] ; then
+		merr "migrate_table function takes 4 params $@"
+		exit 1
+	fi
 
 
-src_cols=`echo $4 | sed s/?/$3./g `
+	src_cols=`echo $4 | sed s/?/$3./g `
 
 
-X=`sql_query "" "INSERT into $1 ($2) SELECT $src_cols from $3;" 2>&1`
+	X=`sql_query "" "INSERT into $1 ($2) SELECT $src_cols from $3;" 2>&1`
 
 
-if [ $? -ne 0 ] ; then
-	echo $X | $GREP "ERROR 1146" > /dev/null
-	if [ $? -eq 0 ] ; then 
-		echo " -- Migrating $3 to $1.....SKIPPED (no source)"
-		return 0
-	fi
-	echo "ERROR: failed to migrate $3 to $1!!!"
-	echo -n "Skip it and continue (y/n)? "
-	read INPUT
-	if [ "$INPUT" = "y" ] || [ "$INPUT" = "Y" ]
-	then
-		return 0
-	fi
+	if [ $? -ne 0 ] ; then
+		echo $X | $GREP "ERROR 1146" > /dev/null
+		if [ $? -eq 0 ] ; then 
+			echo " -- Migrating $3 to $1.....SKIPPED (no source)"
+			return 0
+		fi
+		echo "ERROR: failed to migrate $3 to $1!!!"
+		echo -n "Skip it and continue (y/n)? "
+		read INPUT
+		if [ "$INPUT" = "y" ] || [ "$INPUT" = "Y" ]
+		then
+			return 0
+		fi
 
 
-	exit 1;
-fi
+		exit 1;
+	fi
 
 
-minfo " -- Migrating $3 to $1.....OK"
+	minfo " -- Migrating $3 to $1.....OK"
 
 
 }
 }