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

[Feature] Install PHPMyAdmin from source directly (#1493)

* Use PHPmyadmin from source for new installs
Migrate PHPmyadmin script for old installs

* Update config.inc.php

* Update read message

* Update install/deb/phpmyadmin/config.inc.php

Co-authored-by: Wojciech Smoliński <wojsmol@wp.pl>

* Update install/upgrade/manual/migrate_phpmyadmin.sh

Co-authored-by: Wojciech Smoliński <wojsmol@wp.pl>

Co-authored-by: Raphael Schneeberger <rs@scit.ch>
Co-authored-by: Wojciech Smoliński <wojsmol@wp.pl>
Jaap Marcus 5 лет назад
Родитель
Сommit
32557dbc55

+ 35 - 0
install/deb/phpmyadmin/config.inc.php

@@ -0,0 +1,35 @@
+<?php
+/* PHPmyadmin config for Hestia 1.3.3 > */
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * All directives are explained in documentation in the doc/ folder
+ * or at <https://docs.phpmyadmin.net/>.
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+/**
+ * This is needed for cookie based authentication to encrypt password in
+ * cookie. Needs to be 32 chars long.
+ */
+$cfg['blowfish_secret'] = '%blowfish_secret%'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
+
+/**
+ * Directories for saving/loading files from server
+ */
+$cfg['UploadDir'] = '';
+$cfg['SaveDir'] = '';
+
+/**
+ * You can find more configuration options in the documentation
+ * in the doc/ folder or at <https://docs.phpmyadmin.net/>.
+ */
+ $i = 0;
+ foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename)
+ {
+     include($filename);
+     /*Don't remove / alter code here below this will add SSO support for all servers*/ 
+     //Add Hestia SSO code here
+     $i++;
+ }

+ 6 - 83
install/deb/phpmyadmin/pma.sh

@@ -13,36 +13,8 @@
 PASS=$(gen_pass)
 PASS=$(gen_pass)
 
 
 #ubuntu phpmyadmin path
 #ubuntu phpmyadmin path
-pmapath1="/etc/phpmyadmin/config.inc.php"
-pmapath2="/usr/share/phpmyadmin/config.sample.inc.php"
+pmapath1="/etc/phpmyadmin/conf.d/01-localhost.php"
 
 
-#delete old and paste new value 
-sed -i '/pmadb/d' $pmapath1
-sed -i '/controluser/d' $pmapath1
-sed -i '/bookmarktable/d' $pmapath1
-sed -i '/relation/d' $pmapath1
-sed -i '/userconfig/d' $pmapath1
-sed -i '/table_info/d' $pmapath1
-sed -i '/column_info/d' $pmapath1
-sed -i '/history/d' $pmapath1
-sed -i '/recent/d' $pmapath1
-sed -i '/table_uiprefs/d' $pmapath1
-sed -i '/tracking/d' $pmapath1
-sed -i '/table_coords/d' $pmapath1
-sed -i '/pdf_pages/d' $pmapath1
-sed -i '/designer_coords/d' $pmapath1
-sed -i '/controlpass/d' $pmapath1
-sed -i '/\$i = 1; /d' $pmapath1
-echo "\$i = 1;" >> $pmapath1
-sed -i '/savedsearches/d' $pmapath1
-sed -i '/navigationhiding/d' $pmapath1
-sed -i '/users/d' $pmapath1
-sed -i '/controlpass/d' $pmapath1
-sed -i '/favorite/d' $pmapath1
-sed -i '/usergroups/d' $pmapath1
-sed -i '/central_columns/d' $pmapath1
-sed -i '/designer_settings/d' $pmapath1
-sed -i '/export_templates/d' $pmapath1
 echo "\$cfg['Servers'][\$i]['favorite'] = 'pma__favorite';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['favorite'] = 'pma__favorite';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['usergroups'] = 'pma__usergroups';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['usergroups'] = 'pma__usergroups';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['central_columns'] = 'pma__central_columns';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['central_columns'] = 'pma__central_columns';" >> $pmapath1
@@ -68,65 +40,16 @@ echo "\$cfg['Servers'][\$i]['table_coords'] = 'pma__table_coords';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['pdf_pages'] = 'pma__pdf_pages';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['pdf_pages'] = 'pma__pdf_pages';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['designer_coords'] = 'pma__designer_coords';" >> $pmapath1
 echo "\$cfg['Servers'][\$i]['designer_coords'] = 'pma__designer_coords';" >> $pmapath1
 
 
