Просмотр исходного кода

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 лет назад
Родитель
Сommit
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
 		exit $?
 		;;
+	dbuid)
+		dbuid_create $DBNAME
+		exit $?
+		;;
 	drop)
 		# delete kamailio database
 		# create new database structures
@@ -398,6 +402,48 @@ case $1 in
 		kamailio_create $DBNAME
 		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)
 		shift
 		kamailio_berkeley "$@"

+ 23 - 10
utils/kamctl/kamdbctl.base

@@ -29,18 +29,22 @@ USERCOL=${USERCOL:-username}
 
 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 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
 		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 
 		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
@@ -69,12 +73,17 @@ 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}
+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
-    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 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)
 
        if you want to manipulate database as other database user than
        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 ..."
 
-	sql_query "" "CREATE DATACASE $1 CHARACTER SET $CHARSET;"
+	sql_query "" "CREATE DATABASE $1 CHARACTER SET $CHARSET;"
 
 	if [ $? -ne 0 ] ; then
 		merr "Creating database $1 failed!"
@@ -172,128 +172,190 @@ kamailio_db_grant () # pars: <database name>
 	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
-		merr "Creating core tables failed!"
+		merr "revoking privileges to database $1 failed!"
 		exit 1
 	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
 	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
 
 
 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
 
+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)
 {
-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"
 
 }