/usr/lib/x86_64-linux-gnu/kamailio/kamctl/kamdbctl.pgsql is in kamailio-postgres-modules 4.2.0-2+deb8u3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 | # $Id$
#
# Script for adding and dropping Kamailio Postgres tables
#
# History:
# 2006-05-16 added ability to specify MD5 from a configuration file
# FreeBSD does not have the md5sum function (norm)
# 2006-07-14 Corrected syntax from MySQL to Postgres (norm)
# moved INDEX creation out of CREATE table statement into
# CREATE INDEX (usr_preferences, trusted)
# auto_increment isn't valid in Postgres, replaced with
# local AUTO_INCREMENT
# datetime isn't valid in Postgres, replaced with local DATETIME
# split GRANTs for SERWeb tables so that it is only executed
# if SERWeb tables are created
# added GRANTs for re_grp table
# added CREATE pdt table (from PDT module)
# corrected comments to indicate Postgres as opposed to MySQL
# made last_modified/created stamps consistent to now() using
# local TIMESTAMP
# 2006-10-19 Added address table (bogdan)
# 2006-10-27 subscriber table cleanup; some columns are created only if
# serweb is installed (bogdan)
# 2007-01-26 added seperate installation routine for presence related tables
# and fix permissions for the SERIAL sequences.
# 2007-05-21 Move SQL database definitions out of this script (henning)
# 2007-05-31 Move common definitions to kamdbctl.base file (henningw)
#
# 2007-06-11 Use a common control tool for database tasks, like the kamctl
# path to the database schemas
DATA_DIR="/usr/share/kamailio/"
if [ -d "$DATA_DIR/postgres" ] ; then
DB_SCHEMA="$DATA_DIR/postgres"
else
DB_SCHEMA="./postgres"
fi
#################################################################
# config vars
#################################################################
# full privileges Postgres user
if [ -z "$DBROOTUSER" ]; then
DBROOTUSER="postgres"
if [ ! -r ~/.pgpass ]; then
merr "~./pgpass does not exist, please create this file and support proper credentials for user postgres."
merr "Note: you need at least postgresql>= 7.3"
exit 1
fi
fi
CMD="psql -q -h $DBHOST -U $DBROOTUSER "
DUMP_CMD="pg_dump -h $DBHOST -U $DBROOTUSER -c"
#################################################################
# execute sql command with optional db name
sql_query()
{
if [ $# -gt 1 ] ; then
if [ -n "$1" ]; then
DB="$1"
else
DB=""
fi
shift
$CMD -d $DB -c "$@"
else
$CMD "$@"
fi
}
kamailio_drop() # pars: <database name>
{
if [ $# -ne 1 ] ; then
merr "kamailio_drop function takes two params"
exit 1
fi
sql_query "template1" "drop database \"$1\";"
if [ $? -ne 0 ] ; then
merr "Dropping database $1 failed!"
exit 1
fi
# postgresql users are not dropped automatically
sql_query "template1" "drop user \"$DBRWUSER\"; drop user \"$DBROUSER\";"
if [ $? -ne 0 ] ; then
mwarn "Could not drop $DBRWUSER or $DBROUSER users, try to continue.."
else
minfo "Database user deleted"
fi
minfo "Database $1 dropped"
} #kamailio_drop
kamailio_create () # pars: <database name>
{
if [ $# -ne 1 ] ; then
merr "kamailio_create function takes one param"
exit 1
fi
minfo "creating database $1 ..."
sql_query "template1" "create database \"$1\";"
if [ $? -ne 0 ] ; then
merr "Creating database failed!"
exit 1
fi
sql_query "$1" "CREATE FUNCTION "concat" (text,text) RETURNS text AS 'SELECT \$1 || \$2;' LANGUAGE 'sql';
CREATE FUNCTION "rand" () RETURNS double precision AS 'SELECT random();' LANGUAGE 'sql';"
# emulate mysql proprietary functions used by the lcr module in postgresql
if [ $? -ne 0 ] ; then
merr "Creating mysql emulation functions failed!"
exit 1
fi
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!"
exit 1
fi
done
sql_query "$1" "CREATE USER $DBRWUSER WITH PASSWORD '$DBRWPW';
CREATE USER $DBROUSER WITH PASSWORD '$DBROPW';"
if [ $? -ne 0 ] ; then
mwarn "Create user in database failed, perhaps they allready exist? Try to continue.."
fi
for TABLE in $STANDARD_TABLES; do
sql_query "$1" "GRANT ALL PRIVILEGES ON TABLE $TABLE TO $DBRWUSER;"
sql_query "$1" "GRANT SELECT ON TABLE $TABLE TO $DBROUSER;"
if [ $TABLE != "version" ] ; then
sql_query "$1" "GRANT ALL PRIVILEGES ON TABLE "$TABLE"_id_seq TO $DBRWUSER;"
sql_query "$1" "GRANT SELECT ON TABLE "$TABLE"_id_seq TO $DBROUSER;"
fi
if [ $? -ne 0 ] ; then
merr "Grant privileges to standard tables failed!"
exit 1
fi
done
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
minfo "Core Kamailio tables succesfully created."
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
extra_create $1
fi
} # kamailio_create
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 ..."
sql_query "$1" < $DB_SCHEMA/presence-create.sql
if [ $? -ne 0 ] ; then
merr "Failed to create presence tables!"
exit 1
fi
sql_query "$1" < $DB_SCHEMA/rls-create.sql
if [ $? -ne 0 ] ; then
merr "Failed to create rls-presence tables!"
exit 1
fi
for TABLE in $PRESENCE_TABLES; do
sql_query "$1" "GRANT ALL PRIVILEGES ON TABLE $TABLE TO $DBRWUSER;"
sql_query "$1" "GRANT SELECT ON TABLE $TABLE TO $DBROUSER;"
sql_query "$1" "GRANT ALL PRIVILEGES ON TABLE "$TABLE"_id_seq TO $DBRWUSER;"
sql_query "$1" "GRANT SELECT ON TABLE "$TABLE"_id_seq TO $DBROUSER;"
if [ $? -ne 0 ] ; then
merr "Grant privileges to presence tables failed!"
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
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!"
exit 1
fi
done
for TABLE in $EXTRA_TABLES; do
sql_query "$1" "GRANT ALL PRIVILEGES ON TABLE $TABLE TO $DBRWUSER;"
sql_query "$1" "GRANT SELECT ON TABLE $TABLE TO $DBROUSER;"
if [ $TABLE != "route_tree" ] ; then
sql_query "$1" "GRANT ALL PRIVILEGES ON TABLE "$TABLE"_id_seq TO $DBRWUSER;"
sql_query "$1" "GRANT SELECT ON TABLE "$TABLE"_id_seq TO $DBROUSER;"
fi
if [ $? -ne 0 ] ; then
merr "Grant privileges to extra tables failed!"
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
|