-sed -i '/pmadb/d' $pmapath2
-sed -i '/controluser/d' $pmapath2
-sed -i '/bookmarktable/d' $pmapath2
-sed -i '/relation/d' $pmapath2
-sed -i '/userconfig/d' $pmapath2
-sed -i '/table_info/d' $pmapath2
-sed -i '/column_info/d' $pmapath2
-sed -i '/history/d' $pmapath2
-sed -i '/recent/d' $pmapath2
-sed -i '/table_uiprefs/d' $pmapath2
-sed -i '/tracking/d' $pmapath2
-sed -i '/table_coords/d' $pmapath2
-sed -i '/pdf_pages/d' $pmapath2
-sed -i '/designer_coords/d' $pmapath2
-sed -i '/controlpass/d' $pmapath2
-sed -i '/savedsearches/d' $pmapath2
-sed -i '/navigationhiding/d' $pmapath2
-sed -i '/users/d' $pmapath2
-sed -i '/controlpass/d' $pmapath2
-sed -i '/favorite/d' $pmapath2
-sed -i '/usergroups/d' $pmapath2
-sed -i '/central_columns/d' $pmapath2
-sed -i '/designer_settings/d' $pmapath2
-sed -i '/export_templates/d' $pmapath2
-echo "\$cfg['Servers'][\$i]['favorite'] = 'pma__favorite';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['usergroups'] = 'pma__usergroups';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['central_columns'] = 'pma__central_columns';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['designer_settings'] = 'pma__designer_settings';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['export_templates'] = 'pma__export_templates';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['savedsearches'] = 'pma__savedsearches';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['navigationhiding'] = 'pma__navigationhiding';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['users'] = 'pma__users';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['usergroups'] = 'pma__usergroups';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['pmadb'] = 'phpmyadmin';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['controluser'] = 'pma';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['controlpass'] = '$PASS';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['bookmarktable'] = 'pma__bookmark';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['relation'] = 'pma__relation';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['userconfig'] = 'pma__userconfig';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['table_info'] = 'pma__table_info';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['column_info'] = 'pma__column_info';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['history'] = 'pma__history';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['recent'] = 'pma__recent';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['table_uiprefs'] = 'pma__table_uiprefs';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['tracking'] = 'pma__tracking';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['table_coords'] = 'pma__table_coords';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['pdf_pages'] = 'pma__pdf_pages';" >> $pmapath2
-echo "\$cfg['Servers'][\$i]['designer_coords'] = 'pma__designer_coords';" >> $pmapath2
-
 #SOME WORK with DATABASE (table / user)
 #SOME WORK with DATABASE (table / user)
 PMADB=phpmyadmin
 PMADB=phpmyadmin
 PMAUSER=pma
 PMAUSER=pma
 
 
 #DROP USER and TABLE
 #DROP USER and TABLE
-mysql -uroot <<MYSQL_PMA1
-DROP USER '$PMAUSER'@'localhost';
-DROP DATABASE $PMADB;
-FLUSH PRIVILEGES;
-MYSQL_PMA1
+# mysql -uroot <<MYSQL_PMA1
+# DROP USER '$PMAUSER'@'localhost';
+# DROP DATABASE $PMADB;
+# FLUSH PRIVILEGES;
+# MYSQL_PMA1
 
 
 #CREATE PMA USER
 #CREATE PMA USER
 mysql -uroot <<MYSQL_PMA2
 mysql -uroot <<MYSQL_PMA2

+ 0 - 146
install/deb/pma/config.inc.php

