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

[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)
 
 #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]['usergroups'] = 'pma__usergroups';" >> $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]['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)
 PMADB=phpmyadmin
 PMAUSER=pma
 
 #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
 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
         dovecot-pop3d roundcube-core net-tools roundcube-mysql roundcube-plugins
         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
         imagemagick fail2ban dnsutils bsdmainutils cron hestia=${HESTIA_INSTALL_VER} hestia-nginx
         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
         clamav-daemon spamassassin dovecot-imapd dovecot-pop3d roundcube-core
         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
         quota e2fslibs bsdutils e2fsprogs curl imagemagick fail2ban dnsutils
         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-common//")
     software=$(echo "$software" | sed -e "s/php$fpm_v-mysql//")
-    software=$(echo "$software" | sed -e "s/phpmyadmin//")
 fi
 if [ "$postgresql" = 'no' ]; then
     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.user WHERE user='';"
     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
 
 
@@ -1383,13 +1374,27 @@ if [ "$mysql" = 'yes' ]; then
 
     # Unpack files
     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
     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
     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
@@ -1397,17 +1402,21 @@ if [ "$mysql" = 'yes' ]; then
     # Create temporary folder and change permission
     mkdir /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 -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
+    source $HESTIA_INSTALL_DIR/phpmyadmin/pma.sh > /dev/null 2>&1
 fi
 
 
@@ -1680,16 +1689,6 @@ else
 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                   #
 #----------------------------------------------------------#

+ 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
     libapache2-mod-fcgid libapache2-mod-php$fpm_v libapache2-mod-rpaf
     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-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
@@ -776,7 +776,6 @@ if [ "$mysql" = 'no' ]; then
             software=$(echo "$software" | sed -e "s/php$v-bz2//")
         done
     fi
-    software=$(echo "$software" | sed -e "s/phpmyadmin//")
 fi
 if [ "$postgresql" = 'no' ]; then
     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.user WHERE user='';"
     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
 
 
@@ -1430,38 +1421,55 @@ fi
 if [ "$mysql" = 'yes' ]; then
     # Display upgrade information
     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
-
-    # 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
     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
     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
-
+    
     # 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
     
-    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 -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
+    source $HESTIA_INSTALL_DIR/phpmyadmin/pma.sh > /dev/null 2>&1
 fi
 
 
@@ -1725,16 +1733,6 @@ else
     echo "API='no'" >> $HESTIA/conf/hestia.conf
 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                   #

+ 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