summaryrefslogtreecommitdiff
path: root/pcr/zoneminder/zminit.arch
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/zoneminder/zminit.arch')
-rw-r--r--pcr/zoneminder/zminit.arch143
1 files changed, 143 insertions, 0 deletions
diff --git a/pcr/zoneminder/zminit.arch b/pcr/zoneminder/zminit.arch
new file mode 100644
index 000000000..01b6658a7
--- /dev/null
+++ b/pcr/zoneminder/zminit.arch
@@ -0,0 +1,143 @@
+#!/bin/sh
+
+
+ZM_CONFIG=/etc/zm.conf
+
+
+
+loadcfg() {
+ if [ -f $ZM_CONFIG ]; then
+ . $ZM_CONFIG
+ else
+ echo "ERROR: $ZM_CONFIG not found."
+ exit 1
+ fi
+ }
+chkmysql(){
+ #FIXME
+ /etc/rc.d/mysqld restart || (echo "mysql is not availible" && exit 1 )
+ }
+
+getmylogin(){
+ echo "Enter MySQL Administrator username"
+ echo "(Default: root and password is blank)"
+ echo -n "MySQL Admin: "
+ read MYADMIN
+ echo -n "Password: "
+ read MYPASS
+ if [ "X$MYPASS" != "X" ]; then MYPASS="-p$MYPASS"; fi
+ echo "\q" |mysql -u $MYADMIN $MYPASS || exit 0
+
+ }
+
+checkdb()
+{
+ # Check database exisits and version
+ exists=$(echo "show databases" |mysql -u $MYADMIN "$MYPASS" |grep zm)
+ if [ "$exists" = "zm" ]; then
+ OLD_VERSION=$(echo "select Value from Config where Name = 'ZM_DYN_DB_VERSION';" | mysql -u $MYADMIN $MYPASS zm |grep -v '^Value')
+
+ case $OLD_VERSION in
+ "")
+ echo "A zm database exists, but the version is unknown"
+ echo "Updating is unlikely to succeed"
+ ;;
+ "$ZM_VERSION")
+ echo "The zm database appears to be up to date"
+ echo "If this is incorrect, edit $ZM_CONFIG to reflect the current version"
+ ;;
+ *)
+ echo "A database fron zm-$OLD_VERSION exists already"
+ ;;
+ esac
+
+ while [ true ]
+ do
+ echo "Choose one of the following options:"
+ echo "[U]pdate the database"
+ echo "[D]rop the old database and reinitialize"
+ echo "[E]xit and do nothing"
+ read OPTION
+ case $OPTION in
+ "U"|"u")
+ /etc/rc.d/zm restart
+ exit 0
+ ;;
+ "D"|"d")
+ echo "drop database zm;"|mysql -u $MYADMIN $MYPASS
+ return
+ ;;
+ "E"|"e")
+ exit 0
+ ;;
+ esac
+ done
+ fi
+}
+
+checkcfg(){
+for n in ZM_DB_HOST ZM_DB_NAME ZM_DB_USER ZM_DB_PASS; do
+ eval "val=\$$n"
+ if [ "$val" = "" ]; then
+ echo "ERROR($ZM_CONFIG): $n should not be empty."
+ echo "Enter a $n for ZM to use the Database."
+ if [ "$n" = "ZM_DB_PASS" ]; then
+ echo -n "Will not echo on screen $n : "
+ stty -echo # Turns off screen echo.
+ read newval
+ stty echo # Restores screen echo.
+ echo ""
+ ### The following can be used to generate a random password
+ # randstr newval 16
+ else
+ echo -n "$n : "
+ read newval
+ fi
+ cp $ZM_CONFIG /tmp/$$ &&
+ sed 's/^'$n='.*$/'$n=$newval'/g' /tmp/$$ >$ZM_CONFIG
+
+ fi
+done
+
+if [ "$ZM_DB_HOST" = "localhost" ]; then
+ ClientHost=localhost
+else
+ ClientHost=`hostname`
+fi
+}
+
+reloadcfg(){
+loadcfg
+}
+
+initdb(){
+sql=/tmp/zm.crdb.sql
+echo "" >$sql
+chmod 600 $sql
+
+echo "CREATE DATABASE $ZM_DB_NAME;" >>$sql
+echo "USE $ZM_DB_NAME;" >>$sql
+
+echo "GRANT all on $ZM_DB_NAME.* TO '$ZM_DB_USER'@'$ClientHost' IDENTIFIED BY '$ZM_DB_PASS';" >>$sql
+
+cat $sql | mysql -B -h $ZM_DB_HOST -u $MYADMIN $MYPASS
+rm -f $sql
+
+cat $ZM_PATH_UPDATE/zm_create.sql | mysql -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME
+( cd $ZM_PATH_UPDATE; perl $ZM_PATH_BIN/zmupdate.pl -f )
+
+ $ZM_PATH_UPDATE/customdb $ZM_DB_HOST $ZM_DB_NAME $ZM_DB_USER $ZM_DB_PASS
+}
+
+
+
+loadcfg
+getmylogin
+checkdb
+checkcfg
+reloadcfg
+initdb
+
+
+
+