@@ -1,146 +0,0 @@
-<?php
-/**
- * Debian local configuration file
- *
- * This file overrides the settings made by phpMyAdmin interactive setup
- * utility.
- *
- * For example configuration see
- *   /usr/share/doc/phpmyadmin/examples/config.sample.inc.php
- * or
- *   /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php
- *
- * NOTE: do not add security sensitive data to this file (like passwords)
- * unless you really know what you're doing. If you do, any user that can
- * run PHP or CGI on your webserver will be able to read them. If you still
- * want to do this, make sure to properly secure the access to this file
- * (also on the filesystem level).
- */
-
-function check_file_access($path)
-{
-    if (is_readable($path)) {
-        return true;
-    } else {
-        error_log(
-            'phpmyadmin: Failed to load ' . $path
-            . ' Check group www-data has read access and open_basedir restrictions.'
-        );
-        return false;
-    }
-}
-
-// Load secret generated on postinst
-if (check_file_access('/var/lib/phpmyadmin/blowfish_secret.inc.php')) {
-    require('/var/lib/phpmyadmin/blowfish_secret.inc.php');
-}
-
-// Load autoconf local config
-if (check_file_access('/var/lib/phpmyadmin/config.inc.php')) {
-    require('/var/lib/phpmyadmin/config.inc.php');
-}
-
-/**
- * Server(s) configuration
- */
-$i = 0;
-// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use $cfg['Servers'][0].
-// You can disable a server config entry by setting host to ''.
-$i++;
-
-/**
- * Read configuration from dbconfig-common
- * You can regenerate it using: dpkg-reconfigure -plow phpmyadmin
- */
-if (check_file_access('/etc/phpmyadmin/config-db.php')) {
-    require('/etc/phpmyadmin/config-db.php');
-}
-
-/* Configure according to dbconfig-common if enabled */
-if (!empty($dbname)) {
-    /* Authentication type */
-    $cfg['Servers'][$i]['auth_type'] = 'cookie';
-    /* Server parameters */
-    if (empty($dbserver)) $dbserver = 'localhost';
-    $cfg['Servers'][$i]['host'] = $dbserver;
-
-    if (!empty($dbport) || $dbserver != 'localhost') {
-        $cfg['Servers'][$i]['connect_type'] = 'tcp';
-        $cfg['Servers'][$i]['port'] = $dbport;
-    }
-    //$cfg['Servers'][$i]['compress'] = false;
-    /* Select mysqli if your server has it */
-    $cfg['Servers'][$i]['extension'] = 'mysqli';
-    /* Optional: User for advanced features */
-    $cfg['Servers'][$i]['controluser'] = $dbuser;
-    $cfg['Servers'][$i]['controlpass'] = $dbpass;
-    /* Optional: Advanced phpMyAdmin features */
-    $cfg['Servers'][$i]['pmadb'] = $dbname;
-    $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
-    $cfg['Servers'][$i]['relation'] = 'pma_relation';
-    $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
-    $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
-    $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
-    $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
-    $cfg['Servers'][$i]['history'] = 'pma_history';
-    $cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
-    $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
-    $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
-    $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
-    $cfg['Servers'][$i]['recent'] = 'pma_recent';
-
-    /* Uncomment the following to enable logging in to passwordless accounts,
-     * after taking note of the associated security risks. */
-    // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
-
-    /* Advance to next server for rest of config */
-    $i++;
-}
-
-/* Authentication type */
-//$cfg['Servers'][$i]['auth_type'] = 'cookie';
-/* Server parameters */
-//$cfg['Servers'][$i]['host'] = 'localhost';
-//$cfg['Servers'][$i]['connect_type'] = 'tcp';
-//$cfg['Servers'][$i]['compress'] = false;
-/* Select mysqli if your server has it */
-//$cfg['Servers'][$i]['extension'] = 'mysql';
-/* Optional: User for advanced features */
-// $cfg['Servers'][$i]['controluser'] = 'pma';
-// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
-
-/* Storage database and tables */
-// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
-// $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
-// $cfg['Servers'][$i]['relation'] = 'pma_relation';
-// $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
-// $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
-// $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
-// $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
-// $cfg['Servers'][$i]['history'] = 'pma_history';
-// $cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
-// $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
-// $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
-// $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
-// $cfg['Servers'][$i]['recent'] = 'pma_recent';
-/* Uncomment the following to enable logging in to passwordless accounts,
- * after taking note of the associated security risks. */
-// $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
-
-/*
- * End of servers configuration
- */
-
-/*
- * Directories for saving/loading files from server
- */
-$cfg['UploadDir'] = '';
-$cfg['SaveDir'] = '';
-
-/* Support additional configurations */
-foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename)
-{
-    include($filename);
-}
-
-

+ 30 - 31
install/hst-install-debian.sh

@@ -40,7 +40,7 @@ if [ "$release" -eq 9 ]; then
         exim4-daemon-heavy clamav-daemon spamassassin dovecot-imapd
         exim4-daemon-heavy clamav-daemon spamassassin dovecot-imapd
         dovecot-pop3d roundcube-core net-tools roundcube-mysql roundcube-plugins
         dovecot-pop3d roundcube-core net-tools roundcube-mysql roundcube-plugins
         mariadb-client mariadb-common mariadb-server postgresql
         mariadb-client mariadb-common mariadb-server postgresql
