From fae58078f8b894acb88cf4f299a0cc2162a4c3c5 Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Mon, 16 Feb 2015 14:56:08 +0100 Subject: [PATCH] update ftp_groups table in case webserver-/fcgid-/fpm-user changes, refs #1491 (i guess) Signed-off-by: Michael Kaufmann (d00p) --- actions/admin/settings/130.webserver.php | 2 +- actions/admin/settings/135.fcgid.php | 2 +- actions/admin/settings/136.phpfpm.php | 2 +- ...tion.storeSettingWebserverFcgidFpmUser.php | 58 +++++++++++++++++++ 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 lib/functions/settings/function.storeSettingWebserverFcgidFpmUser.php diff --git a/actions/admin/settings/130.webserver.php b/actions/admin/settings/130.webserver.php index 34da320a..ad811e4a 100644 --- a/actions/admin/settings/130.webserver.php +++ b/actions/admin/settings/130.webserver.php @@ -49,7 +49,7 @@ return array( 'varname' => 'httpuser', 'type' => 'string', 'default' => 'www-data', - 'save_method' => 'storeSettingField', + 'save_method' => 'storeSettingWebserverFcgidFpmUser', ), 'system_httpgroup' => array( 'label' => $lng['admin']['webserver_group'], diff --git a/actions/admin/settings/135.fcgid.php b/actions/admin/settings/135.fcgid.php index 53b7ba9e..847ccdd5 100644 --- a/actions/admin/settings/135.fcgid.php +++ b/actions/admin/settings/135.fcgid.php @@ -112,7 +112,7 @@ return array( 'varname' => 'mod_fcgid_httpuser', 'type' => 'string', 'default' => 'froxlorlocal', - 'save_method' => 'storeSettingField', + 'save_method' => 'storeSettingWebserverFcgidFpmUser', 'websrv_avail' => array('apache2') ), 'system_mod_fcgid_httpgroup' => array( diff --git a/actions/admin/settings/136.phpfpm.php b/actions/admin/settings/136.phpfpm.php index 188bae03..914da31c 100644 --- a/actions/admin/settings/136.phpfpm.php +++ b/actions/admin/settings/136.phpfpm.php @@ -44,7 +44,7 @@ return array( 'varname' => 'vhost_httpuser', 'type' => 'string', 'default' => 'froxlorlocal', - 'save_method' => 'storeSettingField' + 'save_method' => 'storeSettingWebserverFcgidFpmUser' ), 'system_phpfpm_httpgroup' => array( 'label' => $lng['phpfpm']['vhost_httpgroup'], diff --git a/lib/functions/settings/function.storeSettingWebserverFcgidFpmUser.php b/lib/functions/settings/function.storeSettingWebserverFcgidFpmUser.php new file mode 100644 index 00000000..eecd9726 --- /dev/null +++ b/lib/functions/settings/function.storeSettingWebserverFcgidFpmUser.php @@ -0,0 +1,58 @@ + (2010-) + * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt + * @package Functions + * + * @since 0.9.34 + */ + +/** + * Whenever the webserver- / FCGID- or FPM-user gets updated + * we need to update ftp_groups accordingly + */ +function storeSettingWebserverFcgidFpmUser($fieldname, $fielddata, $newfieldvalue) +{ + if (is_array($fielddata) && isset($fielddata['settinggroup']) && isset($fielddata['varname'])) { + + $update_user = null; + + // webserver + if ($fielddata['settinggroup'] == 'system' && $fielddata['varname'] == 'httpuser') { + $update_user = Settings::Get('system.httpuser'); + } + + // fcgid + if ($fielddata['settinggroup'] == 'system' && $fielddata['varname'] == 'mod_fcgid_httpuser') { + $update_user = Settings::Get('system.mod_fcgid_httpuser'); + } + + // webserver + if ($fielddata['settinggroup'] == 'phpfpm' && $fielddata['varname'] == 'vhost_httpuser') { + $update_user = Settings::Get('phpfpm.vhost_httpuser'); + } + + $returnvalue = storeSettingField($fieldname, $fielddata, $newfieldvalue); + + if ($returnvalue !== false) { + /** + * only update if anything changed + */ + if ($update_user != null && $newfieldvalue != $update_user) { + $upd_stmt = Database::prepare("UPDATE `" . TABLE_FTP_GROUPS . "` SET `members` = REPLACE(`members`, :olduser, :newuser)"); + Database::pexecute($upd_stmt, array('olduser' => $update_user, 'newuser' => $newfieldvalue)); + } + } + } + + return $returnvalue; +}