Bug 14533: remove CREATE USER when koha-create --use-db
[koha.git] / debian / scripts / koha-create
index 263ee14..a12cafc 100755 (executable)
@@ -52,7 +52,7 @@ Options:
   --marcflavor flavor       Set the MARC flavor. Valid values are marc21 (default),
                             normarc and unimarc.
   --zebralang lang          Choose the primary language for Zebra indexing. Valid
-                            values are en (default), es, fr, gr, nb, ru and uk.
+                            values are cs, en (default), es, fr, gr, nb, ru and uk.
   --auth-idx idx_mode       Set the indexing mode for authority records. Valid
                             values are dom (default) and grs1.
   --biblio-idx idx_mode     Set the indexing mode for bibliographic records.
@@ -66,6 +66,7 @@ Options:
   --defaultsql some.sql     Specify a default SQL file to be loaded on the DB.
   --configfile cfg_file     Specify an alternate config file for reading default values.
   --passwdfile passwd       Specify an alternate passwd file.
+  --dbhost host             Enforce the use of the specified DB server
   --database dbname         Enforce the use of the specified DB name (64 char limit)
   --adminuser n             Explicit the admin user ID in the DB. Relevant in
                             conjunction with --defaultsql and --populate-db.
@@ -105,6 +106,7 @@ generate_config_file() {
         -e "s/__END_BIBLIOS_RETRIEVAL_INFO__/`echo $END_BIBLIOS_RETRIEVAL_INFO`/g" \
         -e "s/__START_AUTHORITIES_RETRIEVAL_INFO__/`echo $START_AUTHORITIES_RETRIEVAL_INFO`/g" \
         -e "s/__END_AUTHORITIES_RETRIEVAL_INFO__/`echo $END_AUTHORITIES_RETRIEVAL_INFO`/g" \
+        -e "s/__API_SECRET__/$API_SECRET/g" \
         -e "s/__DB_NAME__/$mysqldb/g" \
         -e "s/__DB_HOST__/$mysqlhost/g" \
         -e "s/__DB_USER__/$mysqluser/g" \
@@ -331,19 +333,31 @@ enable_sru_server()
 check_letsencrypt()
 {
     if [ $(dpkg-query -W -f='${Status}' letsencrypt 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
+        set +e
         apt-cache show letsencrypt &>/dev/null
-        if [ $? -eq 0 ]; then
+        local aptcacheshow=$?
+        set -e
+        if [ $aptcacheshow -eq 0 ]; then
                 read -r -p "The letsencrypt package is not installed. Do it now?  [y/N] " response
                 if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]; then
-                    apt-get install -y letsencrypt
+                    local debrelease="$(lsb_release -c -s)"
+                    if [ $debrelease = "jessie" ]; then
+                        apt-get install -y -t jessie-backports letsencrypt
+                    else
+                        apt-get install -y letsencrypt
+                    fi
                 else
                     die "You have to install letsencrypt to use the --letsencrypt parameter."
                 fi
         else
             echo "No installation candidate available for package letsencrypt."
-            read -r -p "If you have a symlink from /usr/bin/letsencrypt to letsencrypt-auto, it should work. [y/N] " response
-            if [[ ! $response =~ ^([yY][eE][sS]|[yY])$ ]]; then
-                die "You have to install letsencrypt to use the --letsencrypt parameter."
+            if [[ -f /usr/bin/letsencrypt ]]; then
+                read -r -p "If you have a symlink from /usr/bin/letsencrypt to letsencrypt-auto, it should work. [y/N] " response
+                if [[ ! $response =~ ^([yY][eE][sS]|[yY])$ ]]; then
+                    die "You have to install letsencrypt to use the --letsencrypt parameter."
+                fi
+            else
+                die "You can create a symlink from /usr/bin/letsencrypt to letsencrypt-auto."
             fi
         fi
     fi
@@ -391,7 +405,8 @@ DEFAULT_MEMCACHED_PREFIX="koha_"
 UPLOAD_PATH_BASE="/var/lib/koha"
 UPLOAD_DIR="uploads"
 UPLOAD_PATH=""
-
+# Generate a randomizaed API secret
+API_SECRET="$(pwgen -s 64 1)"
 # SRU server variables
 ENABLE_SRU="no"
 SRU_SERVER_PORT=""
@@ -418,7 +433,7 @@ fi
 
 [ $# -ge 1 ] && [ $# -le 16 ] || ( usage ; die "Error: wrong parameters" )
 
-TEMP=`getopt -o chrpm:l:d:f:b:a: -l create-db,request-db,populate-db,use-db,use-memcached,enable-sru,sru-port:,help,marcflavor:,auth-idx:,biblio-idx:,zebralang:,defaultsql:,configfile:,passwdfile:,database:,adminuser:,memcached-servers:,memcached-prefix:,upload-path:,letsencrypt, \
+TEMP=`getopt -o chrpm:l:d:f:b:a: -l create-db,request-db,populate-db,use-db,use-memcached,enable-sru,sru-port:,help,marcflavor:,auth-idx:,biblio-idx:,zebralang:,defaultsql:,configfile:,passwdfile:,dbhost:,database:,adminuser:,memcached-servers:,memcached-prefix:,upload-path:,letsencrypt, \
      -n "$0" -- "$@"`
 
 # Note the quotes around `$TEMP': they are essential!
@@ -468,6 +483,8 @@ while true ; do
             CLO_PASSWDFILE="$2" ; shift 2 ;;
         -b|--database)
             CLO_DATABASE="$2" ; shift 2 ;;
+        --dbhost)
+            CLO_DBHOST="$2" ; shift 2 ;;
         -a|--adminuser)
             CLO_ADMINUSER="$2" ; shift 2 ;;
         --enable-sru)