-        postgresql-contrib phppgadmin phpmyadmin mc flex whois rssh git idn zip
+        postgresql-contrib phppgadmin mc flex whois rssh git idn zip
         sudo bc ftp lsof rrdtool quota e2fslibs bsdutils e2fsprogs curl
         sudo bc ftp lsof rrdtool quota e2fslibs bsdutils e2fsprogs curl
         imagemagick fail2ban dnsutils bsdmainutils cron hestia=${HESTIA_INSTALL_VER} hestia-nginx
         imagemagick fail2ban dnsutils bsdmainutils cron hestia=${HESTIA_INSTALL_VER} hestia-nginx
         hestia-php expect libmail-dkim-perl unrar-free vim-common acl sysstat
         hestia-php expect libmail-dkim-perl unrar-free vim-common acl sysstat
@@ -56,7 +56,7 @@ elif [ "$release" -eq 10 ]; then
         awstats vsftpd proftpd-basic bind9 exim4 exim4-daemon-heavy
         awstats vsftpd proftpd-basic bind9 exim4 exim4-daemon-heavy
         clamav-daemon spamassassin dovecot-imapd dovecot-pop3d roundcube-core
         clamav-daemon spamassassin dovecot-imapd dovecot-pop3d roundcube-core
         net-tools roundcube-mysql roundcube-plugins mariadb-client
         net-tools roundcube-mysql roundcube-plugins mariadb-client
-        mariadb-common mariadb-server postgresql postgresql-contrib phpmyadmin
+        mariadb-common mariadb-server postgresql postgresql-contrib
         phppgadmin mc flex whois git idn zip sudo bc ftp lsof rrdtool
         phppgadmin mc flex whois git idn zip sudo bc ftp lsof rrdtool
         quota e2fslibs bsdutils e2fsprogs curl imagemagick fail2ban dnsutils
         quota e2fslibs bsdutils e2fsprogs curl imagemagick fail2ban dnsutils
         bsdmainutils cron hestia=${HESTIA_INSTALL_VER} hestia-nginx hestia-php expect
         bsdmainutils cron hestia=${HESTIA_INSTALL_VER} hestia-nginx hestia-php expect
@@ -783,7 +783,6 @@ if [ "$mysql" = 'no' ]; then
     software=$(echo "$software" | sed -e "s/mariadb-client//")
     software=$(echo "$software" | sed -e "s/mariadb-client//")
     software=$(echo "$software" | sed -e "s/mariadb-common//")
     software=$(echo "$software" | sed -e "s/mariadb-common//")
     software=$(echo "$software" | sed -e "s/php$fpm_v-mysql//")
     software=$(echo "$software" | sed -e "s/php$fpm_v-mysql//")
-    software=$(echo "$software" | sed -e "s/phpmyadmin//")
 fi
 fi
 if [ "$postgresql" = 'no' ]; then
 if [ "$postgresql" = 'no' ]; then
     software=$(echo "$software" | sed -e "s/postgresql-contrib//")
     software=$(echo "$software" | sed -e "s/postgresql-contrib//")
@@ -1359,14 +1358,6 @@ if [ "$mysql" = 'yes' ]; then
     mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
     mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
     mysql -e "DELETE FROM mysql.user WHERE user='';"
     mysql -e "DELETE FROM mysql.user WHERE user='';"
     mysql -e "DELETE FROM mysql.user WHERE password='' AND authentication_string='';"
     mysql -e "DELETE FROM mysql.user WHERE password='' AND authentication_string='';"
-
-    # Configuring phpMyAdmin
-    if [ "$apache" = 'yes' ]; then
-        cp -f $HESTIA_INSTALL_DIR/pma/apache.conf /etc/phpmyadmin/
-        ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
-    fi
-    cp -f $HESTIA_INSTALL_DIR/pma/config.inc.php /etc/phpmyadmin/
-    chmod 777 /var/lib/phpmyadmin/tmp
 fi
 fi
 
 
 
 
@@ -1383,13 +1374,27 @@ if [ "$mysql" = 'yes' ]; then
 
 
     # Unpack files
     # Unpack files
     tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
     tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
-
-    # Delete file to prevent error
-    rm -fr /usr/share/phpmyadmin/doc/html
-
+    
+    # Create folders
+    mkdir -p  /usr/share/phpmyadmin
+    mkdir -p /etc/phpmyadmin
+    mkdir -p /etc/phpmyadmin/conf.d/  
+    mkdir /usr/share/phpmyadmin/tmp
+    
+    # Configuring Apache2 for PHPMYADMIN
+    if [ "$apache" = 'yes' ]; then
+        cp -f $HESTIA_INSTALL_DIR/pma/apache.conf /etc/phpmyadmin/
+        ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
+    fi
+    
     # Overwrite old files
     # Overwrite old files
     cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
     cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
-
+    
+    # Create copy of config file
+    cp -f $HESTIA_INSTALL_DIR/pma/config.inc.php /etc/phpmyadmin/
+    mkdir -p /var/lib/phpmyadmin/tmp
+    chmod 777 /var/lib/phpmyadmin/tmp
+    
     # Set config and log directory
     # Set config and log directory
     sed -i "s|define('CONFIG_DIR', ROOT_PATH);|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
     sed -i "s|define('CONFIG_DIR', ROOT_PATH);|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
     sed -i "s|define('TEMP_DIR', ROOT_PATH . 'tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
     sed -i "s|define('TEMP_DIR', ROOT_PATH . 'tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
@@ -1397,17 +1402,21 @@ if [ "$mysql" = 'yes' ]; then
     # Create temporary folder and change permission
     # Create temporary folder and change permission
     mkdir /usr/share/phpmyadmin/tmp
     mkdir /usr/share/phpmyadmin/tmp
     chmod 777 /usr/share/phpmyadmin/tmp
     chmod 777 /usr/share/phpmyadmin/tmp
-
-    if [ -e /var/lib/phpmyadmin/blowfish_secret.inc.php ]; then
-        chmod 0644 /var/lib/phpmyadmin/blowfish_secret.inc.php
-    fi
     
     
-    # Clear Up
+    # Generate blow fish
+    blowfish=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)
+    sed -i "s|%blowfish_secret%|$blowfish|" /etc/phpmyadmin/config.inc.php
+
+    # Clean Up
     rm -fr phpMyAdmin-$pma_v-all-languages
     rm -fr phpMyAdmin-$pma_v-all-languages
     rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
     rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
 
 
     echo "DB_PMA_ALIAS='phpmyadmin'" >> $HESTIA/conf/hestia.conf
     echo "DB_PMA_ALIAS='phpmyadmin'" >> $HESTIA/conf/hestia.conf
     $HESTIA/bin/v-change-sys-db-alias 'pma' "phpmyadmin"
     $HESTIA/bin/v-change-sys-db-alias 'pma' "phpmyadmin"
+
+    # Special thanks to Pavel Galkin (https://skurudo.ru)
+    # https://github.com/skurudo/phpmyadmin-fixer
+    source $HESTIA_INSTALL_DIR/phpmyadmin/pma.sh > /dev/null 2>&1
 fi
 fi
 
 
 
 
@@ -1680,16 +1689,6 @@ else
 fi
 fi
 
 
 
 
-#----------------------------------------------------------#
-#                      Fix phpmyadmin                      #
-#----------------------------------------------------------#
-# Special thanks to Pavel Galkin (https://skurudo.ru)
-# https://github.com/skurudo/phpmyadmin-fixer
-
-if [ "$mysql" = 'yes' ]; then
-    source $HESTIA_INSTALL_DIR/phpmyadmin/pma.sh > /dev/null 2>&1
-fi
-
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #                   Configure Admin User                   #
 #                   Configure Admin User                   #
 #----------------------------------------------------------#
 #----------------------------------------------------------#

+ 34 - 36
install/hst-install-ubuntu.sh

@@ -36,7 +36,7 @@ software="apache2 apache2.2-common apache2-suexec-custom apache2-utils
     exim4-daemon-heavy expect fail2ban flex ftp git idn imagemagick
     exim4-daemon-heavy expect fail2ban flex ftp git idn imagemagick
     libapache2-mod-fcgid libapache2-mod-php$fpm_v libapache2-mod-rpaf
     libapache2-mod-fcgid libapache2-mod-php$fpm_v libapache2-mod-rpaf
     lsof mc mariadb-client mariadb-common mariadb-server nginx
     lsof mc mariadb-client mariadb-common mariadb-server nginx
-    php$fpm_v php$fpm_v-cgi php$fpm_v-common php$fpm_v-curl phpmyadmin
+    php$fpm_v php$fpm_v-cgi php$fpm_v-common php$fpm_v-curl
     php$fpm_v-mysql php$fpm_v-imap php$fpm_v-ldap php$fpm_v-apcu phppgadmin
     php$fpm_v-mysql php$fpm_v-imap php$fpm_v-ldap php$fpm_v-apcu phppgadmin
     php$fpm_v-pgsql php$fpm_v-zip php$fpm_v-bz2 php$fpm_v-cli php$fpm_v-gd
     php$fpm_v-pgsql php$fpm_v-zip php$fpm_v-bz2 php$fpm_v-cli php$fpm_v-gd
     php$fpm_v-imagick php$fpm_v-intl php$fpm_v-json php$fpm_v-mbstring
     php$fpm_v-imagick php$fpm_v-intl php$fpm_v-json php$fpm_v-mbstring