@@ -536,6 +553,8 @@ fi
 
 set_authorities_indexing_mode $AUTHORITIES_INDEXING_MODE $ZEBRA_MARC_FORMAT
 
+[ $# -ge 1 ] || ( usage ; die "Missing instance name..." )
+
 name="$1"
 
 set_upload_path $name
@@ -574,7 +593,9 @@ opacdomain="$OPACPREFIX$name$OPACSUFFIX$DOMAIN"
 intradomain="$INTRAPREFIX$name$INTRASUFFIX$DOMAIN"
 
 # Check everything is ok with letsencrypt, die otherwise
-check_letsencrypt
+if [ "$CLO_LETSENCRYPT" = "yes" ]; then
+    check_letsencrypt
+fi
 
 if [ -f $PASSWDFILE ] && [ `cat $PASSWDFILE | grep "^$name:"` ]
 then
@@ -582,6 +603,7 @@ then
     mysqluser=`echo $passwdline | cut -d ":" -f 2`
     mysqlpwd=`echo $passwdline | cut -d ":" -f 3`
     mysqldb=`echo $passwdline | cut -d ":" -f 4`
+    mysqlhost=`echo $passwdline | cut -d ":" -f 5`
 fi
 
 # The order of precedence for MySQL database name is:
@@ -590,6 +612,7 @@ if [ "$mysqldb" = "" ]
 then
     mysqldb="koha_$name"
 fi
+
 if [ "$CLO_DATABASE" != "" ]
 then
     mysqldb="$CLO_DATABASE"
@@ -599,7 +622,16 @@ if [ "$mysqluser" = "" ]
 then
     mysqluser="koha_$name"
 fi
-mysqlhost="$(getmysqlhost)"
+
+if [ "$CLO_DBHOST" != "" ]
+then
+    mysqlhost="$CLO_DBHOST"
+fi
+
+if [ "$mysqlhost" = "" ]
+then
+    mysqlhost="$(getmysqlhost)"
+fi
 
 if [ "$op" = create ] || [ "$op" = request ] || [ "$op" = use ]
 then
@@ -645,16 +677,7 @@ CREATE DATABASE \`$mysqldb\`;
 CREATE USER \`$mysqluser\`@'$mysql_hostname' IDENTIFIED BY '$mysqlpwd';
 CREATE USER \`$mysqluser\`@'%' IDENTIFIED BY '$mysqlpwd';
 GRANT ALL PRIVILEGES ON \`$mysqldb\`.* TO \`$mysqluser\`;
-FLUSH PRIVILEGES;
-eof
-    fi #`
-
-    if [ "$op" = use ]
-    then
-        mysql --defaults-extra-file=/etc/mysql/koha-common.cnf --force <<eof
-CREATE USER \`$mysqluser\`@'$mysql_hostname' IDENTIFIED BY '$mysqlpwd';
-CREATE USER \`$mysqluser\`@'%' IDENTIFIED BY '$mysqlpwd';
-GRANT ALL PRIVILEGES ON \`$mysqldb\`.* TO \`$mysqluser\`;
+GRANT ALL PRIVILEGES ON \`$mysqldb\`.* TO \`$mysqluser\`@'$mysql_hostname';
 FLUSH PRIVILEGES;
 eof
     fi #`
@@ -727,7 +750,7 @@ then
     then
         # Populate the database with default content.
         zcat "$DEFAULTSQL" |
-        sed "s/__KOHASITE__/$name/g" |
+        sed "s/__KOHASITE__/koha_$name/g" |
         mysql --host="$mysqlhost" --user="$mysqluser" --password="$mysqlpwd" "$mysqldb"