@@ -776,7 +776,6 @@ if [ "$mysql" = 'no' ]; then
             software=$(echo "$software" | sed -e "s/php$v-bz2//")
             software=$(echo "$software" | sed -e "s/php$v-bz2//")
         done
         done
     fi
     fi
-    software=$(echo "$software" | sed -e "s/phpmyadmin//")
 fi
 fi
 if [ "$postgresql" = 'no' ]; then
 if [ "$postgresql" = 'no' ]; then
     software=$(echo "$software" | sed -e "s/postgresql-contrib//")
     software=$(echo "$software" | sed -e "s/postgresql-contrib//")
@@ -1412,14 +1411,6 @@ if [ "$mysql" = 'yes' ]; then
     mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
     mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
     mysql -e "DELETE FROM mysql.user WHERE user='';"
     mysql -e "DELETE FROM mysql.user WHERE user='';"
     mysql -e "DELETE FROM mysql.user WHERE password='' AND authentication_string='';"
     mysql -e "DELETE FROM mysql.user WHERE password='' AND authentication_string='';"
-
-    # Configuring phpMyAdmin
-    if [ "$apache" = 'yes' ]; then
-        cp -f $HESTIA_INSTALL_DIR/pma/apache.conf /etc/phpmyadmin/
-        ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
-    fi
-    cp -f $HESTIA_INSTALL_DIR/pma/config.inc.php /etc/phpmyadmin/
-    chmod 777 /var/lib/phpmyadmin/tmp
 fi
 fi
 
 
 
 
@@ -1430,38 +1421,55 @@ fi
 if [ "$mysql" = 'yes' ]; then
 if [ "$mysql" = 'yes' ]; then
     # Display upgrade information
     # Display upgrade information
     echo "[ * ] Installing phpMyAdmin version v$pma_v..."
     echo "[ * ] Installing phpMyAdmin version v$pma_v..."
-
+    
     # Download latest phpmyadmin release
     # Download latest phpmyadmin release
     wget --quiet https://files.phpmyadmin.net/phpMyAdmin/$pma_v/phpMyAdmin-$pma_v-all-languages.tar.gz
     wget --quiet https://files.phpmyadmin.net/phpMyAdmin/$pma_v/phpMyAdmin-$pma_v-all-languages.tar.gz
-
+    
     # Unpack files
     # Unpack files
     tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
     tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
-
-    # Delete files to prevent error
-    rm -fr /usr/share/phpmyadmin/doc/html
-    rm -fr /usr/share/phpmyadmin/js/vendor/openlayers
-
+    
+    # Create folders
+    mkdir -p  /usr/share/phpmyadmin
+    mkdir -p /etc/phpmyadmin
+    mkdir -p /etc/phpmyadmin/conf.d/  
+    mkdir /usr/share/phpmyadmin/tmp
+    
+    # Configuring Apache2 for PHPMYADMIN
+    if [ "$apache" = 'yes' ]; then
+        cp -f $HESTIA_INSTALL_DIR/pma/apache.conf /etc/phpmyadmin/
+        ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
+    fi
+    
     # Overwrite old files
     # Overwrite old files
     cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
     cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
-
+    
+    # Create copy of config file
+    cp -f $HESTIA_INSTALL_DIR/pma/config.inc.php /etc/phpmyadmin/
+    mkdir -p /var/lib/phpmyadmin/tmp
+    chmod 777 /var/lib/phpmyadmin/tmp
+    
     # Set config and log directory
     # Set config and log directory
     sed -i "s|define('CONFIG_DIR', ROOT_PATH);|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
     sed -i "s|define('CONFIG_DIR', ROOT_PATH);|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
     sed -i "s|define('TEMP_DIR', ROOT_PATH . 'tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
     sed -i "s|define('TEMP_DIR', ROOT_PATH . 'tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
-
+    
     # Create temporary folder and change permission
     # Create temporary folder and change permission
-    [ ! -d "/usr/share/phpmyadmin/tmp" ] && mkdir /usr/share/phpmyadmin/tmp
+    mkdir /usr/share/phpmyadmin/tmp
     chmod 777 /usr/share/phpmyadmin/tmp
     chmod 777 /usr/share/phpmyadmin/tmp
     
     
-    if [ -e /var/lib/phpmyadmin/blowfish_secret.inc.php ]; then
-        chmod 0644 /var/lib/phpmyadmin/blowfish_secret.inc.php
-    fi
-
-    # Clear Up
+    # Generate blow fish
+    blowfish=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)
+    sed -i "s|%blowfish_secret%|$blowfish|" /etc/phpmyadmin/config.inc.php
+    
+    # Clean Up
     rm -fr phpMyAdmin-$pma_v-all-languages
     rm -fr phpMyAdmin-$pma_v-all-languages
     rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
     rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
-
+    
     echo "DB_PMA_ALIAS='phpmyadmin'" >> $HESTIA/conf/hestia.conf
     echo "DB_PMA_ALIAS='phpmyadmin'" >> $HESTIA/conf/hestia.conf
     $HESTIA/bin/v-change-sys-db-alias 'pma' "phpmyadmin"
     $HESTIA/bin/v-change-sys-db-alias 'pma' "phpmyadmin"
+    
+    # Special thanks to Pavel Galkin (https://skurudo.ru)
+    # https://github.com/skurudo/phpmyadmin-fixer
+    source $HESTIA_INSTALL_DIR/phpmyadmin/pma.sh > /dev/null 2>&1
 fi
 fi
 
 
 
 
@@ -1725,16 +1733,6 @@ else
     echo "API='no'" >> $HESTIA/conf/hestia.conf
     echo "API='no'" >> $HESTIA/conf/hestia.conf
 fi
 fi
 
 
-#----------------------------------------------------------#
-#                      Fix phpmyadmin                      #
-#----------------------------------------------------------#
-# Special thanks to Pavel Galkin (https://skurudo.ru)
-# https://github.com/skurudo/phpmyadmin-fixer
-
-if [ "$mysql" = 'yes' ]; then
-    source $HESTIA_INSTALL_DIR/phpmyadmin/pma.sh > /dev/null 2>&1
-fi
-
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #                   Configure Admin User                   #
 #                   Configure Admin User                   #

+ 152 - 0
install/upgrade/manual/migrate_phpmyadmin.sh

@@ -0,0 +1,152 @@
+#!/bin/bash
+# info: Disconnect PHPmyadmin from APT and solving issues with PHPMyadmin accidental updates from ATP
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Includes
+source $HESTIA/func/main.sh
+# get current phpmyadmin version 
+source $HESTIA/install/upgrade/upgrade.conf
+source $HESTIA/conf/hestia.conf
+
+
+#----------------------------------------------------------#
+#                    Verifications                         #
+#----------------------------------------------------------#
+
+echo "For deleting PHPmyAdmin you will need confirm the removal with root password. Password can be found in /usr/local/hestia/conf/mysql.conf"
+read -p "Please enter Y to continue" -n 1 -r
+echo    # (optional) move to a new line
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+   # Create an backup of current config
+   echo "[ * ] Make backup old config files"
+   mkdir -p /root/hst_backup_man/phmyadmin
+   cp -r /etc/phpmyadmin/* /root/hst_backup_man/phmyadmin
+   
+   mkdir -p /root/hst_backup_man/var_phmyadmin
+   cp -r /var/lib/phpmyadmin/* /root/hst_backup_man/var_phmyadmin
+   
+   echo '[ * ] Remove PHPmyAdmin via ATP'
+   apt-get autoremove phpmyadmin
+   
+   echo '[ * ] Delete possible trail'
+   # make sure everything is deleted 
+   rm -f -r /usr/share/phpmyadmin
+   rm -f -r /etc/phpmyadmin
+   rm -f -r /var/lib/phpmyadmin/
+   
+   echo '[ * ] Create new folders'
+   # Create folders
+   mkdir -p  /usr/share/phpmyadmin
+   mkdir -p /etc/phpmyadmin
+   mkdir -p /etc/phpmyadmin/conf.d/  
+   mkdir /usr/share/phpmyadmin/tmp
+   mkdir -p /etc/phpmyadmin/conf.d/  
+   
+   # Configuring Apache2 for PHPMYADMIN
+   if [ "$WEB_SYSTEM" == "apache2" ]; then
+       cp -f $HESTIA_INSTALL_DIR/pma/apache.conf /etc/phpmyadmin/
+       rm /etc/apache2/conf.d/phpmyadmin.conf
+       ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
+   fi
+   
+   PASS=$(generate_password)
+      
+   echo "[ * ] Installing phpMyAdmin version v$pma_v..."
+   # Download latest phpmyadmin release
+   wget --quiet https://files.phpmyadmin.net/phpMyAdmin/$pma_v/phpMyAdmin-$pma_v-all-languages.tar.gz
+   # Unpack files
+   tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
+   
+   # Overwrite old files
+   cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
+   
+   # Create copy of config file
+   cp -f $HESTIA_INSTALL_DIR/phpmyadmin/config.inc.php /etc/phpmyadmin/
+   mkdir -p /var/lib/phpmyadmin/tmp
+   chmod 777 /var/lib/phpmyadmin/tmp
+   
+   # Set config and log directory
+   sed -i "s|define('CONFIG_DIR', ROOT_PATH);|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
+   sed -i "s|define('TEMP_DIR', ROOT_PATH . 'tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp');|" /usr/share/phpmyadmin/libraries/vendor_config.php
+   
+   # Generate blowfish
+   blowfish=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)
+   sed -i "s|%blowfish_secret%|$blowfish|" /etc/phpmyadmin/config.inc.php
+   
+   # Clear Up
+   rm -fr phpMyAdmin-$pma_v-all-languages
+   rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
+   
+   echo "DB_PMA_ALIAS='phpmyadmin'" >> $HESTIA/conf/hestia.conf
+   $HESTIA/bin/v-change-sys-db-alias 'pma' "phpmyadmin"
+
+   # Special thanks to Pavel Galkin (https://skurudo.ru)
+   # https://github.com/skurudo/phpmyadmin-fixer
+   
+   echo "[ * ] Createing localhost config"
+   #ubuntu phpmyadmin path
+   pmapath1="/etc/phpmyadmin/conf.d/01-localhost.php"
+   
+   echo "\$cfg['Servers'][\$i]['favorite'] = 'pma__favorite';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['usergroups'] = 'pma__usergroups';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['central_columns'] = 'pma__central_columns';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['designer_settings'] = 'pma__designer_settings';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['export_templates'] = 'pma__export_templates';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['savedsearches'] = 'pma__savedsearches';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['navigationhiding'] = 'pma__navigationhiding';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['users'] = 'pma__users';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['usergroups'] = 'pma__usergroups';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['pmadb'] = 'phpmyadmin';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['controluser'] = 'pma';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['controlpass'] = '$PASS';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['bookmarktable'] = 'pma__bookmark';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['relation'] = 'pma__relation';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['userconfig'] = 'pma__userconfig';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['table_info'] = 'pma__table_info';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['column_info'] = 'pma__column_info';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['history'] = 'pma__history';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['recent'] = 'pma__recent';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['table_uiprefs'] = 'pma__table_uiprefs';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['tracking'] = 'pma__tracking';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['table_coords'] = 'pma__table_coords';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['pdf_pages'] = 'pma__pdf_pages';" >> $pmapath1
+   echo "\$cfg['Servers'][\$i]['designer_coords'] = 'pma__designer_coords';" >> $pmapath1
+   
+   #SOME WORK with DATABASE (table / user)
+   PMADB=phpmyadmin
+   PMAUSER=pma
+   
+   echo '[ * ] Drop database could throw a error if successfull removal was preformed'
+   # removed tabs due to here doc errors
+   #DROP USER and TABLE
+   mysql -uroot <<MYSQL_PMA1
+DROP USER '$PMAUSER'@'localhost';
+DROP DATABASE $PMADB;
+FLUSH PRIVILEGES;
+MYSQL_PMA1
+
+   echo '[ * ] Create new user'
+   #CREATE PMA USER
+   mysql -uroot <<MYSQL_PMA2
+CREATE USER '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';
+CREATE DATABASE $PMADB;
+MYSQL_PMA2
+   
+   echo '[ * ] Create new database'
+   #GRANT PMA USE SOME RIGHTS
+   mysql -uroot <<MYSQL_PMA3
+USE $PMADB;
+GRANT USAGE ON $PMADB.* TO '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';
+GRANT ALL PRIVILEGES ON $PMADB.* TO '$PMAUSER'@'localhost';
+FLUSH PRIVILEGES;
+MYSQL_PMA3
+   
+   #MYSQL DB and TABLES ADDITION
+   mysql -uroot < $HESTIA_INSTALL_DIR/phpmyadmin/create_tables.sql
+      
+fi