From 7b47c0aa0aeee6f059f00008e36cc210ca89ecb9 Mon Sep 17 00:00:00 2001 From: tbrehm Date: Wed, 21 Aug 2013 14:28:20 +0000 Subject: [PATCH] Merged revisions 4069-4117 from stable branch. --- install/dist/lib/fedora.lib.php | 18 +- install/dist/lib/opensuse.lib.php | 16 + install/install.php | 3 +- install/lib/installer_base.lib.php | 6 +- install/lib/mysql.lib.php | 79 +- install/sql/incremental/upd_0055.sql | 1 + install/sql/incremental/upd_0056.sql | 12 + install/sql/ispconfig3.sql | 20 +- install/tpl/config.inc.php.master | 2 +- install/tpl/system.ini.master | 6 + .../lib/classes/aps_guicontroller.inc.php | 1692 ++++++++--------- .../lib/classes/client_templates.inc.php | 233 ++- interface/lib/classes/listform.inc.php | 10 +- .../lib/classes/plugin_backuplist.inc.php | 6 + interface/lib/classes/remoting.inc.php | 175 +- interface/lib/classes/remoting_lib.inc.php | 2 + interface/lib/classes/tform.inc.php | 13 +- interface/lib/classes/tree.inc.php | 6 +- interface/lib/lang/ar.lng | 2 + interface/lib/lang/bg.lng | 2 + interface/lib/lang/br.lng | 2 + interface/lib/lang/cz.lng | 2 + interface/lib/lang/de.lng | 2 + interface/lib/lang/el.lng | 2 + interface/lib/lang/en.lng | 2 + interface/lib/lang/es.lng | 2 + interface/lib/lang/fi.lng | 2 + interface/lib/lang/fr.lng | 2 + interface/lib/lang/hr.lng | 2 + interface/lib/lang/hu.lng | 2 + interface/lib/lang/id.lng | 2 + interface/lib/lang/it.lng | 2 + interface/lib/lang/ja.lng | 2 + interface/lib/lang/nl.lng | 2 + interface/lib/lang/pl.lng | 2 + interface/lib/lang/pt.lng | 2 + interface/lib/lang/ro.lng | 2 + interface/lib/lang/ru.lng | 2 + interface/lib/lang/se.lng | 2 + interface/lib/lang/sk.lng | 2 + interface/lib/lang/tr.lng | 2 + .../web/admin/form/system_config.tform.php | 36 + interface/web/admin/language_edit.php | 2 +- .../web/admin/lib/lang/ar_server_config.lng | 17 + .../admin/lib/lang/ar_software_package.lng | 6 + .../lib/lang/ar_software_package_list.lng | 2 + .../web/admin/lib/lang/ar_software_repo.lng | 1 + .../web/admin/lib/lang/ar_system_config.lng | 3 + .../web/admin/lib/lang/bg_server_config.lng | 17 + .../admin/lib/lang/bg_software_package.lng | 6 + .../lib/lang/bg_software_package_list.lng | 2 + .../web/admin/lib/lang/bg_software_repo.lng | 1 + .../web/admin/lib/lang/bg_system_config.lng | 3 + .../web/admin/lib/lang/br_server_config.lng | 17 + .../admin/lib/lang/br_software_package.lng | 6 + .../lib/lang/br_software_package_list.lng | 2 + .../web/admin/lib/lang/br_software_repo.lng | 1 + .../web/admin/lib/lang/br_system_config.lng | 3 + .../web/admin/lib/lang/cz_remote_action.lng | 4 +- .../web/admin/lib/lang/cz_server_config.lng | 17 + .../admin/lib/lang/cz_software_package.lng | 6 + .../lib/lang/cz_software_package_list.lng | 2 + .../web/admin/lib/lang/cz_software_repo.lng | 1 + .../web/admin/lib/lang/cz_system_config.lng | 3 + .../web/admin/lib/lang/de_system_config.lng | 7 + .../web/admin/lib/lang/el_server_config.lng | 17 + .../admin/lib/lang/el_software_package.lng | 6 + .../lib/lang/el_software_package_list.lng | 2 + .../web/admin/lib/lang/el_software_repo.lng | 1 + .../web/admin/lib/lang/el_system_config.lng | 3 + .../web/admin/lib/lang/en_system_config.lng | 7 + .../web/admin/lib/lang/es_server_config.lng | 17 + .../admin/lib/lang/es_software_package.lng | 6 + .../lib/lang/es_software_package_list.lng | 2 + .../web/admin/lib/lang/es_software_repo.lng | 1 + .../web/admin/lib/lang/es_system_config.lng | 3 + .../web/admin/lib/lang/fi_server_config.lng | 17 + .../admin/lib/lang/fi_software_package.lng | 6 + .../lib/lang/fi_software_package_list.lng | 2 + .../web/admin/lib/lang/fi_software_repo.lng | 1 + .../web/admin/lib/lang/fi_system_config.lng | 3 + .../web/admin/lib/lang/fr_server_config.lng | 17 + .../admin/lib/lang/fr_software_package.lng | 6 + .../lib/lang/fr_software_package_list.lng | 2 + .../web/admin/lib/lang/fr_software_repo.lng | 1 + .../web/admin/lib/lang/fr_system_config.lng | 3 + .../web/admin/lib/lang/hr_server_config.lng | 17 + .../admin/lib/lang/hr_software_package.lng | 6 + .../lib/lang/hr_software_package_list.lng | 2 + .../web/admin/lib/lang/hr_software_repo.lng | 1 + .../web/admin/lib/lang/hr_system_config.lng | 3 + .../web/admin/lib/lang/hu_server_config.lng | 17 + .../admin/lib/lang/hu_software_package.lng | 6 + .../lib/lang/hu_software_package_list.lng | 2 + .../web/admin/lib/lang/hu_software_repo.lng | 1 + .../web/admin/lib/lang/hu_system_config.lng | 3 + .../web/admin/lib/lang/id_server_config.lng | 17 + .../admin/lib/lang/id_software_package.lng | 6 + .../lib/lang/id_software_package_list.lng | 2 + .../web/admin/lib/lang/id_software_repo.lng | 1 + .../web/admin/lib/lang/id_system_config.lng | 3 + .../web/admin/lib/lang/it_server_config.lng | 17 + .../admin/lib/lang/it_software_package.lng | 6 + .../lib/lang/it_software_package_list.lng | 2 + .../web/admin/lib/lang/it_software_repo.lng | 1 + .../web/admin/lib/lang/it_system_config.lng | 3 + .../web/admin/lib/lang/ja_server_config.lng | 17 + .../admin/lib/lang/ja_software_package.lng | 6 + .../lib/lang/ja_software_package_list.lng | 2 + .../web/admin/lib/lang/ja_software_repo.lng | 1 + .../web/admin/lib/lang/ja_system_config.lng | 3 + .../web/admin/lib/lang/nl_server_config.lng | 17 + .../admin/lib/lang/nl_software_package.lng | 6 + .../lib/lang/nl_software_package_list.lng | 2 + .../web/admin/lib/lang/nl_software_repo.lng | 1 + .../web/admin/lib/lang/nl_system_config.lng | 3 + .../web/admin/lib/lang/pl_server_config.lng | 17 + .../admin/lib/lang/pl_software_package.lng | 6 + .../lib/lang/pl_software_package_list.lng | 2 + .../web/admin/lib/lang/pl_software_repo.lng | 1 + .../web/admin/lib/lang/pl_system_config.lng | 3 + .../web/admin/lib/lang/pt_server_config.lng | 17 + .../admin/lib/lang/pt_software_package.lng | 6 + .../lib/lang/pt_software_package_list.lng | 2 + .../web/admin/lib/lang/pt_software_repo.lng | 1 + .../web/admin/lib/lang/pt_system_config.lng | 3 + .../web/admin/lib/lang/ro_server_config.lng | 17 + .../admin/lib/lang/ro_software_package.lng | 6 + .../lib/lang/ro_software_package_list.lng | 2 + .../web/admin/lib/lang/ro_software_repo.lng | 1 + .../web/admin/lib/lang/ro_system_config.lng | 3 + .../web/admin/lib/lang/ru_server_config.lng | 17 + .../admin/lib/lang/ru_software_package.lng | 6 + .../lib/lang/ru_software_package_list.lng | 2 + .../web/admin/lib/lang/ru_software_repo.lng | 1 + .../web/admin/lib/lang/ru_system_config.lng | 3 + .../web/admin/lib/lang/se_server_config.lng | 17 + .../admin/lib/lang/se_software_package.lng | 6 + .../lib/lang/se_software_package_list.lng | 2 + .../web/admin/lib/lang/se_software_repo.lng | 1 + .../web/admin/lib/lang/se_system_config.lng | 3 + .../web/admin/lib/lang/sk_server_config.lng | 17 + .../admin/lib/lang/sk_software_package.lng | 6 + .../lib/lang/sk_software_package_list.lng | 2 + .../web/admin/lib/lang/sk_software_repo.lng | 1 + .../web/admin/lib/lang/sk_system_config.lng | 3 + .../web/admin/lib/lang/tr_server_config.lng | 18 + .../admin/lib/lang/tr_software_package.lng | 6 + .../lib/lang/tr_software_package_list.lng | 2 + .../web/admin/lib/lang/tr_software_repo.lng | 1 + .../web/admin/lib/lang/tr_system_config.lng | 3 + interface/web/admin/system_config_edit.php | 23 +- .../templates/system_config_misc_edit.htm | 24 + interface/web/client/client_edit.php | 180 +- interface/web/client/client_template_del.php | 7 + interface/web/client/client_template_edit.php | 2 +- interface/web/client/form/client.tform.php | 18 + interface/web/client/form/reseller.tform.php | 18 + interface/web/client/lib/lang/ar_client.lng | 1 + .../web/client/lib/lang/ar_client_del.lng | 1 + .../lib/lang/ar_client_template_list.lng | 1 + interface/web/client/lib/lang/ar_reseller.lng | 1 + interface/web/client/lib/lang/bg_client.lng | 1 + .../web/client/lib/lang/bg_client_del.lng | 1 + .../lib/lang/bg_client_template_list.lng | 1 + interface/web/client/lib/lang/bg_reseller.lng | 1 + interface/web/client/lib/lang/br_client.lng | 1 + .../web/client/lib/lang/br_client_del.lng | 1 + .../lib/lang/br_client_template_list.lng | 1 + interface/web/client/lib/lang/br_reseller.lng | 1 + interface/web/client/lib/lang/cz_client.lng | 1 + .../web/client/lib/lang/cz_client_del.lng | 1 + .../lib/lang/cz_client_template_list.lng | 1 + interface/web/client/lib/lang/cz_reseller.lng | 1 + interface/web/client/lib/lang/de_client.lng | 5 + interface/web/client/lib/lang/de_reseller.lng | 5 + interface/web/client/lib/lang/el_client.lng | 1 + .../web/client/lib/lang/el_client_del.lng | 1 + .../lib/lang/el_client_template_list.lng | 1 + interface/web/client/lib/lang/el_reseller.lng | 1 + interface/web/client/lib/lang/en_client.lng | 5 + interface/web/client/lib/lang/en_reseller.lng | 5 + interface/web/client/lib/lang/es_client.lng | 1 + .../web/client/lib/lang/es_client_del.lng | 1 + .../lib/lang/es_client_template_list.lng | 1 + interface/web/client/lib/lang/es_reseller.lng | 1 + interface/web/client/lib/lang/fi_client.lng | 1 + .../web/client/lib/lang/fi_client_del.lng | 1 + .../lib/lang/fi_client_template_list.lng | 1 + interface/web/client/lib/lang/fi_reseller.lng | 1 + interface/web/client/lib/lang/fr_client.lng | 1 + .../web/client/lib/lang/fr_client_del.lng | 1 + .../lib/lang/fr_client_template_list.lng | 1 + interface/web/client/lib/lang/fr_reseller.lng | 1 + interface/web/client/lib/lang/hr_client.lng | 1 + .../web/client/lib/lang/hr_client_del.lng | 1 + .../lib/lang/hr_client_template_list.lng | 1 + interface/web/client/lib/lang/hr_reseller.lng | 1 + interface/web/client/lib/lang/hu_client.lng | 1 + .../web/client/lib/lang/hu_client_del.lng | 1 + .../lib/lang/hu_client_template_list.lng | 1 + interface/web/client/lib/lang/hu_reseller.lng | 1 + interface/web/client/lib/lang/id_client.lng | 1 + .../web/client/lib/lang/id_client_del.lng | 1 + .../lib/lang/id_client_template_list.lng | 1 + interface/web/client/lib/lang/id_reseller.lng | 1 + interface/web/client/lib/lang/it_client.lng | 1 + .../web/client/lib/lang/it_client_del.lng | 1 + .../lib/lang/it_client_template_list.lng | 1 + interface/web/client/lib/lang/it_reseller.lng | 1 + interface/web/client/lib/lang/ja_client.lng | 1 + .../web/client/lib/lang/ja_client_del.lng | 1 + .../lib/lang/ja_client_template_list.lng | 1 + interface/web/client/lib/lang/ja_reseller.lng | 1 + interface/web/client/lib/lang/nl_client.lng | 1 + .../web/client/lib/lang/nl_client_del.lng | 1 + .../lib/lang/nl_client_template_list.lng | 1 + interface/web/client/lib/lang/nl_reseller.lng | 1 + interface/web/client/lib/lang/pl_client.lng | 1 + .../web/client/lib/lang/pl_client_del.lng | 1 + .../lib/lang/pl_client_template_list.lng | 1 + interface/web/client/lib/lang/pl_reseller.lng | 1 + interface/web/client/lib/lang/pt_client.lng | 1 + .../web/client/lib/lang/pt_client_del.lng | 1 + .../lib/lang/pt_client_template_list.lng | 1 + interface/web/client/lib/lang/pt_reseller.lng | 1 + interface/web/client/lib/lang/ro_client.lng | 1 + .../web/client/lib/lang/ro_client_del.lng | 1 + .../lib/lang/ro_client_template_list.lng | 1 + interface/web/client/lib/lang/ro_reseller.lng | 1 + interface/web/client/lib/lang/ru_client.lng | 1 + .../web/client/lib/lang/ru_client_del.lng | 1 + .../lib/lang/ru_client_template_list.lng | 1 + interface/web/client/lib/lang/ru_reseller.lng | 1 + interface/web/client/lib/lang/se_client.lng | 1 + .../web/client/lib/lang/se_client_del.lng | 1 + .../lib/lang/se_client_template_list.lng | 1 + interface/web/client/lib/lang/se_reseller.lng | 1 + interface/web/client/lib/lang/sk_client.lng | 1 + .../web/client/lib/lang/sk_client_del.lng | 1 + .../lib/lang/sk_client_template_list.lng | 1 + interface/web/client/lib/lang/sk_reseller.lng | 1 + interface/web/client/lib/lang/tr_client.lng | 1 + .../web/client/lib/lang/tr_client_del.lng | 1 + .../lib/lang/tr_client_template_list.lng | 1 + interface/web/client/lib/lang/tr_reseller.lng | 1 + interface/web/client/reseller_edit.php | 34 +- .../client/templates/client_edit_address.htm | 18 + .../client/templates/client_edit_limits.htm | 6 +- .../templates/reseller_edit_address.htm | 18 + interface/web/dashboard/dashboard.php | 32 +- .../dashlets/templates/mailquota.htm | 2 +- .../dashboard/dashlets/templates/quota.htm | 2 +- .../lib/lang/ar_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/ar_dashlet_quota.lng | 8 + .../lib/lang/bg_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/bg_dashlet_quota.lng | 8 + .../lib/lang/br_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/br_dashlet_quota.lng | 8 + .../lib/lang/cz_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/cz_dashlet_quota.lng | 8 + .../lib/lang/de_dashlet_mailquota.lng | 14 +- .../dashboard/lib/lang/de_dashlet_quota.lng | 14 +- .../lib/lang/el_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/el_dashlet_quota.lng | 8 + .../lib/lang/es_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/es_dashlet_quota.lng | 8 + .../lib/lang/fi_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/fi_dashlet_quota.lng | 8 + .../lib/lang/fr_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/fr_dashlet_quota.lng | 8 + .../lib/lang/hr_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/hr_dashlet_quota.lng | 8 + .../lib/lang/hu_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/hu_dashlet_quota.lng | 8 + .../lib/lang/id_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/id_dashlet_quota.lng | 8 + .../lib/lang/it_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/it_dashlet_quota.lng | 8 + .../lib/lang/ja_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/ja_dashlet_quota.lng | 8 + .../lib/lang/nl_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/nl_dashlet_quota.lng | 8 + .../lib/lang/pl_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/pl_dashlet_quota.lng | 8 + .../lib/lang/pt_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/pt_dashlet_quota.lng | 8 + .../lib/lang/ro_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/ro_dashlet_quota.lng | 8 + .../lib/lang/ru_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/ru_dashlet_quota.lng | 8 + .../lib/lang/se_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/se_dashlet_quota.lng | 8 + .../lib/lang/sk_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/sk_dashlet_quota.lng | 8 + .../lib/lang/tr_dashlet_mailquota.lng | 8 + .../dashboard/lib/lang/tr_dashlet_quota.lng | 8 + .../web/dashboard/templates/dashboard.htm | 2 +- interface/web/dns/lib/lang/tr_dns_mx.lng | 1 + .../web/help/lib/lang/ar_support_message.lng | 7 + .../help/lib/lang/ar_support_message_list.lng | 1 + .../web/help/lib/lang/bg_support_message.lng | 7 + .../help/lib/lang/bg_support_message_list.lng | 1 + .../web/help/lib/lang/br_support_message.lng | 7 + .../help/lib/lang/br_support_message_list.lng | 1 + .../web/help/lib/lang/cz_support_message.lng | 7 + .../help/lib/lang/cz_support_message_list.lng | 1 + .../web/help/lib/lang/el_support_message.lng | 7 + .../help/lib/lang/el_support_message_list.lng | 1 + .../web/help/lib/lang/es_support_message.lng | 7 + .../help/lib/lang/es_support_message_list.lng | 1 + .../web/help/lib/lang/fi_support_message.lng | 7 + .../help/lib/lang/fi_support_message_list.lng | 1 + .../web/help/lib/lang/fr_support_message.lng | 7 + .../help/lib/lang/fr_support_message_list.lng | 1 + .../web/help/lib/lang/hr_support_message.lng | 7 + .../help/lib/lang/hr_support_message_list.lng | 1 + .../web/help/lib/lang/hu_support_message.lng | 7 + .../help/lib/lang/hu_support_message_list.lng | 1 + .../web/help/lib/lang/id_support_message.lng | 7 + .../help/lib/lang/id_support_message_list.lng | 1 + .../web/help/lib/lang/it_support_message.lng | 7 + .../help/lib/lang/it_support_message_list.lng | 1 + .../web/help/lib/lang/ja_support_message.lng | 7 + .../help/lib/lang/ja_support_message_list.lng | 1 + .../web/help/lib/lang/nl_support_message.lng | 7 + .../help/lib/lang/nl_support_message_list.lng | 1 + .../web/help/lib/lang/pl_support_message.lng | 7 + .../help/lib/lang/pl_support_message_list.lng | 1 + .../web/help/lib/lang/pt_support_message.lng | 7 + .../help/lib/lang/pt_support_message_list.lng | 1 + .../web/help/lib/lang/ro_support_message.lng | 7 + .../help/lib/lang/ro_support_message_list.lng | 1 + .../web/help/lib/lang/ru_support_message.lng | 7 + .../help/lib/lang/ru_support_message_list.lng | 1 + .../web/help/lib/lang/se_support_message.lng | 7 + .../help/lib/lang/se_support_message_list.lng | 1 + .../web/help/lib/lang/sk_support_message.lng | 7 + .../help/lib/lang/sk_support_message_list.lng | 1 + .../web/help/lib/lang/tr_support_message.lng | 7 + .../help/lib/lang/tr_support_message_list.lng | 1 + interface/web/js/scrigo.js.php | 71 +- interface/web/login/lib/lang/ar.lng | 1 + interface/web/login/lib/lang/bg.lng | 1 + interface/web/login/lib/lang/br.lng | 1 + interface/web/login/lib/lang/cz.lng | 1 + interface/web/login/lib/lang/el.lng | 1 + interface/web/login/lib/lang/es.lng | 1 + interface/web/login/lib/lang/fi.lng | 1 + interface/web/login/lib/lang/fr.lng | 1 + interface/web/login/lib/lang/hr.lng | 1 + interface/web/login/lib/lang/hu.lng | 1 + interface/web/login/lib/lang/id.lng | 1 + interface/web/login/lib/lang/it.lng | 1 + interface/web/login/lib/lang/ja.lng | 1 + interface/web/login/lib/lang/nl.lng | 1 + interface/web/login/lib/lang/pl.lng | 1 + interface/web/login/lib/lang/pt.lng | 1 + interface/web/login/lib/lang/ro.lng | 1 + interface/web/login/lib/lang/ru.lng | 1 + interface/web/login/lib/lang/se.lng | 1 + interface/web/login/lib/lang/sk.lng | 1 + interface/web/login/lib/lang/tr.lng | 1 + .../web/mail/lib/lang/ar_spamfilter_users.lng | 2 + .../lib/lang/ar_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/bg_spamfilter_users.lng | 2 + .../lib/lang/bg_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/br_spamfilter_users.lng | 2 + .../lib/lang/br_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/cz_spamfilter_users.lng | 2 + .../lib/lang/cz_user_quota_stats_list.lng | 1 + interface/web/mail/lib/lang/de_mail_get.lng | 2 +- .../web/mail/lib/lang/el_spamfilter_users.lng | 2 + .../lib/lang/el_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/es_spamfilter_users.lng | 2 + .../lib/lang/es_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/fi_spamfilter_users.lng | 2 + .../lib/lang/fi_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/fr_spamfilter_users.lng | 2 + .../lib/lang/fr_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/hr_spamfilter_users.lng | 2 + .../lib/lang/hr_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/hu_spamfilter_users.lng | 2 + .../lib/lang/hu_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/id_spamfilter_users.lng | 2 + .../lib/lang/id_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/it_spamfilter_users.lng | 2 + .../lib/lang/it_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/ja_spamfilter_users.lng | 2 + .../lib/lang/ja_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/nl_spamfilter_users.lng | 2 + .../lib/lang/nl_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/pl_spamfilter_users.lng | 2 + .../lib/lang/pl_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/pt_spamfilter_users.lng | 2 + .../lib/lang/pt_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/ro_spamfilter_users.lng | 2 + .../lib/lang/ro_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/ru_spamfilter_users.lng | 2 + .../lib/lang/ru_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/se_spamfilter_users.lng | 2 + .../lib/lang/se_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/sk_spamfilter_users.lng | 2 + .../lib/lang/sk_user_quota_stats_list.lng | 1 + .../web/mail/lib/lang/tr_spamfilter_users.lng | 2 + .../lib/lang/tr_user_quota_stats_list.lng | 1 + interface/web/mail/mail_alias_edit.php | 6 + interface/web/mail/mail_get_edit.php | 6 + interface/web/mail/mail_user_edit.php | 2 +- interface/web/monitor/lib/lang/ar.lng | 6 + interface/web/monitor/lib/lang/bg.lng | 6 + interface/web/monitor/lib/lang/br.lng | 6 + interface/web/monitor/lib/lang/cz.lng | 6 + interface/web/monitor/lib/lang/el.lng | 6 + interface/web/monitor/lib/lang/es.lng | 6 + interface/web/monitor/lib/lang/fi.lng | 6 + interface/web/monitor/lib/lang/fr.lng | 6 + interface/web/monitor/lib/lang/hr.lng | 6 + interface/web/monitor/lib/lang/hu.lng | 6 + interface/web/monitor/lib/lang/id.lng | 6 + interface/web/monitor/lib/lang/it.lng | 6 + interface/web/monitor/lib/lang/ja.lng | 6 + interface/web/monitor/lib/lang/nl.lng | 6 + interface/web/monitor/lib/lang/pl.lng | 6 + interface/web/monitor/lib/lang/pt.lng | 6 + interface/web/monitor/lib/lang/ro.lng | 6 + interface/web/monitor/lib/lang/ru.lng | 6 + interface/web/monitor/lib/lang/se.lng | 6 + interface/web/monitor/lib/lang/sk.lng | 6 + interface/web/monitor/lib/lang/tr.lng | 6 + interface/web/sites/ajax_get_json.php | 33 +- interface/web/sites/cron_edit.php | 3 +- interface/web/sites/database_edit.php | 5 +- interface/web/sites/ftp_user_edit.php | 10 +- .../web/sites/lib/lang/ar_shell_user.lng | 2 + .../web/sites/lib/lang/ar_web_domain.lng | 7 + .../web/sites/lib/lang/ar_web_folder_user.lng | 1 + .../web/sites/lib/lang/bg_shell_user.lng | 2 + .../web/sites/lib/lang/bg_web_domain.lng | 7 + .../web/sites/lib/lang/bg_web_folder_user.lng | 1 + .../web/sites/lib/lang/br_shell_user.lng | 2 + .../web/sites/lib/lang/br_web_domain.lng | 7 + .../web/sites/lib/lang/br_web_folder_user.lng | 1 + .../web/sites/lib/lang/cz_shell_user.lng | 2 + .../web/sites/lib/lang/cz_web_domain.lng | 7 + .../web/sites/lib/lang/cz_web_folder_user.lng | 1 + .../sites/lib/lang/de_database_admin_list.lng | 1 + .../web/sites/lib/lang/de_database_list.lng | 1 + .../web/sites/lib/lang/de_web_domain.lng | 1 + .../web/sites/lib/lang/de_web_folder_user.lng | 1 + .../web/sites/lib/lang/el_shell_user.lng | 2 + .../web/sites/lib/lang/el_web_domain.lng | 7 + .../web/sites/lib/lang/el_web_folder_user.lng | 1 + .../sites/lib/lang/en_database_admin_list.lng | 1 + .../web/sites/lib/lang/en_database_list.lng | 3 +- .../web/sites/lib/lang/en_web_domain.lng | 1 + .../web/sites/lib/lang/en_web_folder_user.lng | 1 + .../web/sites/lib/lang/es_shell_user.lng | 2 + .../web/sites/lib/lang/es_web_domain.lng | 7 + .../web/sites/lib/lang/es_web_folder_user.lng | 1 + .../web/sites/lib/lang/fi_shell_user.lng | 2 + .../web/sites/lib/lang/fi_web_domain.lng | 7 + .../web/sites/lib/lang/fi_web_folder_user.lng | 1 + .../web/sites/lib/lang/fr_shell_user.lng | 2 + .../web/sites/lib/lang/fr_web_domain.lng | 7 + .../web/sites/lib/lang/fr_web_folder_user.lng | 1 + .../web/sites/lib/lang/hr_shell_user.lng | 2 + .../web/sites/lib/lang/hr_web_domain.lng | 7 + .../web/sites/lib/lang/hr_web_folder_user.lng | 1 + .../web/sites/lib/lang/hu_shell_user.lng | 2 + .../web/sites/lib/lang/hu_web_domain.lng | 7 + .../web/sites/lib/lang/hu_web_folder_user.lng | 1 + .../web/sites/lib/lang/id_shell_user.lng | 2 + .../web/sites/lib/lang/id_web_domain.lng | 7 + .../web/sites/lib/lang/id_web_folder_user.lng | 1 + .../web/sites/lib/lang/it_shell_user.lng | 2 + .../web/sites/lib/lang/it_web_domain.lng | 7 + .../web/sites/lib/lang/it_web_folder_user.lng | 1 + .../web/sites/lib/lang/ja_shell_user.lng | 2 + .../web/sites/lib/lang/ja_web_domain.lng | 7 + .../web/sites/lib/lang/ja_web_folder_user.lng | 1 + .../web/sites/lib/lang/nl_shell_user.lng | 2 + .../web/sites/lib/lang/nl_web_domain.lng | 7 + .../web/sites/lib/lang/nl_web_folder_user.lng | 1 + .../web/sites/lib/lang/pl_shell_user.lng | 2 + .../web/sites/lib/lang/pl_web_domain.lng | 7 + .../web/sites/lib/lang/pl_web_folder_user.lng | 1 + .../web/sites/lib/lang/pt_shell_user.lng | 2 + .../web/sites/lib/lang/pt_web_domain.lng | 7 + .../web/sites/lib/lang/pt_web_folder_user.lng | 1 + .../web/sites/lib/lang/ro_shell_user.lng | 2 + .../web/sites/lib/lang/ro_web_domain.lng | 7 + .../web/sites/lib/lang/ro_web_folder_user.lng | 1 + .../web/sites/lib/lang/ru_shell_user.lng | 2 + .../web/sites/lib/lang/ru_web_domain.lng | 7 + .../web/sites/lib/lang/ru_web_folder_user.lng | 1 + .../web/sites/lib/lang/se_shell_user.lng | 2 + .../web/sites/lib/lang/se_web_domain.lng | 7 + .../web/sites/lib/lang/se_web_folder_user.lng | 1 + .../web/sites/lib/lang/sk_shell_user.lng | 2 + .../web/sites/lib/lang/sk_web_domain.lng | 7 + .../web/sites/lib/lang/sk_web_folder_user.lng | 1 + .../web/sites/lib/lang/tr_shell_user.lng | 2 + .../web/sites/lib/lang/tr_web_domain.lng | 8 + .../web/sites/lib/lang/tr_web_folder_user.lng | 1 + interface/web/sites/list/database.list.php | 17 + interface/web/sites/shell_user_edit.php | 12 +- .../sites/templates/database_admin_list.htm | 3 + .../web/sites/templates/database_list.htm | 3 + .../sites/templates/web_domain_advanced.htm | 9 + .../web/sites/templates/web_domain_backup.htm | 9 + .../web/sites/templates/web_domain_edit.htm | 12 +- .../sites/templates/web_domain_redirect.htm | 11 +- .../web/sites/templates/web_domain_ssl.htm | 9 + .../web/sites/templates/web_domain_stats.htm | 9 + interface/web/sites/web_aliasdomain_edit.php | 3 +- interface/web/sites/web_domain_edit.php | 75 +- interface/web/sites/web_folder_edit.php | 3 +- interface/web/sites/web_folder_user_edit.php | 3 +- interface/web/sites/web_subdomain_edit.php | 3 +- .../web/sites/web_vhost_subdomain_edit.php | 3 +- interface/web/sites/webdav_user_edit.php | 3 +- remoting_client/examples/client_add.php | 2 +- remoting_client/examples/client_update.php | 7 +- server/cron_daily.php | 18 +- server/lib/app.inc.php | 2 +- server/lib/classes/db_mysql.inc.php | 9 + server/mods-available/dns_module.inc.php | 6 +- server/mods-available/web_module.inc.php | 6 +- .../plugins-available/apache2_plugin.inc.php | 32 +- server/plugins-available/nginx_plugin.inc.php | 90 +- server/server.php | 3 +- 532 files changed, 3832 insertions(+), 1134 deletions(-) create mode 100644 install/sql/incremental/upd_0056.sql create mode 100644 interface/web/admin/lib/lang/ar_software_package.lng create mode 100644 interface/web/admin/lib/lang/bg_software_package.lng create mode 100644 interface/web/admin/lib/lang/br_software_package.lng create mode 100644 interface/web/admin/lib/lang/cz_software_package.lng create mode 100644 interface/web/admin/lib/lang/el_software_package.lng create mode 100644 interface/web/admin/lib/lang/es_software_package.lng create mode 100644 interface/web/admin/lib/lang/fi_software_package.lng create mode 100644 interface/web/admin/lib/lang/fr_software_package.lng create mode 100644 interface/web/admin/lib/lang/hr_software_package.lng create mode 100644 interface/web/admin/lib/lang/hu_software_package.lng create mode 100644 interface/web/admin/lib/lang/id_software_package.lng create mode 100644 interface/web/admin/lib/lang/it_software_package.lng create mode 100644 interface/web/admin/lib/lang/ja_software_package.lng create mode 100644 interface/web/admin/lib/lang/nl_software_package.lng create mode 100644 interface/web/admin/lib/lang/pl_software_package.lng create mode 100644 interface/web/admin/lib/lang/pt_software_package.lng create mode 100644 interface/web/admin/lib/lang/ro_software_package.lng create mode 100644 interface/web/admin/lib/lang/ru_software_package.lng create mode 100644 interface/web/admin/lib/lang/se_software_package.lng create mode 100644 interface/web/admin/lib/lang/sk_software_package.lng create mode 100644 interface/web/admin/lib/lang/tr_software_package.lng create mode 100644 interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/ar_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/bg_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/br_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/cz_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/el_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/es_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/fi_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/fr_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/hr_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/hu_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/id_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/it_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/ja_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/nl_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/pl_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/pt_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/ro_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/ru_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/se_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/sk_dashlet_quota.lng create mode 100644 interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng create mode 100644 interface/web/dashboard/lib/lang/tr_dashlet_quota.lng diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index a0136f660..61130a136 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -163,7 +163,23 @@ class installer_dist extends installer_base { if(!is_group($cf['vmail_groupname'])) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); $command = 'useradd -g '.$cf['vmail_groupname'].' -u '.$cf['vmail_userid'].' '.$cf['vmail_username'].' -d '.$cf['vmail_mailbox_base'].' -m'; - if(!is_user($cf['vmail_username'])) caselog("$command &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + if(!is_user($cf['vmail_username'])) caselog("$command &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); + + //* These postconf commands will be executed on installation and update + $server_ini_rec = $this->db->queryOneRecord("SELECT config FROM server WHERE server_id = ".$conf['server_id']); + $server_ini_array = ini_to_array(stripslashes($server_ini_rec['config'])); + unset($server_ini_rec); + + //* If there are RBL's defined, format the list and add them to smtp_recipient_restrictions to prevent removeal after an update + $rbl_list = ''; + if (@isset($server_ini_array['mail']['realtime_blackhole_list']) && $server_ini_array['mail']['realtime_blackhole_list'] != '') { + $rbl_hosts = explode(",",str_replace(" ", "", $server_ini_array['mail']['realtime_blackhole_list'])); + foreach ($rbl_hosts as $key => $value) { + $rbl_list .= ", reject_rbl_client ". $value; + } + } + unset($rbl_hosts); + unset($server_ini_array); //* These postconf commands will be executed on installation and update $postconf_placeholders = array('{config_dir}' => $config_dir, diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 57b2cd6d6..7a2fa264d 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -178,6 +178,22 @@ class installer_dist extends installer_base { if($cf['vmail_mailbox_base'] != '' && strlen($cf['vmail_mailbox_base']) >= 10 && $this->is_update === false) exec('chown -R '.$cf['vmail_username'].':'.$cf['vmail_groupname'].' '.$cf['vmail_mailbox_base']); + //* These postconf commands will be executed on installation and update + $server_ini_rec = $this->db->queryOneRecord("SELECT config FROM server WHERE server_id = ".$conf['server_id']); + $server_ini_array = ini_to_array(stripslashes($server_ini_rec['config'])); + unset($server_ini_rec); + + //* If there are RBL's defined, format the list and add them to smtp_recipient_restrictions to prevent removeal after an update + $rbl_list = ''; + if (@isset($server_ini_array['mail']['realtime_blackhole_list']) && $server_ini_array['mail']['realtime_blackhole_list'] != '') { + $rbl_hosts = explode(",",str_replace(" ", "", $server_ini_array['mail']['realtime_blackhole_list'])); + foreach ($rbl_hosts as $key => $value) { + $rbl_list .= ", reject_rbl_client ". $value; + } + } + unset($rbl_hosts); + unset($server_ini_array); + //* These postconf commands will be executed on installation and update $postconf_placeholders = array('{config_dir}' => $config_dir, '{vmail_mailbox_base}' => $cf['vmail_mailbox_base'], diff --git a/install/install.php b/install/install.php index 96c164ca2..c6b85a3be 100644 --- a/install/install.php +++ b/install/install.php @@ -571,7 +571,8 @@ if($install_mode == 'standard') { }*/ //** Configure ISPConfig :-) - if(strtolower($inst->simple_query('Install ISPConfig Web Interface',array('y','n'),'y')) == 'y') { + $install_ispconfig_interface_default = ($conf['mysql']['master_slave_setup'] == 'y')?'n':'y'; + if(strtolower($inst->simple_query('Install ISPConfig Web Interface',array('y','n'),$install_ispconfig_interface_default)) == 'y') { swriteln('Installing ISPConfig'); //** We want to check if the server is a module or cgi based php enabled server diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 2c975584e..1e8459e2a 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -400,7 +400,7 @@ class installer_base { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } - $query = "GRANT SELECT, UPDATE(`status`) ON ".$value['db'].".`sys_datalog` TO '".$value['user']."'@'".$host."' "; + $query = "GRANT SELECT, UPDATE(`status`, `error`) ON ".$value['db'].".`sys_datalog` TO '".$value['user']."'@'".$host."' "; if ($verbose){ echo $query ."\n"; } @@ -2094,8 +2094,8 @@ class installer_base { } $root_cron_jobs = array( - "* * * * * ".$install_dir."/server/server.sh > /dev/null 2>> ".$conf['ispconfig_log_dir']."/cron.log", - "30 00 * * * ".$install_dir."/server/cron_daily.sh > /dev/null 2>> ".$conf['ispconfig_log_dir']."/cron.log" + "* * * * * ".$install_dir."/server/server.sh 2>&1 > /dev/null | while read line; do echo `/bin/date` \"\$line\" >> ".$conf['ispconfig_log_dir']."/cron.log; done", + "30 00 * * * ".$install_dir."/server/cron_daily.sh 2>&1 > /dev/null | while read line; do echo `/bin/date` \"\$line\" >> ".$conf['ispconfig_log_dir']."/cron.log; done" ); if ($conf['nginx']['installed'] == true) { diff --git a/install/lib/mysql.lib.php b/install/lib/mysql.lib.php index 0dc8f4bbb..b7f1ae872 100644 --- a/install/lib/mysql.lib.php +++ b/install/lib/mysql.lib.php @@ -35,7 +35,7 @@ class db var $dbUser = ""; // database authorized user var $dbPass = ""; // user's password var $dbCharset = ""; // what charset comes and goes to mysql: utf8 / latin1 - var $linkId = 0; // last result of mysql_connect() + var $linkId = false; // last result of mysql_connect() var $queryId = 0; // last result of mysql_query() var $record = array(); // last record fetched var $autoCommit = 1; // Autocommit Transactions @@ -61,8 +61,8 @@ class db // error handler function updateError($location) { - $this->errorNumber = mysql_errno(); - $this->errorMessage = mysql_error(); + $this->errorNumber = mysqli_errno($this->linkId); + $this->errorMessage = mysqli_error($this->linkId); $this->errorLocation = $location; if($this->errorNumber && $this->show_error_messages) { @@ -73,16 +73,16 @@ class db function connect() { - if($this->linkId == 0) + if(!$this->linkId) { - $this->linkId = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass); + $this->linkId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass); if(!$this->linkId) { - $this->updateError('DB::connect()
mysql_connect'); + $this->updateError('DB::connect()
mysqli_connect'); return false; } - $this->queryId = @mysql_query('SET NAMES '.$this->dbCharset, $this->linkId); + $this->queryId = @mysqli_query($this->linkId, 'SET NAMES '.$this->dbCharset); } return true; } @@ -94,14 +94,14 @@ class db return false; } if($this->dbName != '') { - if(!mysql_select_db($this->dbName, $this->linkId)) + if(!mysqli_select_db($this->linkId, $this->dbName)) { - $this->updateError('DB::connect()
mysql_select_db'); + $this->updateError('DB::connect()
mysqli_select_db'); return false; } } - $this->queryId = @mysql_query($queryString, $this->linkId); - $this->updateError('DB::query('.$queryString.')
mysql_query'); + $this->queryId = @mysqli_query($this->linkId, $queryString); + $this->updateError('DB::query('.$queryString.')
mysqli_query'); if(!$this->queryId) { return false; @@ -138,8 +138,8 @@ class db // returns the next record in an array function nextRecord() { - $this->record = mysql_fetch_assoc($this->queryId); - $this->updateError('DB::nextRecord()
mysql_fetch_array'); + $this->record = mysqli_fetch_assoc($this->queryId); + $this->updateError('DB::nextRecord()
mysqli_fetch_array'); if(!$this->record || !is_array($this->record)) { return false; @@ -151,18 +151,18 @@ class db // returns number of rows returned by the last select query function numRows() { - return mysql_num_rows($this->queryId); + return mysqli_num_rows($this->queryId); } function affectedRows() { - return mysql_affected_rows($this->linkId); + return mysqli_affected_rows($this->linkId); } // returns mySQL insert id function insertID() { - return mysql_insert_id($this->linkId); + return mysqli_insert_id($this->linkId); } // Check der variablen @@ -175,7 +175,7 @@ class db // Check der variablen function quote($formfield) { - return mysql_real_escape_string($formfield); + return mysqli_real_escape_string($this->linkId, $formfield); } // Check der variablen @@ -359,11 +359,22 @@ class db if($database_name == ''){ $database_name = $this->dbName; } - $result = mysql_query("SHOW TABLES FROM `$database_name`"); + + $tables = $this->queryAllRecords("SHOW TABLES FROM `$database_name`"); + $tb_names = array(); + if(is_array($tables) && !empty($tables)){ + for($i = 0; $i < sizeof($tables); $i++){ + $tb_names[$i] = $tables[$i]['Tables_in_'.$database_name]; + } + } + + /* + $result = mysqli_query("SHOW TABLES FROM `$database_name`"); $tb_names = array(); - for ($i = 0; $i < mysql_num_rows($result); $i++) { + for ($i = 0; $i < mysqli_num_rows($result); $i++) { $tb_names[$i] = mysql_tablename($result, $i); } + */ return $tb_names; } @@ -438,35 +449,7 @@ class db } else { return false; } - - - //$this->createTable('tester',$columns); - - /* - $result = mysql_list_fields($go_info["server"]["db_name"],$table_name); - $fields = mysql_num_fields ($result); - $i = 0; - $table = mysql_field_table ($result, $i); - while ($i < $fields) { - $name = mysql_field_name ($result, $i); - $type = mysql_field_type ($result, $i); - $len = mysql_field_len ($result, $i); - $flags = mysql_field_flags ($result, $i); - print_r($flags); - - $columns = array(name => $name, - type => "", - defaultValue => "", - isnull => 1, - option => ""); - $returnvar[] = $columns; - - $i++; - } - */ - - - + } function mapType($metaType,$typeValue) { diff --git a/install/sql/incremental/upd_0055.sql b/install/sql/incremental/upd_0055.sql index 7bcfa71f3..3a7c5d586 100644 --- a/install/sql/incremental/upd_0055.sql +++ b/install/sql/incremental/upd_0055.sql @@ -1,2 +1,3 @@ ALTER TABLE `web_backup` CHANGE `backup_type` `backup_type` enum('web','mongodb','mysql') NOT NULL DEFAULT 'web'; ALTER TABLE `web_database_user` ADD `database_password_mongo` varchar(32) DEFAULT NULL AFTER `database_password`; +ALTER TABLE `sys_datalog` ADD `error` MEDIUMTEXT NULL DEFAULT NULL; diff --git a/install/sql/incremental/upd_0056.sql b/install/sql/incremental/upd_0056.sql new file mode 100644 index 000000000..c7cb5285c --- /dev/null +++ b/install/sql/incremental/upd_0056.sql @@ -0,0 +1,12 @@ +CREATE TABLE `client_template_assigned` ( + `assigned_template_id` bigint(20) NOT NULL auto_increment, + `client_id` bigint(11) NOT NULL DEFAULT '0', + `client_template_id` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`assigned_template_id`), + KEY `client_id` (`client_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +ALTER TABLE `client` ADD `gender` enum('','m','f') NOT NULL DEFAULT '' AFTER `company_id`, + ADD `locked` enum('n','y') NOT NULL DEFAULT 'n' AFTER `created_at`, + ADD `canceled` enum('n','y') NOT NULL DEFAULT 'n' AFTER `locked`, + ADD `tmp_data` mediumblob AFTER `canceled` ; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index e9bdf9531..8480e7644 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -145,6 +145,7 @@ CREATE TABLE `client` ( `sys_perm_other` varchar(5) DEFAULT NULL, `company_name` varchar(64) DEFAULT NULL, `company_id` varchar(30) DEFAULT NULL, + `gender` enum('','m','f') NOT NULL DEFAULT '', `contact_name` varchar(64) DEFAULT NULL, `customer_no` varchar(64) DEFAULT NULL, `vat_id` varchar(64) DEFAULT NULL, @@ -225,6 +226,9 @@ CREATE TABLE `client` ( `template_master` int(11) unsigned NOT NULL DEFAULT '0', `template_additional` text NOT NULL DEFAULT '', `created_at` bigint(20) DEFAULT NULL, + `locked` enum('n','y') NOT NULL DEFAULT 'n', + `canceled` enum('n','y') NOT NULL DEFAULT 'n', + `tmp_data` mediumblob, `id_rsa` varchar(2000) NOT NULL DEFAULT '', `ssh_rsa` varchar(600) NOT NULL DEFAULT '', PRIMARY KEY (`client_id`) @@ -315,6 +319,19 @@ CREATE TABLE `client_template` ( -- -------------------------------------------------------- +-- +-- Table structure for table `client_template_assigned` +-- + +CREATE TABLE `client_template_assigned` ( + `assigned_template_id` bigint(20) NOT NULL auto_increment, + `client_id` bigint(11) NOT NULL DEFAULT '0', + `client_template_id` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`assigned_template_id`), + KEY `client_id` (`client_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +-- -------------------------------------------------------- + -- -- Table structure for table `country` -- @@ -1428,6 +1445,7 @@ CREATE TABLE `sys_datalog` ( `user` varchar(255) NOT NULL default '', `data` longtext NOT NULL, `status` set('pending','ok','warning','error') NOT NULL default 'ok', + `error` mediumtext, PRIMARY KEY (`datalog_id`), KEY `server_id` (`server_id`,`status`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; @@ -2179,6 +2197,6 @@ INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, -- Dumping data for table `sys_config` -- -INSERT INTO sys_config VALUES ('1','db','db_version','3.0.5.2'); +INSERT INTO sys_config VALUES ('1','db','db_version','3.0.5.3'); SET FOREIGN_KEY_CHECKS = 1; diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index 1c967327b..8c8bedd2b 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -56,7 +56,7 @@ $revision = str_replace(array('Revision:','$',' '), '', $svn_revision); //** Application define('ISPC_APP_TITLE', 'ISPConfig'); -define('ISPC_APP_VERSION', '3.0.5.2'); +define('ISPC_APP_VERSION', '3.0.5.3'); define('DEVSYSTEM', 0); diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index 24f7eba57..abb89311c 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -41,3 +41,9 @@ tab_change_warning=n use_loadindicator=y use_combobox=y maintenance_mode=n +admin_dashlets_left= +admin_dashlets_right= +reseller_dashlets_left= +reseller_dashlets_right= +client_dashlets_left= +client_dashlets_right= diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php index d8e641d9a..5a5cbe9a7 100644 --- a/interface/lib/classes/aps_guicontroller.inc.php +++ b/interface/lib/classes/aps_guicontroller.inc.php @@ -1,846 +1,846 @@ -getDocNamespaces(true); - foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url); - - return $sxe; - } - - /** - * Applies a RegEx pattern onto a location path in order to secure it against - * code injections and invalid input - * - * @param $location_unfiltered the file path to secure - * @return $location - */ - private function secureLocation($location_unfiltered) - { - // Filter invalid slashes from string - $location = preg_replace(array('#/+#', '#\.+#', '#\0+#', '#\\\\+#'), - array('/', '', '', '/'), - $location_unfiltered); - - // Remove a beginning or trailing slash - if(substr($location, -1) == '/') $location = substr($location, 0, strlen($location) - 1); - if(substr($location, 0, 1) == '/') $location = substr($location, 1); - - return $location; - } - - /** - * Gets the CustomerID (ClientID) which belongs to a specific domain - * - * @param $domain the domain - * @return $customerid - */ - private function getCustomerIDFromDomain($domain) - { - global $app; - $customerid = 0; - - $customerdata = $app->db->queryOneRecord("SELECT client_id FROM sys_group, web_domain - WHERE web_domain.sys_groupid = sys_group.groupid - AND web_domain.domain = '".$app->db->quote($domain)."';"); - if(!empty($customerdata)) $customerid = $customerdata['client_id']; - - return $customerid; - } - - /** - * Returns the server_id for an already installed instance. Is actually - * just a little helper method to avoid redundant code - * - * @param $instanceid the instance to process - * @return $webserver_id the server_id - */ - private function getInstanceDataForDatalog($instanceid) - { - global $app; - $webserver_id = ''; - - $websrv = $app->db->queryOneRecord("SELECT server_id FROM web_domain - WHERE domain = (SELECT value FROM aps_instances_settings - WHERE name = 'main_domain' AND instance_id = ".$app->db->quote($instanceid).");"); - - // If $websrv is empty, an error has occured. Domain no longer existing? Settings table damaged? - // Anyhow, remove this instance record because it's not useful at all - if(empty($websrv)) - { - $app->db->query("DELETE FROM aps_instances WHERE id = ".$app->db->quote($instanceid).";"); - $app->db->query("DELETE FROM aps_instances_settings WHERE instance_id = ".$app->db->quote($instanceid).";"); - } - else $webserver_id = $websrv['server_id']; - - return $webserver_id; - } - - /** - * Finds out if there is a newer package version for - * a given (possibly valid) package ID - * - * @param $id the ID to check - * @return $newer_pkg_id the newer package ID - */ - public function getNewestPackageID($id) - { - global $app; - - if(preg_match('/^[0-9]+$/', $id) != 1) return 0; - - $result = $app->db->queryOneRecord("SELECT id, name, - CONCAT(version, '-', CAST(`release` AS CHAR)) AS current_version - FROM aps_packages - WHERE name = (SELECT name FROM aps_packages WHERE id = ".$app->db->quote($id).") - ORDER BY REPLACE(version, '.', '')+0 DESC, `release` DESC"); - - if(!empty($result) && ($id != $result['id'])) return $result['id']; - - return 0; - } - - /** - * Validates a given package ID - * - * @param $id the ID to check - * @param $is_admin a flag to allow locked IDs too (for admin calls) - * @return boolean - */ - public function isValidPackageID($id, $is_admin = false) - { - global $app; - - if(preg_match('/^[0-9]+$/', $id) != 1) return false; - - $sql_ext = (!$is_admin) ? - 'package_status = '.PACKAGE_ENABLED.' AND' : - '(package_status = '.PACKAGE_ENABLED.' OR package_status = '.PACKAGE_LOCKED.') AND'; - - $result = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE ".$sql_ext." id = ".$app->db->quote($id).";"); - if(!$result) return false; - - return true; - } - - /** - * Validates a given instance ID - * - * @param $id the ID to check - * @param $client_id the calling client ID - * @param $is_admin a flag to ignore the client ID check for admins - * @return boolean - */ - public function isValidInstanceID($id, $client_id, $is_admin = false) - { - global $app; - - if(preg_match('/^[0-9]+$/', $id) != 1) return false; - - // Only filter if not admin - $sql_ext = (!$is_admin) ? 'customer_id = '.$app->db->quote($client_id).' AND' : ''; - - $result = $app->db->queryOneRecord('SELECT id FROM aps_instances WHERE '.$sql_ext.' id = '.$app->db->quote($id).';'); - if(!$result) return false; - - return true; - } - - /** - * Creates a new database record for the package instance and - * an install task - * - * @param $settings the settings to enter into the DB - * @param $packageid the PackageID - */ - public function createPackageInstance($settings, $packageid) - { - global $app; - - $app->uses('tools_sites'); - - $webserver_id = 0; - $websrv = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '".$app->db->quote($settings['main_domain'])."';"); - if(!empty($websrv)) $webserver_id = $websrv['server_id']; - $customerid = $this->getCustomerIDFromDomain($settings['main_domain']); - - if(empty($settings) || empty($webserver_id)) return false; - - //* Get server config of the web server - $app->uses("getconf"); - $web_config = $app->getconf->get_server_config($app->functions->intval($websrv["server_id"]),'web'); - - //* Set PHP mode to php-fcgi and enable suexec in website on apache servers / set PHP mode to PHP-FPM on nginx servers - if($web_config['server_type'] == 'apache') { - if(($websrv['php'] != 'fast-cgi' || $websrv['suexec'] != 'y') && $websrv['php'] != 'php-fpm') { - $app->db->datalogUpdate('web_domain', "php = 'fast-cgi', suexec = 'y'", 'domain_id', $websrv['domain_id']); - } - } else { - // nginx - if($websrv['php'] != 'php-fpm' && $websrv['php'] != 'fast-cgi') { - $app->db->datalogUpdate('web_domain', "php = 'php-fpm'", 'domain_id', $websrv['domain_id']); - } - } - - - //* Create the MySQL database for the application - $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($packageid).';'); - $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; - $sxe = $this->readInMetaFile($metafile); - - $db_id = parent::getXPathValue($sxe, '//db:id'); - if (!empty($db_id)) { - $global_config = $app->getconf->get_global_config('sites'); - - $tmp = array(); - $tmp['parent_domain_id'] = $websrv['domain_id']; - $tmp['sys_groupid'] = $websrv['sys_groupid']; - $dbname_prefix = $app->tools_sites->replacePrefix($global_config['dbname_prefix'], $tmp); - $dbuser_prefix = $app->tools_sites->replacePrefix($global_config['dbuser_prefix'], $tmp); - unset($tmp); - - // get information if the webserver is a db server, too - $web_server = $app->db->queryOneRecord("SELECT server_id,server_name,db_server FROM server WHERE server_id = ".$websrv['server_id']); - if($web_server['db_server'] == 1) { - // create database on "localhost" (webserver) - $mysql_db_server_id = $websrv['server_id']; - $mysql_db_host = 'localhost'; - $mysql_db_remote_access = 'n'; - $mysql_db_remote_ips = ''; - } else { - //* get the default database server of the client - $client = $app->db->queryOneRecord("SELECT default_dbserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ".$websrv['sys_groupid']); - if(is_array($client) && $client['default_dbserver'] > 0 && $client['default_dbserver'] != $websrv['server_id']) { - $mysql_db_server_id = $client['default_dbserver']; - $dbserver_config = $web_config = $app->getconf->get_server_config($app->functions->intval($mysql_db_server_id),'server'); - $mysql_db_host = $dbserver_config['ip_address']; - $mysql_db_remote_access = 'y'; - $webserver_config = $app->getconf->get_server_config($app->functions->intval($websrv['server_id']),'server'); - $mysql_db_remote_ips = $webserver_config['ip_address']; - } else { - /* I left this in place for a fallback that should NEVER! happen. - * if we reach this point it means that there is NO default db server for the client - * AND the webserver has NO db service enabled. - * We have to abort the aps installation here... so I added a return false - * although this does not present any error message to the user. - */ - return false; - - /*$mysql_db_server_id = $websrv['server_id']; - $mysql_db_host = 'localhost'; - $mysql_db_remote_access = 'n'; - $mysql_db_remote_ips = '';*/ - } - } - - //* Find a free db name for the app - for($n = 1; $n <= 1000; $n++) { - $mysql_db_name = ($dbname_prefix != '' ? $dbname_prefix.'aps'.$n : uniqid('aps')); - $tmp = $app->db->queryOneRecord("SELECT count(database_id) as number FROM web_database WHERE database_name = '".$app->db->quote($mysql_db_name)."'"); - if($tmp['number'] == 0) break; - } - //* Find a free db username for the app - for($n = 1; $n <= 1000; $n++) { - $mysql_db_user = ($dbuser_prefix != '' ? $dbuser_prefix.'aps'.$n : uniqid('aps')); - $tmp = $app->db->queryOneRecord("SELECT count(database_user_id) as number FROM web_database_user WHERE database_user = '".$app->db->quote($mysql_db_user)."'"); - if($tmp['number'] == 0) break; - } - - $mysql_db_password = $settings['main_database_password']; - - //* Create the mysql database user - $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `database_user`, `database_user_prefix`, `database_password`) - VALUES( ".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', 0, '$mysql_db_user', '".$app->db->quote($dbuser_prefix) . "', PASSWORD('$mysql_db_password'))"; - $mysql_db_user_id = $app->db->datalogInsert('web_database_user', $insert_data, 'database_user_id'); - - //* Create the mysql database - $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `parent_domain_id`, `type`, `database_name`, `database_name_prefix`, `database_user_id`, `database_ro_user_id`, `database_charset`, `remote_access`, `remote_ips`, `backup_copies`, `active`, `backup_interval`) - VALUES( ".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', $mysql_db_server_id, ".$websrv['domain_id'].", 'mysql', '$mysql_db_name', '" . $app->db->quote($dbname_prefix) . "', '$mysql_db_user_id', 0, '', '$mysql_db_remote_access', '$mysql_db_remote_ips', ".$websrv['backup_copies'].", 'y', '".$websrv['backup_interval']."')"; - $app->db->datalogInsert('web_database', $insert_data, 'database_id'); - - //* Add db details to package settings - $settings['main_database_host'] = $mysql_db_host; - $settings['main_database_name'] = $mysql_db_name; - $settings['main_database_login'] = $mysql_db_user; - - } - - //* Insert new package instance - $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `customer_id`, `package_id`, `instance_status`) VALUES (".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', ".$app->db->quote($webserver_id).",".$app->db->quote($customerid).", ".$app->db->quote($packageid).", ".INSTANCE_PENDING.")"; - $InstanceID = $app->db->datalogInsert('aps_instances', $insert_data, 'id'); - - //* Insert all package settings - if(is_array($settings)) { - foreach($settings as $key => $value) { - $insert_data = "(server_id, instance_id, name, value) VALUES (".$app->db->quote($webserver_id).",".$app->db->quote($InstanceID).", '".$app->db->quote($key)."', '".$app->db->quote($value)."')"; - $app->db->datalogInsert('aps_instances_settings', $insert_data, 'id'); - } - } - - //* Set package status to install afetr we inserted the settings - $app->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_INSTALL, 'id', $InstanceID); - } - - /** - * Sets the status of an instance to "should be removed" and creates a - * datalog entry to give the ISPConfig server a real removal advice - * - * @param $instanceid the instance to delete - */ - public function deleteInstance($instanceid) - { - global $app; - /* - $app->db->query("UPDATE aps_instances SET instance_status = ".INSTANCE_REMOVE." WHERE id = ".$instanceid.";"); - - $webserver_id = $this->getInstanceDataForDatalog($instanceid); - if($webserver_id == '') return; - - // Create a sys_datalog entry for deletion - $datalog = array('Instance_id' => $instanceid, 'server_id' => $webserver_id); - $app->db->datalogSave('aps', 'DELETE', 'id', $instanceid, array(), $datalog); - */ - - $sql = "SELECT web_database.database_id as database_id, web_database.database_user_id as `database_user_id` FROM aps_instances_settings, web_database WHERE aps_instances_settings.value = web_database.database_name AND aps_instances_settings.value = aps_instances_settings.name = 'main_database_name' AND aps_instances_settings.instance_id = ".$instanceid." LIMIT 0,1"; - $tmp = $app->db->queryOneRecord($sql); - if($tmp['database_id'] > 0) $app->db->datalogDelete('web_database', 'database_id', $tmp['database_id']); - - $database_user = $tmp['database_user_id']; - $tmp = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `database_user_id` = '" . $app->functions->intval($database_user) . "' OR `database_ro_user_id` = '" . $app->functions->intval($database_user) . "'"); - if($tmp['cnt'] < 1) $app->db->datalogDelete('web_database_user', 'database_user_id', $database_user); - - $app->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_REMOVE, 'id', $instanceid); - - } - - /** - * Sets the status of an instance to "installation planned" and creates a - * datalog entry to re-install the package. The existing package is simply overwritten. - * - * @param $instanceid the instance to delete - */ - public function reinstallInstance($instanceid) - { - global $app; - - /* - $app->db->query("UPDATE aps_instances SET instance_status = ".INSTANCE_INSTALL." WHERE id = ".$instanceid.";"); - - $webserver_id = $this->getInstanceDataForDatalog($instanceid); - if($webserver_id == '') return; - - // Create a sys_datalog entry for re-installation - $datalog = array('instance_id' => $instanceid, 'server_id' => $webserver_id); - $app->db->datalogSave('aps', 'INSERT', 'id', $instanceid, array(), $datalog); - */ - - $sql = "SELECT web_database.database_id as database_id FROM aps_instances_settings, web_database WHERE aps_instances_settings.value = web_database.database_name AND aps_instances_settings.value = aps_instances_settings.name = 'main_database_name' AND aps_instances_settings.instance_id = ".$instanceid." LIMIT 0,1"; - $tmp = $app->db->queryOneRecord($sql); - if($tmp['database_id'] > 0) $app->db->datalogDelete('web_database', 'database_id', $tmp['database_id']); - - $app->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_INSTALL, 'id', $instanceid); - } - - /** - * Read the settings to be filled when installing - * - * @param $id the internal ID of the package - * @return array - */ - public function getPackageSettings($id) - { - global $app; - - $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($id).';'); - - // Load in meta file if existing and register its namespaces - $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; - if(!file_exists($metafile)) - return array('error' => 'The metafile for '.$settings['Name'].' couldn\'t be found'); - - $sxe = $this->readInMetaFile($metafile); - - $groupsettings = parent::getXPathValue($sxe, '//settings/group/setting', true); - if(empty($groupsettings)) return array(); - - $settings = array(); - foreach($groupsettings as $setting) - { - $setting_id = strval($setting['id']); - - if($setting['type'] == 'string' || $setting['type'] == 'email' || $setting['type'] == 'integer' - || $setting['type'] == 'float' || $setting['type'] == 'domain-name') - { - $settings[] = array('SettingID' => $setting_id, - 'SettingName' => $setting->name, - 'SettingDescription' => $setting->description, - 'SettingType' => $setting['type'], - 'SettingInputType' => 'string', - 'SettingDefaultValue' => strval($setting['default-value']), - 'SettingRegex' => $setting['regex'], - 'SettingMinLength' => $setting['min-length'], - 'SettingMaxLength' => $setting['max-length']); - } - else if($setting['type'] == 'password') - { - $settings[] = array('SettingID' => $setting_id, - 'SettingName' => $setting->name, - 'SettingDescription' => $setting->description, - 'SettingType' => 'password', - 'SettingInputType' => 'password', - 'SettingDefaultValue' => '', - 'SettingRegex' => $setting['regex'], - 'SettingMinLength' => $setting['min-length'], - 'SettingMaxLength' => $setting['max-length']); - } - else if($setting['type'] == 'boolean') - { - $settings[] = array('SettingID' => $setting_id, - 'SettingName' => $setting->name, - 'SettingDescription' => $setting->description, - 'SettingType' => 'boolean', - 'SettingInputType' => 'checkbox', - 'SettingDefaultValue' => strval($setting['default-value'])); - } - else if($setting['type'] == 'enum') - { - $choices = array(); - foreach($setting->choice as $choice) - { - $choices[] = array('EnumID' => strval($choice['id']), - 'EnumName' => $choice->name); - } - $settings[] = array('SettingID' => $setting_id, - 'SettingName' => $setting->name, - 'SettingDescription' => $setting->description, - 'SettingType' => 'enum', - 'SettingInputType' => 'select', - 'SettingDefaultValue' => strval($setting['default-value']), - 'SettingChoices' => $choices); - } - } - - return $settings; - } - - /** - * Validates the user input according to the settings array and - * delivers errors if occurring - * - * @param $input the user $_POST array - * @param $pkg_details the package details - * @param $settings the package settings array - * @return array in this structure: - * array(2) { - * ["input"]=> ... - * ["errors"]=> ... - * } - */ - public function validateInstallerInput($postinput, $pkg_details, $domains, $settings = array()) - { - global $app; - - $ret = array(); - $input = array(); - $error = array(); - - // Main domain (obligatory) - if(isset($postinput['main_domain'])) - { - if(!in_array($postinput['main_domain'], $domains)) $error[] = $app->lng('error_main_domain'); - else $input['main_domain'] = $postinput['main_domain']; - } - else $error[] = $app->lng('error_main_domain'); - - // Main location (not obligatory but must be supplied) - if(isset($postinput['main_location'])) - { - $temp_errstr = ''; - // It can be empty but if the user did write something, check it - $userinput = false; - if(strlen($postinput['main_location']) > 0) $userinput = true; - - // Filter invalid input slashes (twice!) - $main_location = $this->secureLocation($postinput['main_location']); - $main_location = $this->secureLocation($main_location); - // Only allow digits, words, / and - - $main_location = preg_replace("/[^\d\w\/\-]/i", "", $main_location); - if($userinput && (strlen($main_location) == 0)) $temp_errstr = $app->lng('error_inv_main_location'); - - // Find out document_root and make sure no apps are installed twice to one location - if(in_array($postinput['main_domain'], $domains)) - { - $docroot = $app->db->queryOneRecord("SELECT document_root FROM web_domain - WHERE domain = '".$app->db->quote($postinput['main_domain'])."';"); - $new_path = $docroot['document_root']; - if(substr($new_path, -1) != '/') $new_path .= '/'; - $new_path .= $main_location; - - // Get the $customerid which belongs to the selected domain - $customerid = $this->getCustomerIDFromDomain($postinput['main_domain']); - - // First get all domains used for an install, then their loop them - // and get the corresponding document roots as well as the defined - // locations. If an existing doc_root + location matches with the - // new one -> error - $instance_domains = $app->db->queryAllRecords("SELECT instance_id, s.value AS domain - FROM aps_instances AS i, aps_instances_settings AS s - WHERE i.id = s.instance_id AND s.name = 'main_domain' - AND i.customer_id = '".$app->db->quote($customerid)."';"); - for($i = 0; $i < count($instance_domains); $i++) - { - $used_path = ''; - - $doc_root = $app->db->queryOneRecord("SELECT document_root FROM web_domain - WHERE domain = '".$app->db->quote($instance_domains[$i]['domain'])."';"); - - // Probably the domain settings were changed later, so make sure the doc_root - // is not empty for further validation - if(!empty($doc_root)) - { - $used_path = $doc_root['document_root']; - if(substr($used_path, -1) != '/') $used_path .= '/'; - - $location_for_domain = $app->db->queryOneRecord("SELECT value - FROM aps_instances_settings WHERE name = 'main_location' - AND instance_id = '".$app->db->quote($instance_domains[$i]['instance_id'])."';"); - - // The location might be empty but the DB return must not be false! - if($location_for_domain) $used_path .= $location_for_domain['value']; - - if($new_path == $used_path) - { - $temp_errstr = $app->lng('error_used_location'); - break; - } - } - } - } - else $temp_errstr = $app->lng('error_main_domain'); - - if($temp_errstr == '') $input['main_location'] = htmlspecialchars($main_location); - else $error[] = $temp_errstr; - } - else $error[] = $app->lng('error_no_main_location'); - - // License (the checkbox must be set) - if(isset($pkg_details['License need agree']) - && $pkg_details['License need agree'] == 'true') - { - if(isset($postinput['license']) && $postinput['license'] == 'on') $input['license'] = 'true'; - else $error[] = $app->lng('error_license_agreement'); - } - - // Database - if(isset($pkg_details['Requirements Database']) - && $pkg_details['Requirements Database'] != '') - { - if(isset($postinput['main_database_password'])) - { - if($postinput['main_database_password'] == '') $error[] = $app->lng('error_no_database_pw'); - else if(strlen($postinput['main_database_password']) > 8) - $input['main_database_password'] = htmlspecialchars($postinput['main_database_password']); - else $error[] = $app->lng('error_short_database_pw'); - } - else $error[] = $app->lng('error_no_database_pw'); - } - - // Validate the package settings - foreach($settings as $setting) - { - $temp_errstr = ''; - $setting_id = strval($setting['SettingID']); - - // We assume that every setting must be set - if((isset($postinput[$setting_id]) && ($postinput[$setting_id] != '')) - || ($setting['SettingType'] == 'boolean')) - { - if($setting['SettingType'] == 'string' || $setting['SettingType'] == 'password') - { - if($app->functions->intval($setting['SettingMinLength'], true) != 0 - && strlen($postinput[$setting_id]) < $app->functions->intval($setting['SettingMinLength'], true)) - $temp_errstr = sprintf($app->lng('error_short_value_for'), $setting['setting_name']); - - if($app->functions->intval($setting['SettingMaxLength'], true) != 0 - && strlen($postinput[$setting_id]) > $app->functions->intval($setting['SettingMaxLength'], true)) - $temp_errstr = sprintf($app->lng('error_long_value_for'), $setting['setting_name']); - - if(isset($setting['SettingRegex']) - && !preg_match("/".$setting['SettingRegex']."/", $postinput[$setting_id])) - $temp_errstr = sprintf($app->lng('error_inv_value_for'), $setting['setting_name']); - } - else if($setting['SettingType'] == 'email') - { - if(filter_var(strtolower($postinput[$setting_id]), FILTER_VALIDATE_EMAIL) === false) - $temp_errstr = sprintf($app->lng('error_inv_email_for'), $setting['setting_name']); - } - else if($setting['SettingType'] == 'domain-name') - { - if(!preg_match("^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$", - $postinput[$setting_id])) - $temp_errstr = sprintf($app->lng('error_inv_domain_for'), $setting['setting_name']); - } - else if($setting['SettingType'] == 'integer') - { - if(filter_var($postinput[$setting_id], FILTER_VALIDATE_INT) === false) - $temp_errstr = sprintf($app->lng('error_inv_integer_for'), $setting['setting_name']); - } - else if($setting['SettingType'] == 'float') - { - if(filter_var($postinput[$setting_id], FILTER_VALIDATE_FLOAT) === false) - $temp_errstr = sprintf($app->lng('error_inv_float_for'), $setting['setting_name']); - } - else if($setting['SettingType'] == 'boolean') - { - // If we have a boolean value set, it must be either true or false - if(!isset($postinput[$setting_id])) $postinput[$setting_id] = 'false'; - else if(isset($postinput[$setting_id]) && $postinput[$setting_id] != 'true') - $postinput[$setting_id] = 'true'; - } - else if($setting['SettingType'] == 'enum') - { - $found = false; - for($i = 0; $i < count($setting['SettingChoices']); $i++) - { - if($setting['SettingChoices'][$i]['EnumID'] == $postinput[$setting_id]) - $found = true; - } - if(!$found) $temp_errstr = sprintf($app->lng('error_inv_value_for'), $setting['SettingName']); - } - - if($temp_errstr == '') $input[$setting_id] = $postinput[$setting_id]; - else $error[] = $temp_errstr; - } - else $error[] = sprintf($app->lng('error_no_value_for'), $setting['SettingName']); - } - - $ret['input'] = $input; - $ret['error'] = array_unique($error); - - return $ret; - } - - /** - * Read the metadata of a package and returns some content - * - * @param $id the internal ID of the package - * @return array - */ - public function getPackageDetails($id) - { - global $app; - - $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($id).';'); - - // Load in meta file if existing and register its namespaces - $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; - if(!file_exists($metafile)) - return array('error' => 'The metafile for '.$pkg['name'].' couldn\'t be found'); - - $metadata = file_get_contents($metafile); - $metadata = str_replace("xmlns=", "ns=", $metadata); - $sxe = new SimpleXMLElement($metadata); - $namespaces = $sxe->getDocNamespaces(true); - foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url); - - $pkg['Summary'] = htmlspecialchars(parent::getXPathValue($sxe, '//summary')); - $pkg['Homepage'] = parent::getXPathValue($sxe, '//homepage'); - $pkg['Description'] = nl2br(htmlspecialchars(trim(parent::getXPathValue($sxe, '//description')))); - $pkg['Config script'] = strtoupper(parent::getXPathValue($sxe, '//configuration-script-language')); - $installed_size = parent::getXPathValue($sxe, '//installed-size'); - $pkg['Installed Size'] = (!empty($installed_size)) ? parent::convertSize((int)$installed_size) : ''; - - // License - $pkg['License need agree'] = parent::getXPathValue($sxe, '//license/@must-accept'); - $pkg['License name'] = parent::getXPathValue($sxe, '//license/text/name'); // might be empty - $pkg['License type'] = 'file'; // default type - $pkg['License content'] = ''; // default license filename on local system - $license_url = parent::getXPathValue($sxe, '//license/text/url'); - if(!empty($license_url)) - { - $pkg['License type'] = 'url'; - $pkg['License content'] = htmlspecialchars($license_url); - } - else - { - $lic = @file_get_contents($this->interface_pkg_dir.'/'.$pkg['path'].'/LICENSE'); - $pkg['License content'] = htmlentities($lic, ENT_QUOTES, 'ISO-8859-1'); - } - - // Languages - $languages = parent::getXPathValue($sxe, '//languages/language', true); - $pkg['Languages'] = (is_array($languages)) ? implode(' ', $languages) : ''; - - // Icon - $icon = parent::getXPathValue($sxe, '//icon/@path'); - if(!empty($icon)) - { - // Using parse_url() to filter malformed URLs - $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'. - basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$icon); - // nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path - $path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path); - - $pkg['Icon'] = $path; - } - else $pkg['Icon'] = ''; - - // Screenshots - $screenshots = parent::getXPathValue($sxe, '//screenshot', true); - if(!empty($screenshots)) - { - foreach($screenshots as $screen) - { - // Using parse_url() to filter malformed URLs - $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'. - basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$screen['path']); - // nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path - $path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path); - - $pkg['Screenshots'][] = array('ScreenPath' => $path, - 'ScreenDescription' => htmlspecialchars(trim((string)$screen->description))); - } - } - else $pkg['Screenshots'] = ''; // if no screenshots are available, set the variable though - - // Changelog - $changelog = parent::getXPathValue($sxe, '//changelog/version', true); - if(!empty($changelog)) - { - foreach($changelog as $change) - { - $entries = array(); - foreach($change->entry as $entry) $entries[] = htmlspecialchars(trim((string)$entry)); - - $pkg['Changelog'][] = array('ChangelogVersion' => (string)$change['version'], - 'ChangelogDescription' => implode('
', $entries)); - } - } - - else $pkg['Changelog'] = ''; - - // PHP extensions - $php_extensions = parent::getXPathValue($sxe, '//php:extension', true); - $php_ext = ''; - if(!empty($php_extensions)) - { - foreach($php_extensions as $extension) - { - if(strtolower($extension) == 'php') continue; - $php_ext .= $extension.' '; - } - } - $pkg['Requirements PHP extensions'] = trim($php_ext); - - // PHP bool options - $pkg['Requirements PHP settings'] = ''; - $php_bool_options = array('allow-url-fopen', 'file-uploads', 'magic-quotes-gpc', - 'register-globals', 'safe-mode', 'short-open-tag'); - foreach($php_bool_options as $option) - { - $value = parent::getXPathValue($sxe, '//php:'.$option); - if(!empty($value)) - { - $option = str_replace('-', '_', $option); - $value = str_replace(array('false', 'true'), array('off', 'on'), $value); - $pkg['Requirements PHP settings'][] = array('PHPSettingName' => $option, - 'PHPSettingValue' => $value); - } - } - - // PHP integer value settings - $memory_limit = parent::getXPathValue($sxe, '//php:memory-limit'); - if(!empty($memory_limit)) - $pkg['Requirements PHP settings'][] = array('PHPSettingName' => 'memory_limit', - 'PHPSettingValue' => parent::convertSize((int)$memory_limit)); - - $max_exec_time = parent::getXPathValue($sxe, '//php:max-execution-time'); - if(!empty($max_exec_time)) - $pkg['Requirements PHP settings'][] = array('PHPSettingName' => 'max-execution-time', - 'PHPSettingValue' => $max_exec_time); - - $post_max_size = parent::getXPathValue($sxe, '//php:post-max-size'); - if(!empty($post_max_size)) - $pkg['Requirements PHP settings'][] = array('PHPSettingName' => 'post_max_size', - 'PHPSettingValue' => parent::convertSize((int)$post_max_size)); - - // Get supported PHP versions - $pkg['Requirements Supported PHP versions'] = ''; - $php_min_version = parent::getXPathValue($sxe, '//php:version/@min'); - $php_max_not_including = parent::getXPathValue($sxe, '//php:version/@max-not-including'); - if(!empty($php_min_version) && !empty($php_max_not_including)) - $pkg['Requirements Supported PHP versions'] = $php_min_version.' - '.$php_max_not_including; - else if(!empty($php_min_version)) - $pkg['Requirements Supported PHP versions'] = '> '.$php_min_version; - else if(!empty($php_max_not_including)) - $pkg['Requirements Supported PHP versions'] = '< '.$php_min_version; - - // Database - $db_id = parent::getXPathValue($sxe, '//db:id'); - $db_server_type = parent::getXPathValue($sxe, '//db:server-type'); - $db_min_version = parent::getXPathValue($sxe, '//db:server-min-version'); - if(!empty($db_id)) - { - $db_server_type = str_replace('postgresql', 'PostgreSQL', $db_server_type); - $db_server_type = str_replace('microsoft:sqlserver', 'MSSQL', $db_server_type); - $db_server_type = str_replace('mysql', 'MySQL', $db_server_type); - - $pkg['Requirements Database'] = $db_server_type; - if(!empty($db_min_version)) $pkg['Requirements Database'] .= ' > '.$db_min_version; - } - else $pkg['Requirements Database'] = ''; - - return $pkg; - } -} -?> +getDocNamespaces(true); + foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url); + + return $sxe; + } + + /** + * Applies a RegEx pattern onto a location path in order to secure it against + * code injections and invalid input + * + * @param $location_unfiltered the file path to secure + * @return $location + */ + private function secureLocation($location_unfiltered) + { + // Filter invalid slashes from string + $location = preg_replace(array('#/+#', '#\.+#', '#\0+#', '#\\\\+#'), + array('/', '', '', '/'), + $location_unfiltered); + + // Remove a beginning or trailing slash + if(substr($location, -1) == '/') $location = substr($location, 0, strlen($location) - 1); + if(substr($location, 0, 1) == '/') $location = substr($location, 1); + + return $location; + } + + /** + * Gets the CustomerID (ClientID) which belongs to a specific domain + * + * @param $domain the domain + * @return $customerid + */ + private function getCustomerIDFromDomain($domain) + { + global $app; + $customerid = 0; + + $customerdata = $app->db->queryOneRecord("SELECT client_id FROM sys_group, web_domain + WHERE web_domain.sys_groupid = sys_group.groupid + AND web_domain.domain = '".$app->db->quote($domain)."';"); + if(!empty($customerdata)) $customerid = $customerdata['client_id']; + + return $customerid; + } + + /** + * Returns the server_id for an already installed instance. Is actually + * just a little helper method to avoid redundant code + * + * @param $instanceid the instance to process + * @return $webserver_id the server_id + */ + private function getInstanceDataForDatalog($instanceid) + { + global $app; + $webserver_id = ''; + + $websrv = $app->db->queryOneRecord("SELECT server_id FROM web_domain + WHERE domain = (SELECT value FROM aps_instances_settings + WHERE name = 'main_domain' AND instance_id = ".$app->db->quote($instanceid).");"); + + // If $websrv is empty, an error has occured. Domain no longer existing? Settings table damaged? + // Anyhow, remove this instance record because it's not useful at all + if(empty($websrv)) + { + $app->db->query("DELETE FROM aps_instances WHERE id = ".$app->db->quote($instanceid).";"); + $app->db->query("DELETE FROM aps_instances_settings WHERE instance_id = ".$app->db->quote($instanceid).";"); + } + else $webserver_id = $websrv['server_id']; + + return $webserver_id; + } + + /** + * Finds out if there is a newer package version for + * a given (possibly valid) package ID + * + * @param $id the ID to check + * @return $newer_pkg_id the newer package ID + */ + public function getNewestPackageID($id) + { + global $app; + + if(preg_match('/^[0-9]+$/', $id) != 1) return 0; + + $result = $app->db->queryOneRecord("SELECT id, name, + CONCAT(version, '-', CAST(`release` AS CHAR)) AS current_version + FROM aps_packages + WHERE name = (SELECT name FROM aps_packages WHERE id = ".$app->db->quote($id).") + ORDER BY REPLACE(version, '.', '')+0 DESC, `release` DESC"); + + if(!empty($result) && ($id != $result['id'])) return $result['id']; + + return 0; + } + + /** + * Validates a given package ID + * + * @param $id the ID to check + * @param $is_admin a flag to allow locked IDs too (for admin calls) + * @return boolean + */ + public function isValidPackageID($id, $is_admin = false) + { + global $app; + + if(preg_match('/^[0-9]+$/', $id) != 1) return false; + + $sql_ext = (!$is_admin) ? + 'package_status = '.PACKAGE_ENABLED.' AND' : + '(package_status = '.PACKAGE_ENABLED.' OR package_status = '.PACKAGE_LOCKED.') AND'; + + $result = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE ".$sql_ext." id = ".$app->db->quote($id).";"); + if(!$result) return false; + + return true; + } + + /** + * Validates a given instance ID + * + * @param $id the ID to check + * @param $client_id the calling client ID + * @param $is_admin a flag to ignore the client ID check for admins + * @return boolean + */ + public function isValidInstanceID($id, $client_id, $is_admin = false) + { + global $app; + + if(preg_match('/^[0-9]+$/', $id) != 1) return false; + + // Only filter if not admin + $sql_ext = (!$is_admin) ? 'customer_id = '.$app->db->quote($client_id).' AND' : ''; + + $result = $app->db->queryOneRecord('SELECT id FROM aps_instances WHERE '.$sql_ext.' id = '.$app->db->quote($id).';'); + if(!$result) return false; + + return true; + } + + /** + * Creates a new database record for the package instance and + * an install task + * + * @param $settings the settings to enter into the DB + * @param $packageid the PackageID + */ + public function createPackageInstance($settings, $packageid) + { + global $app; + + $app->uses('tools_sites'); + + $webserver_id = 0; + $websrv = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '".$app->db->quote($settings['main_domain'])."';"); + if(!empty($websrv)) $webserver_id = $websrv['server_id']; + $customerid = $this->getCustomerIDFromDomain($settings['main_domain']); + + if(empty($settings) || empty($webserver_id)) return false; + + //* Get server config of the web server + $app->uses("getconf"); + $web_config = $app->getconf->get_server_config($app->functions->intval($websrv["server_id"]),'web'); + + //* Set PHP mode to php-fcgi and enable suexec in website on apache servers / set PHP mode to PHP-FPM on nginx servers + if($web_config['server_type'] == 'apache') { + if(($websrv['php'] != 'fast-cgi' || $websrv['suexec'] != 'y') && $websrv['php'] != 'php-fpm') { + $app->db->datalogUpdate('web_domain', "php = 'fast-cgi', suexec = 'y'", 'domain_id', $websrv['domain_id']); + } + } else { + // nginx + if($websrv['php'] != 'php-fpm' && $websrv['php'] != 'fast-cgi') { + $app->db->datalogUpdate('web_domain', "php = 'php-fpm'", 'domain_id', $websrv['domain_id']); + } + } + + + //* Create the MySQL database for the application + $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($packageid).';'); + $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; + $sxe = $this->readInMetaFile($metafile); + + $db_id = parent::getXPathValue($sxe, '//db:id'); + if (!empty($db_id)) { + $global_config = $app->getconf->get_global_config('sites'); + + $tmp = array(); + $tmp['parent_domain_id'] = $websrv['domain_id']; + $tmp['sys_groupid'] = $websrv['sys_groupid']; + $dbname_prefix = $app->tools_sites->replacePrefix($global_config['dbname_prefix'], $tmp); + $dbuser_prefix = $app->tools_sites->replacePrefix($global_config['dbuser_prefix'], $tmp); + unset($tmp); + + // get information if the webserver is a db server, too + $web_server = $app->db->queryOneRecord("SELECT server_id,server_name,db_server FROM server WHERE server_id = ".$websrv['server_id']); + if($web_server['db_server'] == 1) { + // create database on "localhost" (webserver) + $mysql_db_server_id = $websrv['server_id']; + $mysql_db_host = 'localhost'; + $mysql_db_remote_access = 'n'; + $mysql_db_remote_ips = ''; + } else { + //* get the default database server of the client + $client = $app->db->queryOneRecord("SELECT default_dbserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ".$websrv['sys_groupid']); + if(is_array($client) && $client['default_dbserver'] > 0 && $client['default_dbserver'] != $websrv['server_id']) { + $mysql_db_server_id = $client['default_dbserver']; + $dbserver_config = $web_config = $app->getconf->get_server_config($app->functions->intval($mysql_db_server_id),'server'); + $mysql_db_host = $dbserver_config['ip_address']; + $mysql_db_remote_access = 'y'; + $webserver_config = $app->getconf->get_server_config($app->functions->intval($websrv['server_id']),'server'); + $mysql_db_remote_ips = $webserver_config['ip_address']; + } else { + /* I left this in place for a fallback that should NEVER! happen. + * if we reach this point it means that there is NO default db server for the client + * AND the webserver has NO db service enabled. + * We have to abort the aps installation here... so I added a return false + * although this does not present any error message to the user. + */ + return false; + + /*$mysql_db_server_id = $websrv['server_id']; + $mysql_db_host = 'localhost'; + $mysql_db_remote_access = 'n'; + $mysql_db_remote_ips = '';*/ + } + } + + //* Find a free db name for the app + for($n = 1; $n <= 1000; $n++) { + $mysql_db_name = ($dbname_prefix != '' ? $dbname_prefix.'aps'.$n : uniqid('aps')); + $tmp = $app->db->queryOneRecord("SELECT count(database_id) as number FROM web_database WHERE database_name = '".$app->db->quote($mysql_db_name)."'"); + if($tmp['number'] == 0) break; + } + //* Find a free db username for the app + for($n = 1; $n <= 1000; $n++) { + $mysql_db_user = ($dbuser_prefix != '' ? $dbuser_prefix.'aps'.$n : uniqid('aps')); + $tmp = $app->db->queryOneRecord("SELECT count(database_user_id) as number FROM web_database_user WHERE database_user = '".$app->db->quote($mysql_db_user)."'"); + if($tmp['number'] == 0) break; + } + + $mysql_db_password = $settings['main_database_password']; + + //* Create the mysql database user + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `database_user`, `database_user_prefix`, `database_password`) + VALUES( ".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', 0, '$mysql_db_user', '".$app->db->quote($dbuser_prefix) . "', PASSWORD('$mysql_db_password'))"; + $mysql_db_user_id = $app->db->datalogInsert('web_database_user', $insert_data, 'database_user_id'); + + //* Create the mysql database + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `parent_domain_id`, `type`, `database_name`, `database_name_prefix`, `database_user_id`, `database_ro_user_id`, `database_charset`, `remote_access`, `remote_ips`, `backup_copies`, `active`, `backup_interval`) + VALUES( ".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', $mysql_db_server_id, ".$websrv['domain_id'].", 'mysql', '$mysql_db_name', '" . $app->db->quote($dbname_prefix) . "', '$mysql_db_user_id', 0, '', '$mysql_db_remote_access', '$mysql_db_remote_ips', ".$websrv['backup_copies'].", 'y', '".$websrv['backup_interval']."')"; + $app->db->datalogInsert('web_database', $insert_data, 'database_id'); + + //* Add db details to package settings + $settings['main_database_host'] = $mysql_db_host; + $settings['main_database_name'] = $mysql_db_name; + $settings['main_database_login'] = $mysql_db_user; + + } + + //* Insert new package instance + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `customer_id`, `package_id`, `instance_status`) VALUES (".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', ".$app->db->quote($webserver_id).",".$app->db->quote($customerid).", ".$app->db->quote($packageid).", ".INSTANCE_PENDING.")"; + $InstanceID = $app->db->datalogInsert('aps_instances', $insert_data, 'id'); + + //* Insert all package settings + if(is_array($settings)) { + foreach($settings as $key => $value) { + $insert_data = "(server_id, instance_id, name, value) VALUES (".$app->db->quote($webserver_id).",".$app->db->quote($InstanceID).", '".$app->db->quote($key)."', '".$app->db->quote($value)."')"; + $app->db->datalogInsert('aps_instances_settings', $insert_data, 'id'); + } + } + + //* Set package status to install afetr we inserted the settings + $app->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_INSTALL, 'id', $InstanceID); + } + + /** + * Sets the status of an instance to "should be removed" and creates a + * datalog entry to give the ISPConfig server a real removal advice + * + * @param $instanceid the instance to delete + */ + public function deleteInstance($instanceid) + { + global $app; + /* + $app->db->query("UPDATE aps_instances SET instance_status = ".INSTANCE_REMOVE." WHERE id = ".$instanceid.";"); + + $webserver_id = $this->getInstanceDataForDatalog($instanceid); + if($webserver_id == '') return; + + // Create a sys_datalog entry for deletion + $datalog = array('Instance_id' => $instanceid, 'server_id' => $webserver_id); + $app->db->datalogSave('aps', 'DELETE', 'id', $instanceid, array(), $datalog); + */ + + $sql = "SELECT web_database.database_id as database_id, web_database.database_user_id as `database_user_id` FROM aps_instances_settings, web_database WHERE aps_instances_settings.value = web_database.database_name AND aps_instances_settings.name = 'main_database_name' AND aps_instances_settings.instance_id = ".$instanceid." LIMIT 0,1"; + $tmp = $app->db->queryOneRecord($sql); + if($tmp['database_id'] > 0) $app->db->datalogDelete('web_database', 'database_id', $tmp['database_id']); + + $database_user = $tmp['database_user_id']; + $tmp = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `database_user_id` = '" . $app->functions->intval($database_user) . "' OR `database_ro_user_id` = '" . $app->functions->intval($database_user) . "'"); + if($tmp['cnt'] < 1) $app->db->datalogDelete('web_database_user', 'database_user_id', $database_user); + + $app->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_REMOVE, 'id', $instanceid); + + } + + /** + * Sets the status of an instance to "installation planned" and creates a + * datalog entry to re-install the package. The existing package is simply overwritten. + * + * @param $instanceid the instance to delete + */ + public function reinstallInstance($instanceid) + { + global $app; + + /* + $app->db->query("UPDATE aps_instances SET instance_status = ".INSTANCE_INSTALL." WHERE id = ".$instanceid.";"); + + $webserver_id = $this->getInstanceDataForDatalog($instanceid); + if($webserver_id == '') return; + + // Create a sys_datalog entry for re-installation + $datalog = array('instance_id' => $instanceid, 'server_id' => $webserver_id); + $app->db->datalogSave('aps', 'INSERT', 'id', $instanceid, array(), $datalog); + */ + + $sql = "SELECT web_database.database_id as database_id FROM aps_instances_settings, web_database WHERE aps_instances_settings.value = web_database.database_name AND aps_instances_settings.value = aps_instances_settings.name = 'main_database_name' AND aps_instances_settings.instance_id = ".$instanceid." LIMIT 0,1"; + $tmp = $app->db->queryOneRecord($sql); + if($tmp['database_id'] > 0) $app->db->datalogDelete('web_database', 'database_id', $tmp['database_id']); + + $app->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_INSTALL, 'id', $instanceid); + } + + /** + * Read the settings to be filled when installing + * + * @param $id the internal ID of the package + * @return array + */ + public function getPackageSettings($id) + { + global $app; + + $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($id).';'); + + // Load in meta file if existing and register its namespaces + $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; + if(!file_exists($metafile)) + return array('error' => 'The metafile for '.$settings['Name'].' couldn\'t be found'); + + $sxe = $this->readInMetaFile($metafile); + + $groupsettings = parent::getXPathValue($sxe, '//settings/group/setting', true); + if(empty($groupsettings)) return array(); + + $settings = array(); + foreach($groupsettings as $setting) + { + $setting_id = strval($setting['id']); + + if($setting['type'] == 'string' || $setting['type'] == 'email' || $setting['type'] == 'integer' + || $setting['type'] == 'float' || $setting['type'] == 'domain-name') + { + $settings[] = array('SettingID' => $setting_id, + 'SettingName' => $setting->name, + 'SettingDescription' => $setting->description, + 'SettingType' => $setting['type'], + 'SettingInputType' => 'string', + 'SettingDefaultValue' => strval($setting['default-value']), + 'SettingRegex' => $setting['regex'], + 'SettingMinLength' => $setting['min-length'], + 'SettingMaxLength' => $setting['max-length']); + } + else if($setting['type'] == 'password') + { + $settings[] = array('SettingID' => $setting_id, + 'SettingName' => $setting->name, + 'SettingDescription' => $setting->description, + 'SettingType' => 'password', + 'SettingInputType' => 'password', + 'SettingDefaultValue' => '', + 'SettingRegex' => $setting['regex'], + 'SettingMinLength' => $setting['min-length'], + 'SettingMaxLength' => $setting['max-length']); + } + else if($setting['type'] == 'boolean') + { + $settings[] = array('SettingID' => $setting_id, + 'SettingName' => $setting->name, + 'SettingDescription' => $setting->description, + 'SettingType' => 'boolean', + 'SettingInputType' => 'checkbox', + 'SettingDefaultValue' => strval($setting['default-value'])); + } + else if($setting['type'] == 'enum') + { + $choices = array(); + foreach($setting->choice as $choice) + { + $choices[] = array('EnumID' => strval($choice['id']), + 'EnumName' => $choice->name); + } + $settings[] = array('SettingID' => $setting_id, + 'SettingName' => $setting->name, + 'SettingDescription' => $setting->description, + 'SettingType' => 'enum', + 'SettingInputType' => 'select', + 'SettingDefaultValue' => strval($setting['default-value']), + 'SettingChoices' => $choices); + } + } + + return $settings; + } + + /** + * Validates the user input according to the settings array and + * delivers errors if occurring + * + * @param $input the user $_POST array + * @param $pkg_details the package details + * @param $settings the package settings array + * @return array in this structure: + * array(2) { + * ["input"]=> ... + * ["errors"]=> ... + * } + */ + public function validateInstallerInput($postinput, $pkg_details, $domains, $settings = array()) + { + global $app; + + $ret = array(); + $input = array(); + $error = array(); + + // Main domain (obligatory) + if(isset($postinput['main_domain'])) + { + if(!in_array($postinput['main_domain'], $domains)) $error[] = $app->lng('error_main_domain'); + else $input['main_domain'] = $postinput['main_domain']; + } + else $error[] = $app->lng('error_main_domain'); + + // Main location (not obligatory but must be supplied) + if(isset($postinput['main_location'])) + { + $temp_errstr = ''; + // It can be empty but if the user did write something, check it + $userinput = false; + if(strlen($postinput['main_location']) > 0) $userinput = true; + + // Filter invalid input slashes (twice!) + $main_location = $this->secureLocation($postinput['main_location']); + $main_location = $this->secureLocation($main_location); + // Only allow digits, words, / and - + $main_location = preg_replace("/[^\d\w\/\-]/i", "", $main_location); + if($userinput && (strlen($main_location) == 0)) $temp_errstr = $app->lng('error_inv_main_location'); + + // Find out document_root and make sure no apps are installed twice to one location + if(in_array($postinput['main_domain'], $domains)) + { + $docroot = $app->db->queryOneRecord("SELECT document_root FROM web_domain + WHERE domain = '".$app->db->quote($postinput['main_domain'])."';"); + $new_path = $docroot['document_root']; + if(substr($new_path, -1) != '/') $new_path .= '/'; + $new_path .= $main_location; + + // Get the $customerid which belongs to the selected domain + $customerid = $this->getCustomerIDFromDomain($postinput['main_domain']); + + // First get all domains used for an install, then their loop them + // and get the corresponding document roots as well as the defined + // locations. If an existing doc_root + location matches with the + // new one -> error + $instance_domains = $app->db->queryAllRecords("SELECT instance_id, s.value AS domain + FROM aps_instances AS i, aps_instances_settings AS s + WHERE i.id = s.instance_id AND s.name = 'main_domain' + AND i.customer_id = '".$app->db->quote($customerid)."';"); + for($i = 0; $i < count($instance_domains); $i++) + { + $used_path = ''; + + $doc_root = $app->db->queryOneRecord("SELECT document_root FROM web_domain + WHERE domain = '".$app->db->quote($instance_domains[$i]['domain'])."';"); + + // Probably the domain settings were changed later, so make sure the doc_root + // is not empty for further validation + if(!empty($doc_root)) + { + $used_path = $doc_root['document_root']; + if(substr($used_path, -1) != '/') $used_path .= '/'; + + $location_for_domain = $app->db->queryOneRecord("SELECT value + FROM aps_instances_settings WHERE name = 'main_location' + AND instance_id = '".$app->db->quote($instance_domains[$i]['instance_id'])."';"); + + // The location might be empty but the DB return must not be false! + if($location_for_domain) $used_path .= $location_for_domain['value']; + + if($new_path == $used_path) + { + $temp_errstr = $app->lng('error_used_location'); + break; + } + } + } + } + else $temp_errstr = $app->lng('error_main_domain'); + + if($temp_errstr == '') $input['main_location'] = htmlspecialchars($main_location); + else $error[] = $temp_errstr; + } + else $error[] = $app->lng('error_no_main_location'); + + // License (the checkbox must be set) + if(isset($pkg_details['License need agree']) + && $pkg_details['License need agree'] == 'true') + { + if(isset($postinput['license']) && $postinput['license'] == 'on') $input['license'] = 'true'; + else $error[] = $app->lng('error_license_agreement'); + } + + // Database + if(isset($pkg_details['Requirements Database']) + && $pkg_details['Requirements Database'] != '') + { + if(isset($postinput['main_database_password'])) + { + if($postinput['main_database_password'] == '') $error[] = $app->lng('error_no_database_pw'); + else if(strlen($postinput['main_database_password']) > 8) + $input['main_database_password'] = htmlspecialchars($postinput['main_database_password']); + else $error[] = $app->lng('error_short_database_pw'); + } + else $error[] = $app->lng('error_no_database_pw'); + } + + // Validate the package settings + foreach($settings as $setting) + { + $temp_errstr = ''; + $setting_id = strval($setting['SettingID']); + + // We assume that every setting must be set + if((isset($postinput[$setting_id]) && ($postinput[$setting_id] != '')) + || ($setting['SettingType'] == 'boolean')) + { + if($setting['SettingType'] == 'string' || $setting['SettingType'] == 'password') + { + if($app->functions->intval($setting['SettingMinLength'], true) != 0 + && strlen($postinput[$setting_id]) < $app->functions->intval($setting['SettingMinLength'], true)) + $temp_errstr = sprintf($app->lng('error_short_value_for'), $setting['setting_name']); + + if($app->functions->intval($setting['SettingMaxLength'], true) != 0 + && strlen($postinput[$setting_id]) > $app->functions->intval($setting['SettingMaxLength'], true)) + $temp_errstr = sprintf($app->lng('error_long_value_for'), $setting['setting_name']); + + if(isset($setting['SettingRegex']) + && !preg_match("/".$setting['SettingRegex']."/", $postinput[$setting_id])) + $temp_errstr = sprintf($app->lng('error_inv_value_for'), $setting['setting_name']); + } + else if($setting['SettingType'] == 'email') + { + if(filter_var(strtolower($postinput[$setting_id]), FILTER_VALIDATE_EMAIL) === false) + $temp_errstr = sprintf($app->lng('error_inv_email_for'), $setting['setting_name']); + } + else if($setting['SettingType'] == 'domain-name') + { + if(!preg_match("^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$", + $postinput[$setting_id])) + $temp_errstr = sprintf($app->lng('error_inv_domain_for'), $setting['setting_name']); + } + else if($setting['SettingType'] == 'integer') + { + if(filter_var($postinput[$setting_id], FILTER_VALIDATE_INT) === false) + $temp_errstr = sprintf($app->lng('error_inv_integer_for'), $setting['setting_name']); + } + else if($setting['SettingType'] == 'float') + { + if(filter_var($postinput[$setting_id], FILTER_VALIDATE_FLOAT) === false) + $temp_errstr = sprintf($app->lng('error_inv_float_for'), $setting['setting_name']); + } + else if($setting['SettingType'] == 'boolean') + { + // If we have a boolean value set, it must be either true or false + if(!isset($postinput[$setting_id])) $postinput[$setting_id] = 'false'; + else if(isset($postinput[$setting_id]) && $postinput[$setting_id] != 'true') + $postinput[$setting_id] = 'true'; + } + else if($setting['SettingType'] == 'enum') + { + $found = false; + for($i = 0; $i < count($setting['SettingChoices']); $i++) + { + if($setting['SettingChoices'][$i]['EnumID'] == $postinput[$setting_id]) + $found = true; + } + if(!$found) $temp_errstr = sprintf($app->lng('error_inv_value_for'), $setting['SettingName']); + } + + if($temp_errstr == '') $input[$setting_id] = $postinput[$setting_id]; + else $error[] = $temp_errstr; + } + else $error[] = sprintf($app->lng('error_no_value_for'), $setting['SettingName']); + } + + $ret['input'] = $input; + $ret['error'] = array_unique($error); + + return $ret; + } + + /** + * Read the metadata of a package and returns some content + * + * @param $id the internal ID of the package + * @return array + */ + public function getPackageDetails($id) + { + global $app; + + $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($id).';'); + + // Load in meta file if existing and register its namespaces + $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; + if(!file_exists($metafile)) + return array('error' => 'The metafile for '.$pkg['name'].' couldn\'t be found'); + + $metadata = file_get_contents($metafile); + $metadata = str_replace("xmlns=", "ns=", $metadata); + $sxe = new SimpleXMLElement($metadata); + $namespaces = $sxe->getDocNamespaces(true); + foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url); + + $pkg['Summary'] = htmlspecialchars(parent::getXPathValue($sxe, '//summary')); + $pkg['Homepage'] = parent::getXPathValue($sxe, '//homepage'); + $pkg['Description'] = nl2br(htmlspecialchars(trim(parent::getXPathValue($sxe, '//description')))); + $pkg['Config script'] = strtoupper(parent::getXPathValue($sxe, '//configuration-script-language')); + $installed_size = parent::getXPathValue($sxe, '//installed-size'); + $pkg['Installed Size'] = (!empty($installed_size)) ? parent::convertSize((int)$installed_size) : ''; + + // License + $pkg['License need agree'] = parent::getXPathValue($sxe, '//license/@must-accept'); + $pkg['License name'] = parent::getXPathValue($sxe, '//license/text/name'); // might be empty + $pkg['License type'] = 'file'; // default type + $pkg['License content'] = ''; // default license filename on local system + $license_url = parent::getXPathValue($sxe, '//license/text/url'); + if(!empty($license_url)) + { + $pkg['License type'] = 'url'; + $pkg['License content'] = htmlspecialchars($license_url); + } + else + { + $lic = @file_get_contents($this->interface_pkg_dir.'/'.$pkg['path'].'/LICENSE'); + $pkg['License content'] = htmlentities($lic, ENT_QUOTES, 'ISO-8859-1'); + } + + // Languages + $languages = parent::getXPathValue($sxe, '//languages/language', true); + $pkg['Languages'] = (is_array($languages)) ? implode(' ', $languages) : ''; + + // Icon + $icon = parent::getXPathValue($sxe, '//icon/@path'); + if(!empty($icon)) + { + // Using parse_url() to filter malformed URLs + $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'. + basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$icon); + // nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path + $path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path); + + $pkg['Icon'] = $path; + } + else $pkg['Icon'] = ''; + + // Screenshots + $screenshots = parent::getXPathValue($sxe, '//screenshot', true); + if(!empty($screenshots)) + { + foreach($screenshots as $screen) + { + // Using parse_url() to filter malformed URLs + $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'. + basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$screen['path']); + // nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path + $path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path); + + $pkg['Screenshots'][] = array('ScreenPath' => $path, + 'ScreenDescription' => htmlspecialchars(trim((string)$screen->description))); + } + } + else $pkg['Screenshots'] = ''; // if no screenshots are available, set the variable though + + // Changelog + $changelog = parent::getXPathValue($sxe, '//changelog/version', true); + if(!empty($changelog)) + { + foreach($changelog as $change) + { + $entries = array(); + foreach($change->entry as $entry) $entries[] = htmlspecialchars(trim((string)$entry)); + + $pkg['Changelog'][] = array('ChangelogVersion' => (string)$change['version'], + 'ChangelogDescription' => implode('
', $entries)); + } + } + + else $pkg['Changelog'] = ''; + + // PHP extensions + $php_extensions = parent::getXPathValue($sxe, '//php:extension', true); + $php_ext = ''; + if(!empty($php_extensions)) + { + foreach($php_extensions as $extension) + { + if(strtolower($extension) == 'php') continue; + $php_ext .= $extension.' '; + } + } + $pkg['Requirements PHP extensions'] = trim($php_ext); + + // PHP bool options + $pkg['Requirements PHP settings'] = ''; + $php_bool_options = array('allow-url-fopen', 'file-uploads', 'magic-quotes-gpc', + 'register-globals', 'safe-mode', 'short-open-tag'); + foreach($php_bool_options as $option) + { + $value = parent::getXPathValue($sxe, '//php:'.$option); + if(!empty($value)) + { + $option = str_replace('-', '_', $option); + $value = str_replace(array('false', 'true'), array('off', 'on'), $value); + $pkg['Requirements PHP settings'][] = array('PHPSettingName' => $option, + 'PHPSettingValue' => $value); + } + } + + // PHP integer value settings + $memory_limit = parent::getXPathValue($sxe, '//php:memory-limit'); + if(!empty($memory_limit)) + $pkg['Requirements PHP settings'][] = array('PHPSettingName' => 'memory_limit', + 'PHPSettingValue' => parent::convertSize((int)$memory_limit)); + + $max_exec_time = parent::getXPathValue($sxe, '//php:max-execution-time'); + if(!empty($max_exec_time)) + $pkg['Requirements PHP settings'][] = array('PHPSettingName' => 'max-execution-time', + 'PHPSettingValue' => $max_exec_time); + + $post_max_size = parent::getXPathValue($sxe, '//php:post-max-size'); + if(!empty($post_max_size)) + $pkg['Requirements PHP settings'][] = array('PHPSettingName' => 'post_max_size', + 'PHPSettingValue' => parent::convertSize((int)$post_max_size)); + + // Get supported PHP versions + $pkg['Requirements Supported PHP versions'] = ''; + $php_min_version = parent::getXPathValue($sxe, '//php:version/@min'); + $php_max_not_including = parent::getXPathValue($sxe, '//php:version/@max-not-including'); + if(!empty($php_min_version) && !empty($php_max_not_including)) + $pkg['Requirements Supported PHP versions'] = $php_min_version.' - '.$php_max_not_including; + else if(!empty($php_min_version)) + $pkg['Requirements Supported PHP versions'] = '> '.$php_min_version; + else if(!empty($php_max_not_including)) + $pkg['Requirements Supported PHP versions'] = '< '.$php_min_version; + + // Database + $db_id = parent::getXPathValue($sxe, '//db:id'); + $db_server_type = parent::getXPathValue($sxe, '//db:server-type'); + $db_min_version = parent::getXPathValue($sxe, '//db:server-min-version'); + if(!empty($db_id)) + { + $db_server_type = str_replace('postgresql', 'PostgreSQL', $db_server_type); + $db_server_type = str_replace('microsoft:sqlserver', 'MSSQL', $db_server_type); + $db_server_type = str_replace('mysql', 'MySQL', $db_server_type); + + $pkg['Requirements Database'] = $db_server_type; + if(!empty($db_min_version)) $pkg['Requirements Database'] .= ' > '.$db_min_version; + } + else $pkg['Requirements Database'] = ''; + + return $pkg; + } +} +?> diff --git a/interface/lib/classes/client_templates.inc.php b/interface/lib/classes/client_templates.inc.php index c2ef0bb0e..cdd9ea952 100644 --- a/interface/lib/classes/client_templates.inc.php +++ b/interface/lib/classes/client_templates.inc.php @@ -9,7 +9,94 @@ class client_templates { - function apply_client_templates($clientId) { + /** + * - check for old-style templates and change to new style + * - update assigned templates + */ + function update_client_templates($clientId, $templates = array()) { + global $app, $conf; + + if(!is_array($templates)) return false; + + $new_tpl = array(); + $used_assigned = array(); + $needed_types = array(); + $old_style = true; + foreach($templates as $item) { + $item = trim($item); + if($item == '') continue; + + $tpl_id = 0; + $assigned_id = 0; + if(strpos($item, ':') === false) { + $tpl_id = $item; + } else { + $old_style = false; // has new-style assigns + list($assigned_id, $tpl_id) = explode(':', $item, 2); + if(substr($assigned_id, 0, 1) === 'n') $assigned_id = 0; // newly inserted items + } + if(array_key_exists($tpl_id, $needed_types) == false) $needed_types[$tpl_id] = 0; + $needed_types[$tpl_id]++; + + if($assigned_id > 0) { + $used_assigned[] = $assigned_id; // for comparison with database + } else { + $new_tpl[] = $tpl_id; + } + } + + if($old_style == true) { + // we have to take care of this in an other way + $in_db = $app->db->queryAllRecords('SELECT `assigned_template_id`, `client_template_id` FROM `client_template_assigned` WHERE `client_id` = ' . $clientId); + if(is_array($in_db) && count($in_db) > 0) { + foreach($in_db as $item) { + if(array_key_exists($item['client_template_id'], $needed_types) == false) $needed_types[$item['client_template_id']] = 0; + $needed_types[$item['client_template_id']]--; + } + } + + foreach($needed_types as $tpl_id => $count) { + if($count > 0) { + // add new template to client (includes those from old-style without assigned_template_id) + for($i = $count; $i > 0; $i--) { + $app->db->query('INSERT INTO `client_template_assigned` (`client_id`, `client_template_id`) VALUES (' . $clientId . ', ' . $tpl_id . ')'); + } + } elseif($count < 0) { + // remove old ones + for($i = $count; $i < 0; $i++) { + $app->db->query('DELETE FROM `client_template_assigned` WHERE client_id = ' . $clientId . ' AND client_template_id = ' . $tpl_id . ' LIMIT 1'); + } + } + } + } else { + // we have to take care of this in an other way + $in_db = $app->db->queryAllRecords('SELECT `assigned_template_id`, `client_template_id` FROM `client_template_assigned` WHERE `client_id` = ' . $clientId); + if(is_array($in_db) && count($in_db) > 0) { + // check which templates were removed from this client + foreach($in_db as $item) { + if(in_array($item['assigned_template_id'], $used_assigned) == false) { + // delete this one + $app->db->query('DELETE FROM `client_template_assigned` WHERE `assigned_template_id` = ' . $item['assigned_template_id']); + } + } + } + + if(count($new_tpl) > 0) { + foreach($new_tpl as $item) { + // add new template to client (includes those from old-style without assigned_template_id) + $app->db->query('INSERT INTO `client_template_assigned` (`client_id`, `client_template_id`) VALUES (' . $clientId . ', ' . $item . ')'); + } + } + } + + unset($new_tpl); + unset($in_db); + unset($templates); + unset($used_assigned); + return true; + } + + function apply_client_templates($clientId) { global $app; include('../client/form/client.tform.php'); @@ -20,8 +107,14 @@ class client_templates { $sql = "SELECT template_master, template_additional FROM client WHERE client_id = " . $app->functions->intval($clientId); $record = $app->db->queryOneRecord($sql); $masterTemplateId = $record['template_master']; - $additionalTemplateStr = $record['template_additional']; - + + if($record['template_additional'] != '') { + // we have to call the update_client_templates function + $templates = explode('/', $record['template_additional']); + $this->update_client_templates($clientId, $templates); + $app->db->query('UPDATE `client` SET `template_additional` = \'\' WHERE `client_id` = ' . $app->functions->intval($clientId)); + } + /* * if the master-Template is custom there is NO changing */ @@ -40,82 +133,82 @@ class client_templates { * if != -1) */ $addTpl = explode('/', $additionalTemplateStr); - foreach ($addTpl as $item){ - if (trim($item) != ''){ - $sql = "SELECT * FROM client_template WHERE template_id = " . $app->functions->intval($item); - $addLimits = $app->db->queryOneRecord($sql); - $app->log('Template processing subtemplate ' . $item . ' for client ' . $clientId, LOGLEVEL_DEBUG); - /* maybe the template is deleted in the meantime */ - if (is_array($addLimits)){ - foreach($addLimits as $k => $v){ - /* we can remove this condition, but it is easier to debug with it (don't add ids and other non-limit values) */ - if (strpos($k, 'limit') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec'){ - $app->log('Template processing key ' . $k . ' for client ' . $clientId, LOGLEVEL_DEBUG); + $addTpls = $app->db->queryAllRecords('SELECT `client_template_id` FROM `client_template_assigned` WHERE `client_id` = ' . $app->functions->intval($clientId)); + foreach ($addTpls as $addTpl){ + $item = $addTpl['client_template_id']; + $sql = "SELECT * FROM client_template WHERE template_id = " . $app->functions->intval($item); + $addLimits = $app->db->queryOneRecord($sql); + $app->log('Template processing subtemplate ' . $item . ' for client ' . $clientId, LOGLEVEL_DEBUG); + /* maybe the template is deleted in the meantime */ + if (is_array($addLimits)){ + foreach($addLimits as $k => $v){ + /* we can remove this condition, but it is easier to debug with it (don't add ids and other non-limit values) */ + if (strpos($k, 'limit') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec'){ + $app->log('Template processing key ' . $k . ' for client ' . $clientId, LOGLEVEL_DEBUG); - /* process the numerical limits */ - if (is_numeric($v)){ - /* switch for special cases */ - switch ($k){ - case 'limit_cron_frequency': - if ($v < $limits[$k]) $limits[$k] = $v; - /* silent adjustment of the minimum cron frequency to 1 minute */ - /* maybe this control test should be done via validator definition in tform.php file, but I don't know how */ - if ($limits[$k] < 1) $limits[$k] = 1; - break; + /* process the numerical limits */ + if (is_numeric($v)){ + /* switch for special cases */ + switch ($k){ + case 'limit_cron_frequency': + if ($v < $limits[$k]) $limits[$k] = $v; + /* silent adjustment of the minimum cron frequency to 1 minute */ + /* maybe this control test should be done via validator definition in tform.php file, but I don't know how */ + if ($limits[$k] < 1) $limits[$k] = 1; + break; - default: - if ($limits[$k] > -1){ - if ($v == -1){ - $limits[$k] = -1; - } - else { - $limits[$k] += $v; - } + default: + if ($limits[$k] > -1){ + if ($v == -1){ + $limits[$k] = -1; + } + else { + $limits[$k] += $v; } } } - /* process the string limits (CHECKBOXARRAY, SELECT etc.) */ - elseif (is_string($v)){ - switch ($form["tabs"]["limits"]["fields"][$k]['formtype']){ - case 'CHECKBOXARRAY': - if (!isset($limits[$k])){ - $limits[$k] = array(); - } + } + /* process the string limits (CHECKBOXARRAY, SELECT etc.) */ + elseif (is_string($v)){ + switch ($form["tabs"]["limits"]["fields"][$k]['formtype']){ + case 'CHECKBOXARRAY': + if (!isset($limits[$k])){ + $limits[$k] = array(); + } - $limits_values = $limits[$k]; - if (is_string($limits[$k])){ - $limits_values = explode($form["tabs"]["limits"]["fields"][$k]["separator"],$limits[$k]); - } - $additional_values = explode($form["tabs"]["limits"]["fields"][$k]["separator"],$v); - $app->log('Template processing key ' . $k . ' type CHECKBOXARRAY, lim / add: ' . implode(',', $limits_values) . ' / ' . implode(',', $additional_values) . ' for client ' . $clientId, LOGLEVEL_DEBUG); - /* unification of limits_values (master template) and additional_values (additional template) */ - $limits_unified = array(); - foreach($form["tabs"]["limits"]["fields"][$k]["value"] as $key => $val){ - if (in_array($key,$limits_values) || in_array($key,$additional_values)) $limits_unified[] = $key; + $limits_values = $limits[$k]; + if (is_string($limits[$k])){ + $limits_values = explode($form["tabs"]["limits"]["fields"][$k]["separator"],$limits[$k]); + } + $additional_values = explode($form["tabs"]["limits"]["fields"][$k]["separator"],$v); + $app->log('Template processing key ' . $k . ' type CHECKBOXARRAY, lim / add: ' . implode(',', $limits_values) . ' / ' . implode(',', $additional_values) . ' for client ' . $clientId, LOGLEVEL_DEBUG); + /* unification of limits_values (master template) and additional_values (additional template) */ + $limits_unified = array(); + foreach($form["tabs"]["limits"]["fields"][$k]["value"] as $key => $val){ + if (in_array($key,$limits_values) || in_array($key,$additional_values)) $limits_unified[] = $key; + } + $limits[$k] = implode($form["tabs"]["limits"]["fields"][$k]["separator"],$limits_unified); + break; + case 'CHECKBOX': + if($k == 'force_suexec') { + // 'n' is less limited than y + if (!isset($limits[$k])){ + $limits[$k] = 'y'; } - $limits[$k] = implode($form["tabs"]["limits"]["fields"][$k]["separator"],$limits_unified); - break; - case 'CHECKBOX': - if($k == 'force_suexec') { - // 'n' is less limited than y - if (!isset($limits[$k])){ - $limits[$k] = 'y'; - } - if($limits[$k] == 'n' || $v == 'n') $limits[$k] = 'n'; - } else { - // 'y' is less limited than n - if (!isset($limits[$k])){ - $limits[$k] = 'n'; - } - if($limits[$k] == 'y' || $v == 'y') $limits[$k] = 'y'; + if($limits[$k] == 'n' || $v == 'n') $limits[$k] = 'n'; + } else { + // 'y' is less limited than n + if (!isset($limits[$k])){ + $limits[$k] = 'n'; } - break; - case 'SELECT': - $limit_values = array_keys($form["tabs"]["limits"]["fields"][$k]["value"]); - /* choose the lower index of the two SELECT items */ - $limits[$k] = $limit_values[min(array_search($limits[$k], $limit_values), array_search($v, $limit_values))]; - break; + if($limits[$k] == 'y' || $v == 'y') $limits[$k] = 'y'; } + break; + case 'SELECT': + $limit_values = array_keys($form["tabs"]["limits"]["fields"][$k]["value"]); + /* choose the lower index of the two SELECT items */ + $limits[$k] = $limit_values[min(array_search($limits[$k], $limit_values), array_search($v, $limit_values))]; + break; } } } diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php index b3a59e930..197c40648 100644 --- a/interface/lib/classes/listform.inc.php +++ b/interface/lib/classes/listform.inc.php @@ -193,11 +193,15 @@ class listform { public function getPagingSQL($sql_where = '1') { global $app, $conf; - - //* Add Global Limit from selectbox - if(!empty($_POST['search_limit']) AND $app->functions->intval($_POST['search_limit'])){ + + //* Add Global Limit from selectbox + if(!empty($_POST['search_limit']) AND $app->functions->intval($_POST['search_limit']) > 0){ $_SESSION['search']['limit'] = $app->functions->intval($_POST['search_limit']); } + + if(preg_match('{^[0-9]$}',$_SESSION['search']['limit'])){ + $_SESSION['search']['limit'] = 15; + } //* Get Config variables $list_name = $this->listDef['name']; diff --git a/interface/lib/classes/plugin_backuplist.inc.php b/interface/lib/classes/plugin_backuplist.inc.php index ad567b29e..2e0fdc5d3 100644 --- a/interface/lib/classes/plugin_backuplist.inc.php +++ b/interface/lib/classes/plugin_backuplist.inc.php @@ -55,6 +55,12 @@ class plugin_backuplist extends plugin_base { if(isset($_GET['backup_action'])) { $backup_id = $app->functions->intval($_GET['backup_id']); + //* check if the user is owner of the parent domain + $domain_backup = $app->db->queryOneRecord("SELECT parent_domain_id FROM web_backup WHERE backup_id = ".$backup_id); + if(!$app->tform->checkOwnerPermisssions($this->dataRecord["parent_domain_id"])){ + $app->error($app->tform->lng('no_domain_perm')); + } + if($_GET['backup_action'] == 'download' && $backup_id > 0) { $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_download' AND action_param = '$backup_id'"; $tmp = $app->db->queryOneRecord($sql); diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 66ba90dbf..55759f4bc 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -1103,7 +1103,40 @@ class remoting { } $app->uses('remoting_lib'); $app->remoting_lib->loadFormDef('../client/form/client.tform.php'); - return $app->remoting_lib->getDataRecord($client_id); + $data = $app->remoting_lib->getDataRecord($client_id); + + // we need to get the new-style templates for backwards-compatibility - maybe we remove this in a later version + if(is_array($data) && count($data) > 0) { + if(isset($data['client_id'])) { + // this is a single record + if($data['template_additional'] == '') { + $tpls = $app->db->queryAllRecords('SELECT CONCAT(`assigned_template_id`, \':\', `client_template_id`) as `item` FROM `client_template_assigned` WHERE `client_id` = ' . $data['client_id']); + $tpl_arr = array(); + if($tpls) { + foreach($tpls as $tpl) $tpl_arr[] = $tpl['item']; + } + $data['template_additional'] = implode('/', $tpl_arr); + unset($tpl_arr); + unset($tpls); + } + } elseif(isset($data[0]['client_id'])) { + // multiple client records + foreach($data as $index => $client) { + if($client['template_additional'] == '') { + $tpls = $app->db->queryAllRecords('SELECT CONCAT(`assigned_template_id`, \':\', `client_template_id`) as `item` FROM `client_template_assigned` WHERE `client_id` = ' . $client['client_id']); + $tpl_arr = array(); + if($tpls) { + foreach($tpls as $tpl) $tpl_arr[] = $tpl['item']; + } + $data[$index]['template_additional'] = implode('/', $tpl_arr); // dont use the $client array here - changes would not be returned to soap + } + unset($tpl_arr); + unset($tpls); + } + } + } + + return $data; } public function client_get_id($session_id, $sys_userid) @@ -1169,6 +1202,33 @@ class remoting { $this->server->fault('permission_denied','You do not have the permissions to access this function.'); return false; } + + $app->uses('remoting_lib'); + $app->remoting_lib->loadFormDef('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] > 0 ? 'reseller' : 'client') . '.tform.php'); + $old_rec = $app->remoting_lib->getDataRecord($client_id); + + // we need the previuos templates assigned here + $this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ' . $client_id); + if(!is_array($this->oldTemplatesAssigned) || count($this->oldTemplatesAssigned) < 1) { + // check previous type of storing templates + $tpls = explode('/', $old_rec['template_additional']); + $this->oldTemplatesAssigned = array(); + foreach($tpls as $item) { + $item = trim($item); + if(!$item) continue; + $this->oldTemplatesAssigned[] = array('assigned_template_id' => 0, 'client_template_id' => $item, 'client_id' => $client_id); + } + unset($tpls); + } + if(isset($params['template_additional'])) { + $app->uses('client_templates'); + $templates = explode('/', $params['template_additional']); + $params['template_additional'] = ''; + $app->client_templates->update_client_templates($client_id, $templates); + unset($templates); + } + + if(!isset($params['parent_client_id']) || $params['parent_client_id'] == 0) $params['parent_client_id'] = $reseller_id; $affected_rows = $this->updateQuery('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] > 0 ? 'reseller' : 'client') . '.tform.php', $reseller_id, $client_id, $params, 'client:' . ($reseller_id ? 'reseller' : 'client') . ':on_after_update'); @@ -1176,7 +1236,120 @@ class remoting { return $affected_rows; } + + public function client_template_additional_get($session_id, $client_id) { + global $app; + if(!$this->checkPerm($session_id, 'client_get')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + if(@is_numeric($client_id)) { + $sql = "SELECT * FROM `client_template_assigned` WHERE `client_id` = ".$client_id; + return $app->db->queryOneRecord($sql); + } else { + $this->server->fault('The ID must be an integer.'); + return array(); + } + } + + private function _set_client_formdata($client_id) { + global $app; + + $this->id = $client_id; + $this->dataRecord = $app->db->queryOneRecord('SELECT * FROM `client` WHERE `client_id` = ' . $client_id); + $this->oldDataRecord = $this->dataRecord; + + $this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ' . $client_id); + if(!is_array($this->oldTemplatesAssigned) || count($this->oldTemplatesAssigned) < 1) { + // check previous type of storing templates + $tpls = explode('/', $this->oldDataRecord['template_additional']); + $this->oldTemplatesAssigned = array(); + foreach($tpls as $item) { + $item = trim($item); + if(!$item) continue; + $this->oldTemplatesAssigned[] = array('assigned_template_id' => 0, 'client_template_id' => $item, 'client_id' => $client_id); + } + unset($tpls); + } + } + + public function client_template_additional_add($session_id, $client_id, $template_id) { + global $app; + + if(!$this->checkPerm($session_id, 'client_update')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + if(@is_numeric($client_id) && @is_numeric($template_id)) { + // check if client exists + $check = $app->db->queryOneRecord('SELECT `client_id` FROM `client` WHERE `client_id` = ' . $client_id); + if(!$check) { + $this->server->fault('Invalid client'); + return false; + } + // check if template exists + $check = $app->db->queryOneRecord('SELECT `template_id` FROM `client_template` WHERE `template_id` = ' . $template_id); + if(!$check) { + $this->server->fault('Invalid template'); + return false; + } + + // for the update event we have to cheat a bit + $this->_set_client_formdata($client_id); + + $sql = "INSERT INTO `client_template_assigned` (`client_id`, `client_template_id`) VALUES (" . $client_id . ", " . $template_id . ")"; + $app->db->query($sql); + $insert_id = $app->db->insertID(); + + $app->plugin->raiseEvent('client:client:on_after_update',$this); + + return $insert_id; + } else { + $this->server->fault('The IDs must be of type integer.'); + return false; + } + } + + public function client_template_additional_delete($session_id, $client_id, $assigned_template_id) { + global $app; + + if(!$this->checkPerm($session_id, 'client_update')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + if(@is_numeric($client_id) && @is_numeric($template_id)) { + // check if client exists + $check = $app->db->queryOneRecord('SELECT `client_id` FROM `client` WHERE `client_id` = ' . $client_id); + if(!$check) { + $this->server->fault('Invalid client'); + return false; + } + // check if template exists + $check = $app->db->queryOneRecord('SELECT `assigned_template_id` FROM `client_template_assigned` WHERE `assigned_template_id` = ' . $assigned_template_id); + if(!$check) { + $this->server->fault('Invalid template'); + return false; + } + + // for the update event we have to cheat a bit + $this->_set_client_formdata($client_id); + + $sql = "DELETE FROM `client_template_assigned` WHERE `assigned_template_id` = " . $template_id . " AND `client_id` = " . $client_id; + $app->db->query($sql); + $affected_rows = $app->db->affectedRows(); + + $app->plugin->raiseEvent('client:client:on_after_update',$this); + + return $affected_rows; + } else { + $this->server->fault('The IDs must be of type integer.'); + return false; + } + } public function client_delete($session_id,$client_id) { diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php index f9cf59d37..0c40a8626 100644 --- a/interface/lib/classes/remoting_lib.inc.php +++ b/interface/lib/classes/remoting_lib.inc.php @@ -133,6 +133,8 @@ class remoting_lib { } } unset($form); + + $this->dateformat = $app->lng('conf_format_dateshort'); return true; } diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index d1fd373c5..f4ea0d7de 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -552,9 +552,10 @@ class tform { $new_record[$key] = $out; break; - case 'PASSWORD': - $new_record[$key] = ''; - break; + case 'PASSWORD': + //$new_record[$key] = ''; + $new_record[$key] = htmlspecialchars($field['default']); + break; case 'CHECKBOX': // $checked = (empty($field["default"]))?'':' CHECKED'; @@ -1257,7 +1258,7 @@ class tform { function getDataRecord($primary_id) { global $app; $escape = '`'; - $sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id; + $sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id." AND ".$this->getAuthSQL('r',$this->formDef['db_table']); return $app->db->queryOneRecord($sql); } @@ -1267,7 +1268,7 @@ class tform { $app->db->datalogSave($this->formDef['db_table'], $action, $this->formDef['db_table_idx'], $primary_id, $record_old, $record_new); return true; - +<<<<<<< .mine /* // Add backticks for incomplete table names. if(stristr($this->formDef['db_table'],'.')) { @@ -1331,7 +1332,7 @@ class tform { return true; */ - } +=======>>>>>>> .theirs } function getAuthSQL($perm, $table = '') { if($_SESSION["s"]["user"]["typ"] == 'admin') { diff --git a/interface/lib/classes/tree.inc.php b/interface/lib/classes/tree.inc.php index a2bdfd2b0..dcc2d61fd 100644 --- a/interface/lib/classes/tree.inc.php +++ b/interface/lib/classes/tree.inc.php @@ -147,14 +147,14 @@ class tree function deltree($tree_id) { // lösche Einträge recursiv - $this->_deltree_recurse(&$this->obj[$this->root_id],$tree_id, 0); + $this->_deltree_recurse($this->obj[$this->root_id],$tree_id, 0); } /* Hilfsfunktion für deltree */ - function _deltree_recurse($myobj,$tree_id,$delete) { + function _deltree_recurse(&$myobj,$tree_id,$delete) { if(is_array($myobj->childs)) { foreach($myobj->childs as $val) { @@ -164,7 +164,7 @@ class tree } // recurse durch Objekte - $this->_deltree_recurse(&$val,$tree_id,$delete); + $this->_deltree_recurse($val,$tree_id,$delete); // lösche Eintrag if($delete == 1) { diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng index a49f6fb85..8bea2ecf8 100644 --- a/interface/lib/lang/ar.lng +++ b/interface/lib/lang/ar.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng index 8b15a9a50..288701799 100644 --- a/interface/lib/lang/bg.lng +++ b/interface/lib/lang/bg.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng index ae65e871d..0caeef495 100644 --- a/interface/lib/lang/br.lng +++ b/interface/lib/lang/br.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index 4bff9bc2e..0c3071926 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_web_folder_user'] = 'Vytvoření uživatele pro adresáře $wb['datalog_status_u_web_folder_user'] = 'Aktualizace nastavení uživatele pro adresáře chráněné heslem'; $wb['datalog_status_d_web_folder_user'] = 'Odstranění uživatele pro adresáře chráněné heslem'; $wb['login_as_txt'] = 'Přihlaste se jako'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index 56b1c1be8..328b5202d 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_web_folder_user'] = 'Verzeichnisschutz Benutzer anlegen'; $wb['datalog_status_u_web_folder_user'] = 'Verzeichnisschutz Benutzer ändern'; $wb['datalog_status_d_web_folder_user'] = 'Verzeichnisschutz Benutzer löschen'; $wb['login_as_txt'] = 'Anmelden als'; +$wb['no_domain_perm'] = 'Sie haben keine Berechtigung für diese Domain.'; +$wb['no_destination_perm'] = 'Sie haben keine Berechtigung für dieses Ziel.'; ?> diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng index a85327db6..b633c1b86 100644 --- a/interface/lib/lang/el.lng +++ b/interface/lib/lang/el.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng index 60e9bd30d..47b611586 100644 --- a/interface/lib/lang/en.lng +++ b/interface/lib/lang/en.lng @@ -133,4 +133,6 @@ $wb['datalog_status_u_web_folder_user'] = 'Update folder protection user'; $wb['datalog_status_d_web_folder_user'] = 'Delete folder protection user'; $wb['login_as_txt'] = 'Log in as'; +$wb["no_domain_perm"] = 'You have no permission for this domain.'; +$wb["no_destination_perm"] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng index 619ae97f1..8d79fb91b 100644 --- a/interface/lib/lang/es.lng +++ b/interface/lib/lang/es.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_web_folder_user'] = 'Create folder protection user'; $wb['datalog_status_u_web_folder_user'] = 'Update folder protection user'; $wb['datalog_status_d_web_folder_user'] = 'Delete folder protection user'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng index 9b89ed1a6..01d89e23c 100755 --- a/interface/lib/lang/fi.lng +++ b/interface/lib/lang/fi.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/fr.lng b/interface/lib/lang/fr.lng index c611a6a09..ff5f9ff55 100644 --- a/interface/lib/lang/fr.lng +++ b/interface/lib/lang/fr.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_web_folder_user'] = 'Create folder protection user'; $wb['datalog_status_u_web_folder_user'] = 'Update folder protection user'; $wb['datalog_status_d_web_folder_user'] = 'Delete folder protection user'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng index 8ba16f1b6..903e72708 100644 --- a/interface/lib/lang/hr.lng +++ b/interface/lib/lang/hr.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng index 7ed92c5b7..da0302219 100644 --- a/interface/lib/lang/hu.lng +++ b/interface/lib/lang/hu.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng index 6313b8fa4..83383e0dd 100644 --- a/interface/lib/lang/id.lng +++ b/interface/lib/lang/id.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng index 4f05227b6..a64b252cc 100644 --- a/interface/lib/lang/it.lng +++ b/interface/lib/lang/it.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng index e8493692d..df33aa894 100644 --- a/interface/lib/lang/ja.lng +++ b/interface/lib/lang/ja.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng index d0d8d9e05..459de7fce 100644 --- a/interface/lib/lang/nl.lng +++ b/interface/lib/lang/nl.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng index 7374ab6b8..338366167 100644 --- a/interface/lib/lang/pl.lng +++ b/interface/lib/lang/pl.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_web_folder_user'] = 'Utwórz konto dla zabezpieczonego fol $wb['datalog_status_u_web_folder_user'] = 'Edytuj konto zabezpieczonego folderu'; $wb['datalog_status_d_web_folder_user'] = 'Usuń konto zabezpieczonego folderu'; $wb['login_as_txt'] = 'Zaloguj jako'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng index cb16283c2..bc4a99cdb 100644 --- a/interface/lib/lang/pt.lng +++ b/interface/lib/lang/pt.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng index c30a9b75b..7c54cd2e6 100644 --- a/interface/lib/lang/ro.lng +++ b/interface/lib/lang/ro.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng index 039622403..07a811811 100644 --- a/interface/lib/lang/ru.lng +++ b/interface/lib/lang/ru.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng index 712e415a3..8334a1f41 100644 --- a/interface/lib/lang/se.lng +++ b/interface/lib/lang/se.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng index 15923d246..1c8781764 100644 --- a/interface/lib/lang/sk.lng +++ b/interface/lib/lang/sk.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index 55041acb5..71225191a 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -131,4 +131,6 @@ $wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings'; $wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings'; $wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings'; $wb['login_as_txt'] = 'Log in as'; +$wb['no_domain_perm'] = 'You have no permission for this domain.'; +$wb['no_destination_perm'] = 'You have no permission for this destination.'; ?> diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index da67f6b0b..f09d4db2e 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -433,6 +433,42 @@ $form["tabs"]['misc'] = array ( 'default' => 'n', 'value' => array(0 => 'n',1 => 'y') ), + 'admin_dashlets_left' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '' + ), + 'admin_dashlets_right' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '' + ), + 'reseller_dashlets_left' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '' + ), + 'reseller_dashlets_right' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '' + ), + 'client_dashlets_left' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '' + ), + 'client_dashlets_right' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '' + ), ################################## # ENDE Datatable fields ################################## diff --git a/interface/web/admin/language_edit.php b/interface/web/admin/language_edit.php index f16ea683c..208f1ac94 100644 --- a/interface/web/admin/language_edit.php +++ b/interface/web/admin/language_edit.php @@ -85,7 +85,7 @@ $app->tpl->setVar("file_path", $file_path); $keyword_list = array(); if(isset($wb) && is_array($wb)) { foreach($wb as $key => $val) { - $keyword_list[] = array('key' => $key, 'val' => $val); + $keyword_list[] = array('key' => $key, 'val' => htmlentities($val)); } $app->tpl->setLoop('records', $keyword_list); diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 618b69e47..1c21551a8 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/ar_software_package.lng b/interface/web/admin/lib/lang/ar_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/ar_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/ar_software_package_list.lng b/interface/web/admin/lib/lang/ar_software_package_list.lng index 87b27fd50..9fa53867b 100644 --- a/interface/web/admin/lib/lang/ar_software_package_list.lng +++ b/interface/web/admin/lib/lang/ar_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/ar_software_repo.lng b/interface/web/admin/lib/lang/ar_software_repo.lng index 574dd1162..f2cbbb2c2 100644 --- a/interface/web/admin/lib/lang/ar_software_repo.lng +++ b/interface/web/admin/lib/lang/ar_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'User (optional)'; $wb['repo_password_txt'] = 'Password (optional)'; $wb['active_txt'] = 'Active'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index 1cc07ec02..11604d343 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 18cae7525..c050aad02 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -171,4 +171,21 @@ $wb['website_autoalias_note_txt'] = 'Placeholders:'; $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/bg_software_package.lng b/interface/web/admin/lib/lang/bg_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/bg_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/bg_software_package_list.lng b/interface/web/admin/lib/lang/bg_software_package_list.lng index 6ff7b4a9a..e251c95fb 100644 --- a/interface/web/admin/lib/lang/bg_software_package_list.lng +++ b/interface/web/admin/lib/lang/bg_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Пакети'; $wb['repoupdate_txt'] = 'Обновяване на пакетите '; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/bg_software_repo.lng b/interface/web/admin/lib/lang/bg_software_repo.lng index a69c741af..f51565434 100644 --- a/interface/web/admin/lib/lang/bg_software_repo.lng +++ b/interface/web/admin/lib/lang/bg_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Потребител (не е задължително)'; $wb['repo_password_txt'] = 'Парола (не е задължително)'; $wb['active_txt'] = 'Активен'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index b7b364bf0..e3c6678b1 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 1f8e3f762..71288a9aa 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/br_software_package.lng b/interface/web/admin/lib/lang/br_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/br_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/br_software_package_list.lng b/interface/web/admin/lib/lang/br_software_package_list.lng index 2adf5b8d4..fd4f41e6d 100644 --- a/interface/web/admin/lib/lang/br_software_package_list.lng +++ b/interface/web/admin/lib/lang/br_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/br_software_repo.lng b/interface/web/admin/lib/lang/br_software_repo.lng index 5b54c3080..dc8993742 100644 --- a/interface/web/admin/lib/lang/br_software_repo.lng +++ b/interface/web/admin/lib/lang/br_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Usuário (opcional)'; $wb['repo_password_txt'] = 'Senha (opcional)'; $wb['active_txt'] = 'Ativo'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index 76d2c06ac..3bc017215 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/cz_remote_action.lng b/interface/web/admin/lib/lang/cz_remote_action.lng index 68da1c065..e1908e2d0 100644 --- a/interface/web/admin/lib/lang/cz_remote_action.lng +++ b/interface/web/admin/lib/lang/cz_remote_action.lng @@ -2,9 +2,9 @@ $wb['select_server_txt'] = 'Zvolit server'; $wb['btn_do_txt'] = 'Provést akci'; $wb['do_osupdate_caption'] = 'Aktualizace operačního systému na vzdáleném serveru.'; -$wb['do_osupdate_desc'] = 'Tato akce provede \"aptitude -y\" aktualizaci na vybraném serveru.

POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !'; +$wb['do_osupdate_desc'] = 'Tato akce provede \\"aptitude -y\\" aktualizaci na vybraném serveru.

POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !'; $wb['do_ispcupdate_caption'] = 'Provedení ISPConfig 3 - aktualizace na vzdáleném serveru'; -$wb['do_ispcupdate_desc'] = 'Tato akce provede \"ISPConfig 3\" aktualizaci na vašem vybraném serveru.

POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !'; +$wb['do_ispcupdate_desc'] = 'Tato akce provede \\"ISPConfig 3\\" aktualizaci na vašem vybraném serveru.

POUŽITÍ TÉTO AKCE NA VLASTNÍ NEBEZPEČÍ !'; $wb['action_scheduled'] = 'Akce je naplánována na provedení'; $wb['select_all_server'] = 'Všechny servery'; $wb['ispconfig_update_title'] = 'ISPConfig pokyny k aktualizaci'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index c0e42402e..049da2272 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Při překročení limitu přenesených dat, poslat oznámení adminovi'; $wb['overtraffic_notify_client_txt'] = 'Při překročení limitu přenesených dat, poslat oznámení klientovi'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/cz_software_package.lng b/interface/web/admin/lib/lang/cz_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/cz_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/cz_software_package_list.lng b/interface/web/admin/lib/lang/cz_software_package_list.lng index 7df837f0c..9d227acb2 100644 --- a/interface/web/admin/lib/lang/cz_software_package_list.lng +++ b/interface/web/admin/lib/lang/cz_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Balíčky'; $wb['repoupdate_txt'] = 'Aktualizace seznamu balíků'; $wb['package_id_txt'] = 'místní App-ID'; $wb['no_packages_txt'] = 'Žádné balíčky nejsou k dispozici'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/cz_software_repo.lng b/interface/web/admin/lib/lang/cz_software_repo.lng index 64a190d9a..6e200d8d1 100644 --- a/interface/web/admin/lib/lang/cz_software_repo.lng +++ b/interface/web/admin/lib/lang/cz_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Uživatel (volitelné)'; $wb['repo_password_txt'] = 'Heslo (volitelné)'; $wb['active_txt'] = 'Aktivní'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index 8073830eb..167b93332 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show Autoresponder tab in Mailbox detail'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show Mail Filter tab in Mailbox detail'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show Custom Rules tab in Mailbox detail'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 163fa3479..217b95de8 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Zeige Benutzerregel Reiter in E-Mail $wb['reseller_can_use_options_txt'] = 'Reseller können den Optionen Reiter bei Webseiten verwenden'; $wb['phpmyadmin_url_note_txt'] = 'Platzhalter:'; $wb['webmail_url_note_txt'] = 'Platzhalter:'; +$wb['available_dashlets_note_txt'] = 'Verfügbare Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Admin-Dashlets links'; +$wb['admin_dashlets_right_txt'] = 'Admin-Dashlets rechts'; +$wb['reseller_dashlets_left_txt'] = 'Reseller-Dashlets links'; +$wb['reseller_dashlets_right_txt'] = 'Reseller-Dashlets rechts'; +$wb['client_dashlets_left_txt'] = 'Kunden-Dashlets links'; +$wb['client_dashlets_right_txt'] = 'Kunden-Dashlets rechts'; ?> diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index b9913e65e..99bdf6f2d 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/el_software_package.lng b/interface/web/admin/lib/lang/el_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/el_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/el_software_package_list.lng b/interface/web/admin/lib/lang/el_software_package_list.lng index 1528928da..1553ea1ce 100644 --- a/interface/web/admin/lib/lang/el_software_package_list.lng +++ b/interface/web/admin/lib/lang/el_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Πακέτα'; $wb['repoupdate_txt'] = 'Ενημέρωση λίστας πακκέτων'; $wb['package_id_txt'] = 'τοπικό App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/el_software_repo.lng b/interface/web/admin/lib/lang/el_software_repo.lng index 5b1e2228e..3b12d3fd8 100644 --- a/interface/web/admin/lib/lang/el_software_repo.lng +++ b/interface/web/admin/lib/lang/el_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Χρήστης (Προαιρετικό)'; $wb['repo_password_txt'] = 'Συνθηματικό (Προαιρετικό)'; $wb['active_txt'] = 'Ενεργό'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index d85a0830c..f69e58a83 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 2edd54307..7c5fe6eaf 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -55,4 +55,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a $wb['webmail_url_error_regex'] = 'Invalid webmail URL'; $wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; $wb['webmail_url_note_txt'] = 'Placeholder:'; +$wb['available_dashlets_note_txt'] = 'Available Dashlets:'; +$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets'; +$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets'; +$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets'; +$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets'; +$wb['client_dashlets_left_txt'] = 'Left Client Dashlets'; +$wb['client_dashlets_right_txt'] = 'Right Client Dashlets'; ?> diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 92d9b45bd..1987c5145 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/es_software_package.lng b/interface/web/admin/lib/lang/es_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/es_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/es_software_package_list.lng b/interface/web/admin/lib/lang/es_software_package_list.lng index 103260991..3986ef870 100644 --- a/interface/web/admin/lib/lang/es_software_package_list.lng +++ b/interface/web/admin/lib/lang/es_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/es_software_repo.lng b/interface/web/admin/lib/lang/es_software_repo.lng index 3b9a89e88..b8487cfbf 100644 --- a/interface/web/admin/lib/lang/es_software_repo.lng +++ b/interface/web/admin/lib/lang/es_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Usuario (opcional)'; $wb['repo_password_txt'] = 'Contraseña (opcional)'; $wb['active_txt'] = 'Activar'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index f4ed53ca4..118a0dfae 100644 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 0bddcc7d8..efa122033 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/fi_software_package.lng b/interface/web/admin/lib/lang/fi_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/fi_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/fi_software_package_list.lng b/interface/web/admin/lib/lang/fi_software_package_list.lng index 85e31f904..87a9e193b 100755 --- a/interface/web/admin/lib/lang/fi_software_package_list.lng +++ b/interface/web/admin/lib/lang/fi_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/fi_software_repo.lng b/interface/web/admin/lib/lang/fi_software_repo.lng index c89969445..f875f428b 100755 --- a/interface/web/admin/lib/lang/fi_software_repo.lng +++ b/interface/web/admin/lib/lang/fi_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'Varaston internetosoite'; $wb['repo_username_txt'] = 'Käyttäjätunnus (valinnainen)'; $wb['repo_password_txt'] = 'Salasana (valinnnainen)'; $wb['active_txt'] = 'Käytössä'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index 1ed39352b..c2c1dab75 100755 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index c74d89ec1..eabca449d 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/fr_software_package.lng b/interface/web/admin/lib/lang/fr_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/fr_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/fr_software_package_list.lng b/interface/web/admin/lib/lang/fr_software_package_list.lng index d6e1d14d4..405b9e296 100644 --- a/interface/web/admin/lib/lang/fr_software_package_list.lng +++ b/interface/web/admin/lib/lang/fr_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Mettre à jour la liste des paquets'; $wb['package_id_txt'] = 'App-ID locale'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/fr_software_repo.lng b/interface/web/admin/lib/lang/fr_software_repo.lng index 7b3ec481a..f65c955d5 100644 --- a/interface/web/admin/lib/lang/fr_software_repo.lng +++ b/interface/web/admin/lib/lang/fr_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Utilisateur (optionnel)'; $wb['repo_password_txt'] = 'Mot de passe (optionnel)'; $wb['active_txt'] = 'Actif'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 7a404d629..561a5d727 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 27168f2c4..a441f968a 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/hr_software_package.lng b/interface/web/admin/lib/lang/hr_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/hr_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/hr_software_package_list.lng b/interface/web/admin/lib/lang/hr_software_package_list.lng index 66ee959b9..8381110fe 100644 --- a/interface/web/admin/lib/lang/hr_software_package_list.lng +++ b/interface/web/admin/lib/lang/hr_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Paketi'; $wb['repoupdate_txt'] = 'Obnovi listu paketa'; $wb['package_id_txt'] = 'lokalni App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/hr_software_repo.lng b/interface/web/admin/lib/lang/hr_software_repo.lng index 42064a130..bbfb2e2db 100644 --- a/interface/web/admin/lib/lang/hr_software_repo.lng +++ b/interface/web/admin/lib/lang/hr_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Korisničko ime (opcionalno)'; $wb['repo_password_txt'] = 'Šifra (opcionalno)'; $wb['active_txt'] = 'Aktivno'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index 210a18b00..2ff0cbc9f 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 53496080f..0be61efd1 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/hu_software_package.lng b/interface/web/admin/lib/lang/hu_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/hu_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/hu_software_package_list.lng b/interface/web/admin/lib/lang/hu_software_package_list.lng index d4749f0de..430583ce8 100644 --- a/interface/web/admin/lib/lang/hu_software_package_list.lng +++ b/interface/web/admin/lib/lang/hu_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Csomagok'; $wb['repoupdate_txt'] = 'Csomaglista frissítése'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/hu_software_repo.lng b/interface/web/admin/lib/lang/hu_software_repo.lng index f05284f14..3c578e369 100644 --- a/interface/web/admin/lib/lang/hu_software_repo.lng +++ b/interface/web/admin/lib/lang/hu_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'Cím'; $wb['repo_username_txt'] = 'Felhasználó (opcionális)'; $wb['repo_password_txt'] = 'Jelszó (opcionális)'; $wb['active_txt'] = 'Aktív'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index f18d12f4c..ee5f429e2 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 39217c392..54a449322 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/id_software_package.lng b/interface/web/admin/lib/lang/id_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/id_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/id_software_package_list.lng b/interface/web/admin/lib/lang/id_software_package_list.lng index a7e4987ed..02642be6e 100644 --- a/interface/web/admin/lib/lang/id_software_package_list.lng +++ b/interface/web/admin/lib/lang/id_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Paket'; $wb['repoupdate_txt'] = 'Mutakhirkan daftar paket'; $wb['package_id_txt'] = 'App-ID lokal'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/id_software_repo.lng b/interface/web/admin/lib/lang/id_software_repo.lng index a5647bc8c..1c3b0305b 100644 --- a/interface/web/admin/lib/lang/id_software_repo.lng +++ b/interface/web/admin/lib/lang/id_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Pengguna (opsional)'; $wb['repo_password_txt'] = 'Sandi (opsional)'; $wb['active_txt'] = 'Aktif'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index c68bc676c..ecbf3c72c 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 6bea4d2ec..d04076804 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/it_software_package.lng b/interface/web/admin/lib/lang/it_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/it_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/it_software_package_list.lng b/interface/web/admin/lib/lang/it_software_package_list.lng index 87b27fd50..9fa53867b 100644 --- a/interface/web/admin/lib/lang/it_software_package_list.lng +++ b/interface/web/admin/lib/lang/it_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/it_software_repo.lng b/interface/web/admin/lib/lang/it_software_repo.lng index 28ac8754b..7adc6b086 100644 --- a/interface/web/admin/lib/lang/it_software_repo.lng +++ b/interface/web/admin/lib/lang/it_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Utente (facoltativo)'; $wb['repo_password_txt'] = 'Password (facoltativa)'; $wb['active_txt'] = 'Attivo'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index 60512a412..8ba0b9fcb 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index ce8803643..890bb568b 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/ja_software_package.lng b/interface/web/admin/lib/lang/ja_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/ja_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/ja_software_package_list.lng b/interface/web/admin/lib/lang/ja_software_package_list.lng index fb587767c..e5352e91e 100644 --- a/interface/web/admin/lib/lang/ja_software_package_list.lng +++ b/interface/web/admin/lib/lang/ja_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/ja_software_repo.lng b/interface/web/admin/lib/lang/ja_software_repo.lng index fba63e998..c95399a54 100644 --- a/interface/web/admin/lib/lang/ja_software_repo.lng +++ b/interface/web/admin/lib/lang/ja_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'ユーザー(必要があれば)'; $wb['repo_password_txt'] = 'パスワード(必要があれば)'; $wb['active_txt'] = '有効'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index f58ce702a..842b65f3e 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index c3b3ce049..5d08e91f0 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/nl_software_package.lng b/interface/web/admin/lib/lang/nl_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/nl_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/nl_software_package_list.lng b/interface/web/admin/lib/lang/nl_software_package_list.lng index ee5516a15..33e66022b 100644 --- a/interface/web/admin/lib/lang/nl_software_package_list.lng +++ b/interface/web/admin/lib/lang/nl_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Pakketten'; $wb['repoupdate_txt'] = 'Update pakketlijst'; $wb['package_id_txt'] = 'locaal App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/nl_software_repo.lng b/interface/web/admin/lib/lang/nl_software_repo.lng index 91f060de9..665c4197a 100644 --- a/interface/web/admin/lib/lang/nl_software_repo.lng +++ b/interface/web/admin/lib/lang/nl_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'User (optionieel)'; $wb['repo_password_txt'] = 'Password (optionieel)'; $wb['active_txt'] = 'Actief'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index 65ed315cd..fe3b85e5e 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -52,4 +52,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 175c9bedc..32c4c00e5 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Prześlij informacje o przekroczeniu transferu do admina'; $wb['overtraffic_notify_client_txt'] = 'Prześlij informacje o przekroczeniu transferu do klienta'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/pl_software_package.lng b/interface/web/admin/lib/lang/pl_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/pl_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/pl_software_package_list.lng b/interface/web/admin/lib/lang/pl_software_package_list.lng index 78c412c34..cb47abc46 100644 --- a/interface/web/admin/lib/lang/pl_software_package_list.lng +++ b/interface/web/admin/lib/lang/pl_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Pakiety'; $wb['repoupdate_txt'] = 'Aktualizuj listę pakietów'; $wb['package_id_txt'] = 'lokalny App-ID'; $wb['no_packages_txt'] = 'Brak dostępnych pakietów'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/pl_software_repo.lng b/interface/web/admin/lib/lang/pl_software_repo.lng index d11a1b3b3..1cc3dbb61 100644 --- a/interface/web/admin/lib/lang/pl_software_repo.lng +++ b/interface/web/admin/lib/lang/pl_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Użytkownik (Opcjonalnie)'; $wb['repo_password_txt'] = 'Hasło (Opcjonalnie)'; $wb['active_txt'] = 'Aktywny'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index dbcd61ffa..9d4f6f59b 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Wyłącz sprawdzanie nazwy klie $wb['mailbox_show_autoresponder_tab_txt'] = 'Pokaż zakładkę autorespondera w szczegółach konta email.'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Pokaż zakładkę filtra email w szczegółach konta email.'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Pokaż zakładkę własnych filtrów email w szczegółach konta email.'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 25d19f302..e427ed91c 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/pt_software_package.lng b/interface/web/admin/lib/lang/pt_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/pt_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/pt_software_package_list.lng b/interface/web/admin/lib/lang/pt_software_package_list.lng index 80b0c2e2c..1ec77bdd1 100644 --- a/interface/web/admin/lib/lang/pt_software_package_list.lng +++ b/interface/web/admin/lib/lang/pt_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/pt_software_repo.lng b/interface/web/admin/lib/lang/pt_software_repo.lng index c0e8fd24c..436758e68 100644 --- a/interface/web/admin/lib/lang/pt_software_repo.lng +++ b/interface/web/admin/lib/lang/pt_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Utilizador (opcional)'; $wb['repo_password_txt'] = 'Senha (opcional)'; $wb['active_txt'] = 'Activo'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index 93389bbe9..32ed93f26 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index d3247ac82..55b735560 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/ro_software_package.lng b/interface/web/admin/lib/lang/ro_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/ro_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/ro_software_package_list.lng b/interface/web/admin/lib/lang/ro_software_package_list.lng index 1eca7d423..4a8dcbcbf 100644 --- a/interface/web/admin/lib/lang/ro_software_package_list.lng +++ b/interface/web/admin/lib/lang/ro_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/ro_software_repo.lng b/interface/web/admin/lib/lang/ro_software_repo.lng index 574dd1162..f2cbbb2c2 100644 --- a/interface/web/admin/lib/lang/ro_software_repo.lng +++ b/interface/web/admin/lib/lang/ro_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'User (optional)'; $wb['repo_password_txt'] = 'Password (optional)'; $wb['active_txt'] = 'Active'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index d8486c8b0..d237d638a 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index f9cea0ca2..5ae21a926 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/ru_software_package.lng b/interface/web/admin/lib/lang/ru_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/ru_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/ru_software_package_list.lng b/interface/web/admin/lib/lang/ru_software_package_list.lng index 41ebca92d..028ef0040 100644 --- a/interface/web/admin/lib/lang/ru_software_package_list.lng +++ b/interface/web/admin/lib/lang/ru_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/ru_software_repo.lng b/interface/web/admin/lib/lang/ru_software_repo.lng index 74fb30e05..5aec8763c 100644 --- a/interface/web/admin/lib/lang/ru_software_repo.lng +++ b/interface/web/admin/lib/lang/ru_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Логин (опционально)'; $wb['repo_password_txt'] = 'Пароль (опционально)'; $wb['active_txt'] = 'Активен?'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index 8d47e5fd2..ee0fc50b0 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index df557e206..089e629be 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/se_software_package.lng b/interface/web/admin/lib/lang/se_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/se_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/se_software_package_list.lng b/interface/web/admin/lib/lang/se_software_package_list.lng index 87b27fd50..9fa53867b 100644 --- a/interface/web/admin/lib/lang/se_software_package_list.lng +++ b/interface/web/admin/lib/lang/se_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/se_software_repo.lng b/interface/web/admin/lib/lang/se_software_repo.lng index 574dd1162..f2cbbb2c2 100644 --- a/interface/web/admin/lib/lang/se_software_repo.lng +++ b/interface/web/admin/lib/lang/se_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'User (optional)'; $wb['repo_password_txt'] = 'Password (optional)'; $wb['active_txt'] = 'Active'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index d8486c8b0..d237d638a 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 0ea3647f2..c01606bf0 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -171,4 +171,21 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/sk_software_package.lng b/interface/web/admin/lib/lang/sk_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/sk_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/sk_software_package_list.lng b/interface/web/admin/lib/lang/sk_software_package_list.lng index d6cf51120..502a3a223 100644 --- a/interface/web/admin/lib/lang/sk_software_package_list.lng +++ b/interface/web/admin/lib/lang/sk_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/sk_software_repo.lng b/interface/web/admin/lib/lang/sk_software_repo.lng index 16e835014..263614f50 100644 --- a/interface/web/admin/lib/lang/sk_software_repo.lng +++ b/interface/web/admin/lib/lang/sk_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Uživateľ (voliteľný)'; $wb['repo_password_txt'] = 'Heslo (voliteľné)'; $wb['active_txt'] = 'Aktivovať'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index bf2c0777f..3b8b68321 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index a94949020..81595ff56 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -170,4 +170,22 @@ $wb['enable_ip_wildcard_txt'] = 'Enable IP wildcard (*)'; $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attributes)'; $wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin'; $wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client'; +$wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; +$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin'; +$wb['overquota_notify_client_txt'] = 'Send quota warnings to client'; +$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client'; +$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days'; +$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages'; +$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level'; +$wb['no_notifications_txt'] = 'No Notifications'; +$wb['monit_url_txt'] = 'Monit URL'; +$wb['monit_user_txt'] = 'Monit User'; +$wb['monit_password_txt'] = 'Monit Password'; +$wb['monit_url_error_regex'] = 'Invalid Monit URL'; +$wb['monit_url_note_txt'] = 'Placeholder:'; +$wb['munin_url_txt'] = 'Munin URL'; +$wb['munin_user_txt'] = 'Munin User'; +$wb['munin_password_txt'] = 'Munin Password'; +$wb['munin_url_error_regex'] = 'Invalid Munin URL'; +$wb['munin_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/lib/lang/tr_software_package.lng b/interface/web/admin/lib/lang/tr_software_package.lng new file mode 100644 index 000000000..62ef73407 --- /dev/null +++ b/interface/web/admin/lib/lang/tr_software_package.lng @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/interface/web/admin/lib/lang/tr_software_package_list.lng b/interface/web/admin/lib/lang/tr_software_package_list.lng index eb1812880..0f33d0a31 100644 --- a/interface/web/admin/lib/lang/tr_software_package_list.lng +++ b/interface/web/admin/lib/lang/tr_software_package_list.lng @@ -8,4 +8,6 @@ $wb['toolsarea_head_txt'] = 'Packages'; $wb['repoupdate_txt'] = 'Update package list'; $wb['package_id_txt'] = 'local App-ID'; $wb['no_packages_txt'] = 'No packages available'; +$wb['edit_txt'] = 'Edit'; +$wb['delete_txt'] = 'Delete'; ?> diff --git a/interface/web/admin/lib/lang/tr_software_repo.lng b/interface/web/admin/lib/lang/tr_software_repo.lng index 67ce387eb..08c443bab 100644 --- a/interface/web/admin/lib/lang/tr_software_repo.lng +++ b/interface/web/admin/lib/lang/tr_software_repo.lng @@ -4,4 +4,5 @@ $wb['repo_url_txt'] = 'URL'; $wb['repo_username_txt'] = 'Kullanıcı (isteğe bağlı)'; $wb['repo_password_txt'] = 'Şifre (isteğe bağlı)'; $wb['active_txt'] = 'Aktif'; +$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates'; ?> diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index 70e4853c7..e538a313f 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -49,4 +49,7 @@ $wb['client_username_web_check_disabled_txt'] = 'Disable client username check f $wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details'; $wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details'; $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details'; +$wb['webmail_url_error_regex'] = 'Invalid webmail URL'; +$wb['phpmyadmin_url_note_txt'] = 'Placeholder:'; +$wb['webmail_url_note_txt'] = 'Placeholder:'; ?> diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php index b83e704d4..c2702c78f 100644 --- a/interface/web/admin/system_config_edit.php +++ b/interface/web/admin/system_config_edit.php @@ -78,6 +78,24 @@ class page_action extends tform_actions { $app->tpl->setVar($record); } + function onShowEnd() { + global $app, $conf; + + // available dashlets + $available_dashlets_txt = ''; + $handle = @opendir(ISPC_WEB_PATH.'/dashboard/dashlets'); + while ($file = @readdir ($handle)) { + if ($file != '.' && $file != '..' && !is_dir($file)) { + $available_dashlets_txt .= '['.substr($file,0,-4).'] '; + } + } + + if($available_dashlets_txt == '') $available_dashlets_txt = '------'; + $app->tpl->setVar("available_dashlets_txt",$available_dashlets_txt); + + parent::onShowEnd(); + } + function onSubmit() { global $app; @@ -135,8 +153,9 @@ class page_action extends tform_actions { $server_config_array[$section] = $new_config; $server_config_str = $app->ini_parser->get_ini_string($server_config_array); - $sql = "UPDATE sys_ini SET config = '".$app->db->quote($server_config_str)."' WHERE sysini_id = 1"; - if($conf['demo_mode'] != true) $app->db->query($sql); + //$sql = "UPDATE sys_ini SET config = '".$app->db->quote($server_config_str)."' WHERE sysini_id = 1"; + //if($conf['demo_mode'] != true) $app->db->query($sql); + if($conf['demo_mode'] != true) $app->db->datalogUpdate('sys_ini', "config = '".$app->db->quote($server_config_str)."'", 'sysini_id', 1); /* * If we should use the domain-module, we have to insert all existing domains into the table diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm index 16f6052c3..6538236ed 100644 --- a/interface/web/admin/templates/system_config_misc_edit.htm +++ b/interface/web/admin/templates/system_config_misc_edit.htm @@ -20,6 +20,30 @@
+
+
+ +  {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} +
+
+ +  {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} +
+
+ +  {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} +
+
+ +  {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} +
+
+ +  {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} +
+
+ +  {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"}

{tmpl_var name='tab_change_discard_txt'}

diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php index 2b72d8195..ab33d9e12 100644 --- a/interface/web/client/client_edit.php +++ b/interface/web/client/client_edit.php @@ -49,8 +49,8 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { - - + var $_template_additional = array(); + function onShowNew() { global $app, $conf; @@ -92,8 +92,28 @@ class page_action extends tform_actions { } } } - - parent::onSubmit(); + + if($this->id != 0) { + $this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ' . $this->id); + if(!is_array($this->oldTemplatesAssigned) || count($this->oldTemplatesAssigned) < 1) { + // check previous type of storing templates + $tpls = explode('/', $this->oldDataRecord['template_additional']); + $this->oldTemplatesAssigned = array(); + foreach($tpls as $item) { + $item = trim($item); + if(!$item) continue; + $this->oldTemplatesAssigned[] = array('assigned_template_id' => 0, 'client_template_id' => $item, 'client_id' => $this->id); + } + unset($tpls); + } + } else { + $this->oldTemplatesAssigned = array(); + } + + $this->_template_additional = explode('/', $this->dataRecord['template_additional']); + $this->dataRecord['template_additional'] = ''; + + parent::onSubmit(); } function onShowEnd() { @@ -110,16 +130,44 @@ class page_action extends tform_actions { } $app->tpl->setVar('tpl_add_select',$option); - $sql = "SELECT template_additional FROM client WHERE client_id = " . $this->id; - $result = $app->db->queryOneRecord($sql); - $tplAdd = explode("/", $result['template_additional']); - $text = ''; - foreach($tplAdd as $item){ - if (trim($item) != ''){ - if ($text != '') $text .= ''; - $text .= '
  • ' . $tpl[$item]. '
  • '; - } - } + // check for new-style records + $result = $app->db->queryAllRecords('SELECT assigned_template_id, client_template_id FROM client_template_assigned WHERE client_id = ' . $this->id); + if($result && count($result) > 0) { + // new style + $items = array(); + $text = ''; + foreach($result as $item){ + if (trim($item['client_template_id']) != ''){ + if ($text != '') $text .= ''; + $text .= '
  • ' . $tpl[$item['client_template_id']]; + $text .= ''; + $tmp = new stdClass(); + $tmp->id = $item['assigned_template_id']; + $tmp->data = ''; + $app->plugin->raiseEvent('get_client_template_details', $tmp); + if($tmp->data != '') $text .= '
    ' . $tmp->data . ''; + + $text .= '
  • '; + $items[] = $item['assigned_template_id'] . ':' . $item['client_template_id']; + } + } + + $tmprec = $app->tform->getHTML(array('template_additional' => implode('/', $items)), $this->active_tab, 'EDIT'); + $app->tpl->setVar('template_additional', $tmprec['template_additional']); + unset($tmprec); + } else { + // old style + $sql = "SELECT template_additional FROM client WHERE client_id = " . $this->id; + $result = $app->db->queryOneRecord($sql); + $tplAdd = explode("/", $result['template_additional']); + $text = ''; + foreach($tplAdd as $item){ + if (trim($item) != ''){ + if ($text != '') $text .= ''; + $text .= '
  • ' . $tpl[$item]. '
  • '; + } + } + } $app->tpl->setVar('template_additional_list', $text); $app->tpl->setVar('app_module','client'); @@ -127,7 +175,7 @@ class page_action extends tform_actions { parent::onShowEnd(); } - + /* This function is called automatically right after the data was successful inserted in the database. @@ -180,6 +228,10 @@ class page_action extends tform_actions { $sql = "UPDATE client SET default_mailserver = $default_mailserver, default_webserver = $default_webserver, default_dnsserver = $default_dnsserver, default_slave_dnsserver = $default_dnsserver, default_dbserver = $default_dbserver WHERE client_id = ".$this->id; $app->db->query($sql); + if(isset($this->dataRecord['template_master'])) { + $app->uses('client_templates'); + $app->client_templates->update_client_templates($this->id, $this->_template_additional); + } parent::onAfterInsert(); } @@ -218,6 +270,99 @@ class page_action extends tform_actions { $app->db->query($sql); } + if(!isset($this->dataRecord['locked'])) $this->dataRecord['locked'] = 'n'; + if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["locked"] != $this->oldDataRecord['locked']) { + /** lock all the things like web, mail etc. - easy to extend */ + + // get tmp_data of client + $client_data = $app->db->queryOneRecord('SELECT `tmp_data` FROM `client` WHERE `client_id` = ' . $this->id); + + if($client_data['tmp_data'] == '') $tmp_data = array(); + else $tmp_data = unserialize($client_data['tmp_data']); + + if(!is_array($tmp_data)) $tmp_data = array(); + + // database tables with their primary key columns + $to_disable = array('cron' => 'id', + 'ftp_user' => 'ftp_user_id', + 'mail_domain' => 'domain_id', + 'mail_forwarding' => 'forwarding_id', + 'mail_get' => 'mailget_id', + 'openvz_vm' => 'vm_id', + 'shell_user' => 'shell_user_id', + 'webdav_user' => 'webdav_user_id', + 'web_database' => 'database_id', + 'web_domain' => 'domain_id', + 'web_folder' => 'web_folder_id', + 'web_folder_user' => 'web_folder_user_id' + ); + + $udata = $app->db->queryOneRecord('SELECT `userid` FROM `sys_user` WHERE `client_id` = ' . $this->id); + $gdata = $app->db->queryOneRecord('SELECT `groupid` FROM `sys_group` WHERE `client_id` = ' . $this->id); + $sys_groupid = $gdata['groupid']; + $sys_userid = $udata['userid']; + + $entries = array(); + if($this->dataRecord['locked'] == 'y') { + $prev_active = array(); + $prev_sysuser = array(); + foreach($to_disable as $current => $keycolumn) { + $prev_active[$current] = array(); + $prev_sysuser[$current] = array(); + + $entries = $app->db->queryAllRecords('SELECT `' . $keycolumn . '` as `id`, `sys_userid`, `active` FROM `' . $current . '` WHERE `sys_groupid` = ' . $sys_groupid); + foreach($entries as $item) { + + if($item['active'] != 'y') $prev_active[$current][$item['id']]['active'] = 'n'; + if($item['sys_userid'] != $sys_userid) $prev_sysuser[$current][$item['id']]['active'] = $item['sys_userid']; + // we don't have to store these if y, as everything without previous state gets enabled later + + $app->db->datalogUpdate($current, array('active' => 'n', 'sys_userid' => $_SESSION["s"]["user"]["userid"]), $keycolumn, $item['id']); + } + } + + $tmp_data['prev_active'] = $prev_active; + $tmp_data['prev_sys_userid'] = $prev_sysuser; + $app->db->query("UPDATE `client` SET `tmp_data` = '" . $app->db->quote(serialize($tmp_data)) . "' WHERE `client_id` = " . $this->id); + unset($prev_active); + unset($prev_sysuser); + } elseif($this->dataRecord['locked'] == 'n') { + foreach($to_disable as $current => $keycolumn) { + $entries = $app->db->queryAllRecords('SELECT `' . $keycolumn . '` as `id` FROM `' . $current . '` WHERE `sys_groupid` = ' . $sys_groupid); + foreach($entries as $item) { + $set_active = 'y'; + $set_sysuser = $sys_userid; + if(array_key_exists('prev_active', $tmp_data) == true + && array_key_exists($current, $tmp_data['prev_active']) == true + && array_key_exists($item['id'], $tmp_data['prev_active'][$current]) == true + && $tmp_data['prev_active'][$current][$item['id']] == 'n') $set_active = 'n'; + if(array_key_exists('prev_sysuser', $tmp_data) == true + && array_key_exists($current, $tmp_data['prev_sysuser']) == true + && array_key_exists($item['id'], $tmp_data['prev_sysuser'][$current]) == true + && $tmp_data['prev_sysuser'][$current][$item['id']] != $sys_userid) $set_sysuser = $tmp_data['prev_sysuser'][$current][$item['id']]; + + $app->db->datalogUpdate($current, array('active' => $set_active, 'sys_userid' => $set_sysuser), $keycolumn, $item['id']); + } + } + if(array_key_exists('prev_active', $tmp_data)) unset($tmp_data['prev_active']); + $app->db->query("UPDATE `client` SET `tmp_data` = '" . $app->db->quote(serialize($tmp_data)) . "' WHERE `client_id` = " . $this->id); + } + unset($tmp_data); + unset($entries); + unset($to_disable); + } + + if(!isset($this->dataRecord['canceled'])) $this->dataRecord['canceled'] = 'n'; + if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["canceled"] != $this->oldDataRecord['canceled']) { + if($this->dataRecord['canceled'] == 'y') { + $sql = "UPDATE sys_user SET active = '0' WHERE client_id = " . $this->id; + $app->db->query($sql); + } elseif($this->dataRecord['canceled'] == 'n') { + $sql = "UPDATE sys_user SET active = '1' WHERE client_id = " . $this->id; + $app->db->query($sql); + } + } + // language changed if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord['language']) && $this->dataRecord['language'] != '' && $this->oldDataRecord['language'] != $this->dataRecord['language']) { $language = $app->db->quote($this->dataRecord["language"]); @@ -236,6 +381,11 @@ class page_action extends tform_actions { $app->db->query($sql); } + if(isset($this->dataRecord['template_master'])) { + $app->uses('client_templates'); + $app->client_templates->update_client_templates($this->id, $this->_template_additional); + } + parent::onAfterUpdate(); } } diff --git a/interface/web/client/client_template_del.php b/interface/web/client/client_template_del.php index dbe8639c0..647ad7c54 100644 --- a/interface/web/client/client_template_del.php +++ b/interface/web/client/client_template_del.php @@ -53,6 +53,13 @@ class page_action extends tform_actions { function onBeforeDelete() { global $app; + // check new style + $rec = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client_template_assigned WHERE client_template_id = ".$this->id); + if($rec['number'] > 0) { + $app->error($app->tform->lng('template_del_aborted_txt')); + } + + // check old style $rec = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE template_master = ".$this->id." OR template_additional like '%/".$this->id."/%'"); if($rec['number'] > 0) { $app->error($app->tform->lng('template_del_aborted_txt')); diff --git a/interface/web/client/client_template_edit.php b/interface/web/client/client_template_edit.php index a683800ae..bb2fd944b 100644 --- a/interface/web/client/client_template_edit.php +++ b/interface/web/client/client_template_edit.php @@ -81,7 +81,7 @@ class page_action extends tform_actions { if ($this->dataRecord["template_type"] == 'm'){ $sql = "SELECT client_id FROM client WHERE template_master = " . $this->id; } else { - $sql = "SELECT client_id FROM client WHERE template_additional LIKE '%/" . $this->id . "/%' OR template_additional LIKE '" . $this->id . "/%' OR template_additional LIKE '%/" . $this->id . "'"; + $sql = "SELECT client_id FROM client WHERE template_additional LIKE '%/" . $this->id . "/%' OR template_additional LIKE '" . $this->id . "/%' OR template_additional LIKE '%/" . $this->id . "' UNION SELECT client_id FROM client_template_assigned WHERE client_template_id = " . $this->id; } $clients = $app->db->queryAllRecords($sql); if (is_array($clients)){ diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index b29a83161..036248095 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -100,6 +100,12 @@ $form["tabs"]['address'] = array ( 'cols' => '', 'searchable' => 2 ), + 'gender' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('' => '', 'm' => 'gender_m_txt', 'f' => 'gender_f_txt') + ), 'contact_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -454,6 +460,18 @@ $form["tabs"]['address'] = array ( 'cols' => '', 'searchable' => 2 ), + 'locked' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), + 'canceled' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), ################################## # END Datatable fields ################################## diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php index a6c4bd95c..c78ed8ea4 100644 --- a/interface/web/client/form/reseller.tform.php +++ b/interface/web/client/form/reseller.tform.php @@ -100,6 +100,12 @@ $form["tabs"]['address'] = array ( 'cols' => '', 'searchable' => 2 ), + 'gender' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => '', + 'value' => array('' => '', 'm' => 'gender_m_txt', 'f' => 'gender_f_txt') + ), 'contact_name' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -451,6 +457,18 @@ $form["tabs"]['address'] = array ( 'cols' => '', 'searchable' => 2 ), + 'locked' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), + 'canceled' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), ################################## # END Datatable fields ################################## diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng index 42aeea158..0c1d0f636 100644 --- a/interface/web/client/lib/lang/ar_client.lng +++ b/interface/web/client/lib/lang/ar_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/ar_client_del.lng b/interface/web/client/lib/lang/ar_client_del.lng index a826d64e1..0932e9568 100644 --- a/interface/web/client/lib/lang/ar_client_del.lng +++ b/interface/web/client/lib/lang/ar_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirm action'; $wb['delete_explanation'] = 'This action will delete the following number of records associated with this client'; $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/ar_client_template_list.lng b/interface/web/client/lib/lang/ar_client_template_list.lng index b93a5f97b..0840184a9 100644 --- a/interface/web/client/lib/lang/ar_client_template_list.lng +++ b/interface/web/client/lib/lang/ar_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Client-Templates'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Template name'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng index 91025a9ea..32c9bb1c7 100644 --- a/interface/web/client/lib/lang/ar_reseller.lng +++ b/interface/web/client/lib/lang/ar_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng index 7d8a12a94..229dace93 100644 --- a/interface/web/client/lib/lang/bg_client.lng +++ b/interface/web/client/lib/lang/bg_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/bg_client_del.lng b/interface/web/client/lib/lang/bg_client_del.lng index 8c5e36a73..54d4831d7 100644 --- a/interface/web/client/lib/lang/bg_client_del.lng +++ b/interface/web/client/lib/lang/bg_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Потвърди действието'; $wb['delete_explanation'] = 'This action will delete the following number of records associated with this client'; $wb['btn_save_txt'] = 'Изтрии клиента'; $wb['btn_cancel_txt'] = 'Отказ, без изтриване на клиента'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/bg_client_template_list.lng b/interface/web/client/lib/lang/bg_client_template_list.lng index b93a5f97b..0840184a9 100644 --- a/interface/web/client/lib/lang/bg_client_template_list.lng +++ b/interface/web/client/lib/lang/bg_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Client-Templates'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Template name'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng index 6f57b527f..857e4a85a 100644 --- a/interface/web/client/lib/lang/bg_reseller.lng +++ b/interface/web/client/lib/lang/bg_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng index 01b45f2dc..ae2c12280 100644 --- a/interface/web/client/lib/lang/br_client.lng +++ b/interface/web/client/lib/lang/br_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/br_client_del.lng b/interface/web/client/lib/lang/br_client_del.lng index 57788b035..3b879b05d 100644 --- a/interface/web/client/lib/lang/br_client_del.lng +++ b/interface/web/client/lib/lang/br_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirmar ação'; $wb['delete_explanation'] = 'Atenção: está ação ira remover todos os objetos associados ao cliente!'; $wb['btn_save_txt'] = 'Remover o cliente'; $wb['btn_cancel_txt'] = 'Cancelar sem remover o cliente'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/br_client_template_list.lng b/interface/web/client/lib/lang/br_client_template_list.lng index 231f7fdea..f5d9ee6d2 100644 --- a/interface/web/client/lib/lang/br_client_template_list.lng +++ b/interface/web/client/lib/lang/br_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Gabarito de Cliente '; $wb['template_type_txt'] = 'Tipo'; $wb['template_name_txt'] = 'Nome do Gabarito'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng index c565aec98..2fa536859 100644 --- a/interface/web/client/lib/lang/br_reseller.lng +++ b/interface/web/client/lib/lang/br_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng index eb1273fde..d5980d1bb 100644 --- a/interface/web/client/lib/lang/cz_client.lng +++ b/interface/web/client/lib/lang/cz_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/cz_client_del.lng b/interface/web/client/lib/lang/cz_client_del.lng index 4515806be..ca1a13f87 100644 --- a/interface/web/client/lib/lang/cz_client_del.lng +++ b/interface/web/client/lib/lang/cz_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Potvrdit akci'; $wb['delete_explanation'] = 'Tato akce smaže následující počet záznamů přidružených s tímto klientem'; $wb['btn_save_txt'] = 'Smazat klienta'; $wb['btn_cancel_txt'] = 'Zrušit bez smazání klienta'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/cz_client_template_list.lng b/interface/web/client/lib/lang/cz_client_template_list.lng index c3faae17c..675da9508 100644 --- a/interface/web/client/lib/lang/cz_client_template_list.lng +++ b/interface/web/client/lib/lang/cz_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Klientské šablony'; $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Název šablony'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng index 6e7fec6c0..07af2a4a3 100644 --- a/interface/web/client/lib/lang/cz_reseller.lng +++ b/interface/web/client/lib/lang/cz_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng index 57310d8e4..4aa8abdfc 100644 --- a/interface/web/client/lib/lang/de_client.lng +++ b/interface/web/client/lib/lang/de_client.lng @@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installationsassistent Limits'; $wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen'; $wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.'; $wb['default_slave_dnsserver_txt'] = 'Standard Secondary DNS Server'; +$wb['locked_txt'] = 'Gesperrt (deaktiviert alle Webs, etc.)'; +$wb['canceled_txt'] = 'Gekündigt (verhindert Kundenlogin)'; +$wb['gender_txt'] = 'Anrede'; +$wb['gender_m_txt'] = 'Herr'; +$wb['gender_f_txt'] = 'Frau'; ?> diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng index 072d648e5..9bc4d5378 100644 --- a/interface/web/client/lib/lang/de_reseller.lng +++ b/interface/web/client/lib/lang/de_reseller.lng @@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installationsassistent Limits'; $wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen'; $wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.'; $wb['default_slave_dnsserver_txt'] = 'Standard Secondary DNS Server'; +$wb['locked_txt'] = 'Gesperrt'; +$wb['canceled_txt'] = 'Gekündigt'; +$wb['gender_m_txt'] = 'Herr'; +$wb['gender_f_txt'] = 'Frau'; +$wb['gender_txt'] = 'Anrede'; ?> diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng index 6fdb9cfe9..ba5c6820b 100644 --- a/interface/web/client/lib/lang/el_client.lng +++ b/interface/web/client/lib/lang/el_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/el_client_del.lng b/interface/web/client/lib/lang/el_client_del.lng index ef21bfe21..60ebd617d 100644 --- a/interface/web/client/lib/lang/el_client_del.lng +++ b/interface/web/client/lib/lang/el_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Επιβεβαίωση ενέργειας'; $wb['delete_explanation'] = 'Η ενέργεια θα διαγράψει τις παρακάτω εγγραφές που αφορούν τον πελάτη'; $wb['btn_save_txt'] = 'Διαγραφή πελάτη'; $wb['btn_cancel_txt'] = 'Ακύρωση χωρίς διαγραφή πελάτη'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/el_client_template_list.lng b/interface/web/client/lib/lang/el_client_template_list.lng index 1ce866d23..175c2bfb8 100644 --- a/interface/web/client/lib/lang/el_client_template_list.lng +++ b/interface/web/client/lib/lang/el_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Πρότυπα Πελάτη'; $wb['template_type_txt'] = 'Τύπος'; $wb['template_name_txt'] = 'Όνομα Προτύπου'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng index 2438cdad8..c920ab6d2 100644 --- a/interface/web/client/lib/lang/el_reseller.lng +++ b/interface/web/client/lib/lang/el_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng index 69574d844..7c4ee2688 100644 --- a/interface/web/client/lib/lang/en_client.lng +++ b/interface/web/client/lib/lang/en_client.lng @@ -147,4 +147,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server'; +$wb['locked_txt'] = 'Locked (disables all webs etc.)'; +$wb['canceled_txt'] = 'Canceled (disables client login)'; +$wb['gender_txt'] = 'Title'; +$wb['gender_m_txt'] = 'Mr.'; +$wb['gender_f_txt'] = 'Ms.'; ?> diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng index d936ddbcc..4076dd5cb 100644 --- a/interface/web/client/lib/lang/en_reseller.lng +++ b/interface/web/client/lib/lang/en_reseller.lng @@ -145,4 +145,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; $wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server'; +$wb['locked_txt'] = 'Locked'; +$wb['canceled_txt'] = 'Canceled'; +$wb['gender_m_txt'] = 'Mr.'; +$wb['gender_f_txt'] = 'Ms.'; +$wb['gender_txt'] = 'Title'; ?> diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng index 751d8634f..d38b0b914 100644 --- a/interface/web/client/lib/lang/es_client.lng +++ b/interface/web/client/lib/lang/es_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/es_client_del.lng b/interface/web/client/lib/lang/es_client_del.lng index 8a3f580c4..a40194b49 100644 --- a/interface/web/client/lib/lang/es_client_del.lng +++ b/interface/web/client/lib/lang/es_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirmar acción'; $wb['delete_explanation'] = 'Esta acción eliminara los siguientes registros asociados a este cliente'; $wb['btn_save_txt'] = 'Eliminar cliente'; $wb['btn_cancel_txt'] = 'Cancelar sin eliminar cliente'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/es_client_template_list.lng b/interface/web/client/lib/lang/es_client_template_list.lng index 9bbe98d0f..66aefc783 100644 --- a/interface/web/client/lib/lang/es_client_template_list.lng +++ b/interface/web/client/lib/lang/es_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Plantillas de clientes'; $wb['template_type_txt'] = 'Tipo'; $wb['template_name_txt'] = 'Nombre'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng index 6b809baf0..ea07f2139 100644 --- a/interface/web/client/lib/lang/es_reseller.lng +++ b/interface/web/client/lib/lang/es_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng index c0b38cfa1..317c0244b 100755 --- a/interface/web/client/lib/lang/fi_client.lng +++ b/interface/web/client/lib/lang/fi_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/fi_client_del.lng b/interface/web/client/lib/lang/fi_client_del.lng index 6ddc1f14d..b87895b8c 100644 --- a/interface/web/client/lib/lang/fi_client_del.lng +++ b/interface/web/client/lib/lang/fi_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Vahvista toiminto'; $wb['delete_explanation'] = 'Tämä toiminto alla olevan määrän tämän asiakkaan tietueita'; $wb['btn_save_txt'] = 'Poista käyttäjä'; $wb['btn_cancel_txt'] = 'Keskeytä poistamatta asiakasta'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/fi_client_template_list.lng b/interface/web/client/lib/lang/fi_client_template_list.lng index 094c3c70c..b3f310f13 100755 --- a/interface/web/client/lib/lang/fi_client_template_list.lng +++ b/interface/web/client/lib/lang/fi_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Asiakasmallit'; $wb['template_type_txt'] = 'Tyyppi'; $wb['template_name_txt'] = 'Asiakasmallin nimi'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng index 25023da75..ed9ebd127 100644 --- a/interface/web/client/lib/lang/fi_reseller.lng +++ b/interface/web/client/lib/lang/fi_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng index 13e15eff1..84400ca1b 100644 --- a/interface/web/client/lib/lang/fr_client.lng +++ b/interface/web/client/lib/lang/fr_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/fr_client_del.lng b/interface/web/client/lib/lang/fr_client_del.lng index b4d7d5564..de7757ace 100644 --- a/interface/web/client/lib/lang/fr_client_del.lng +++ b/interface/web/client/lib/lang/fr_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirmer laction'; $wb['delete_explanation'] = 'Cette action va supprimer le nombre d\'enregistrements suivants associés avec le client'; $wb['btn_save_txt'] = 'Effacer le client'; $wb['btn_cancel_txt'] = 'Annuler sans effacer le client'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/fr_client_template_list.lng b/interface/web/client/lib/lang/fr_client_template_list.lng index 3405427d2..571b8705b 100644 --- a/interface/web/client/lib/lang/fr_client_template_list.lng +++ b/interface/web/client/lib/lang/fr_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Modèles de clients'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Nom du modèle'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng index 7162656ba..f00be206c 100644 --- a/interface/web/client/lib/lang/fr_reseller.lng +++ b/interface/web/client/lib/lang/fr_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng index 38126136e..ed38e03ef 100644 --- a/interface/web/client/lib/lang/hr_client.lng +++ b/interface/web/client/lib/lang/hr_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/hr_client_del.lng b/interface/web/client/lib/lang/hr_client_del.lng index 240f0c8e3..939cc59fb 100644 --- a/interface/web/client/lib/lang/hr_client_del.lng +++ b/interface/web/client/lib/lang/hr_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Potvrdi brisanje'; $wb['delete_explanation'] = 'Ukoliko potvrdite izbrisati će se svi zapisi povezani sa ovim klijentom'; $wb['btn_save_txt'] = 'Obriši klijenta'; $wb['btn_cancel_txt'] = 'Prekini i ne briši klijenta'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/hr_client_template_list.lng b/interface/web/client/lib/lang/hr_client_template_list.lng index d2c951813..cdc2f0006 100644 --- a/interface/web/client/lib/lang/hr_client_template_list.lng +++ b/interface/web/client/lib/lang/hr_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Predlošci za klijente'; $wb['template_type_txt'] = 'Vrsta'; $wb['template_name_txt'] = 'Naziv predloška'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng index 5674d6ac2..1de56c7db 100644 --- a/interface/web/client/lib/lang/hr_reseller.lng +++ b/interface/web/client/lib/lang/hr_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng index b393ee76d..7bcaccccb 100644 --- a/interface/web/client/lib/lang/hu_client.lng +++ b/interface/web/client/lib/lang/hu_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/hu_client_del.lng b/interface/web/client/lib/lang/hu_client_del.lng index a826d64e1..0932e9568 100644 --- a/interface/web/client/lib/lang/hu_client_del.lng +++ b/interface/web/client/lib/lang/hu_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirm action'; $wb['delete_explanation'] = 'This action will delete the following number of records associated with this client'; $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/hu_client_template_list.lng b/interface/web/client/lib/lang/hu_client_template_list.lng index 70e047fb7..316de6314 100644 --- a/interface/web/client/lib/lang/hu_client_template_list.lng +++ b/interface/web/client/lib/lang/hu_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Ügyfél-Sablonok'; $wb['template_type_txt'] = 'típus'; $wb['template_name_txt'] = 'Sablon neve'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng index 9c4509365..019bbc132 100644 --- a/interface/web/client/lib/lang/hu_reseller.lng +++ b/interface/web/client/lib/lang/hu_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng index 549493f79..339a31078 100644 --- a/interface/web/client/lib/lang/id_client.lng +++ b/interface/web/client/lib/lang/id_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/id_client_del.lng b/interface/web/client/lib/lang/id_client_del.lng index c8b58ac43..1adf18bd7 100644 --- a/interface/web/client/lib/lang/id_client_del.lng +++ b/interface/web/client/lib/lang/id_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Konfirmasi Tindakan'; $wb['delete_explanation'] = 'Tindakan ini akan menghapus sejumlah record yang terkait dengan klien ini'; $wb['btn_save_txt'] = 'Hapus Klien'; $wb['btn_cancel_txt'] = 'Batalkan Tanpa Menghapus Klien'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/id_client_template_list.lng b/interface/web/client/lib/lang/id_client_template_list.lng index b9ec9abb7..e0da97101 100644 --- a/interface/web/client/lib/lang/id_client_template_list.lng +++ b/interface/web/client/lib/lang/id_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Template Klien'; $wb['template_type_txt'] = 'Tipe'; $wb['template_name_txt'] = 'Nama Template'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng index f558d5147..3c49f0464 100644 --- a/interface/web/client/lib/lang/id_reseller.lng +++ b/interface/web/client/lib/lang/id_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng index a2e6f3ec5..bb6b4e9f9 100644 --- a/interface/web/client/lib/lang/it_client.lng +++ b/interface/web/client/lib/lang/it_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/it_client_del.lng b/interface/web/client/lib/lang/it_client_del.lng index df74987ab..49811c377 100644 --- a/interface/web/client/lib/lang/it_client_del.lng +++ b/interface/web/client/lib/lang/it_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Conferma operazione'; $wb['delete_explanation'] = 'Questa operazione cancellerà i seguenti record associati a questo cliente'; $wb['btn_save_txt'] = 'Cancella cliente'; $wb['btn_cancel_txt'] = 'Annulla senza cancellare il cliente'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/it_client_template_list.lng b/interface/web/client/lib/lang/it_client_template_list.lng index 03aa10e5c..d78faf877 100644 --- a/interface/web/client/lib/lang/it_client_template_list.lng +++ b/interface/web/client/lib/lang/it_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Modelli cliente'; $wb['template_type_txt'] = 'Tipo'; $wb['template_name_txt'] = 'Nome modello'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng index 91025a9ea..32c9bb1c7 100644 --- a/interface/web/client/lib/lang/it_reseller.lng +++ b/interface/web/client/lib/lang/it_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng index e11629fba..85e35b9a5 100644 --- a/interface/web/client/lib/lang/ja_client.lng +++ b/interface/web/client/lib/lang/ja_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/ja_client_del.lng b/interface/web/client/lib/lang/ja_client_del.lng index a826d64e1..0932e9568 100644 --- a/interface/web/client/lib/lang/ja_client_del.lng +++ b/interface/web/client/lib/lang/ja_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirm action'; $wb['delete_explanation'] = 'This action will delete the following number of records associated with this client'; $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/ja_client_template_list.lng b/interface/web/client/lib/lang/ja_client_template_list.lng index 05d3358c4..8adca01b1 100644 --- a/interface/web/client/lib/lang/ja_client_template_list.lng +++ b/interface/web/client/lib/lang/ja_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'クライアントテンプレート'; $wb['template_type_txt'] = '種別'; $wb['template_name_txt'] = 'テンプレート名'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng index 812dbf418..9f3251df9 100644 --- a/interface/web/client/lib/lang/ja_reseller.lng +++ b/interface/web/client/lib/lang/ja_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng index a86a88737..42bea6451 100644 --- a/interface/web/client/lib/lang/nl_client.lng +++ b/interface/web/client/lib/lang/nl_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/nl_client_del.lng b/interface/web/client/lib/lang/nl_client_del.lng index 00b7c2fd2..6a6b3b6ce 100644 --- a/interface/web/client/lib/lang/nl_client_del.lng +++ b/interface/web/client/lib/lang/nl_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Bevestig actie'; $wb['delete_explanation'] = 'Deze actie verwijderd het volgende aantal aan records die geassocieerd zijn met deze klant'; $wb['btn_save_txt'] = 'Verwijder de klant'; $wb['btn_cancel_txt'] = 'Annuleren zonder de klant te verwijderen'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/nl_client_template_list.lng b/interface/web/client/lib/lang/nl_client_template_list.lng index 228f19515..8bbe7a5a0 100644 --- a/interface/web/client/lib/lang/nl_client_template_list.lng +++ b/interface/web/client/lib/lang/nl_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Client-Templates'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Template naam'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng index bf3eedcf5..cf8715755 100644 --- a/interface/web/client/lib/lang/nl_reseller.lng +++ b/interface/web/client/lib/lang/nl_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng index 3607bff17..3f8ac0c75 100644 --- a/interface/web/client/lib/lang/pl_client.lng +++ b/interface/web/client/lib/lang/pl_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'Limity Instalatora APS'; $wb['limit_aps_txt'] = 'Maks. liczba instalacji APS'; $wb['limit_aps_error_notint'] = 'Limit instalacji APS musi być liczbą'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/pl_client_del.lng b/interface/web/client/lib/lang/pl_client_del.lng index 666e12a24..429c61b4c 100644 --- a/interface/web/client/lib/lang/pl_client_del.lng +++ b/interface/web/client/lib/lang/pl_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Potwierdź akcję'; $wb['delete_explanation'] = 'Ta akcja usunie następującą liczbę rekordów powiązanych z klientem'; $wb['btn_save_txt'] = 'Usuń klienta'; $wb['btn_cancel_txt'] = 'Anuluj bez usuwania klienta'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/pl_client_template_list.lng b/interface/web/client/lib/lang/pl_client_template_list.lng index 06a39761f..d6bd952d0 100644 --- a/interface/web/client/lib/lang/pl_client_template_list.lng +++ b/interface/web/client/lib/lang/pl_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Szablon klienta'; $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Nazwa szablonu'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng index 64bd81325..63e4c2389 100644 --- a/interface/web/client/lib/lang/pl_reseller.lng +++ b/interface/web/client/lib/lang/pl_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'Limit instalacji APS'; $wb['limit_aps_txt'] = 'Maks. liczba instancji APS'; $wb['limit_aps_error_notint'] = 'Limit instancji APS musi być liczbą'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng index 5798a0051..9e43b0fb3 100644 --- a/interface/web/client/lib/lang/pt_client.lng +++ b/interface/web/client/lib/lang/pt_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/pt_client_del.lng b/interface/web/client/lib/lang/pt_client_del.lng index ba2425d36..ef71fa91e 100644 --- a/interface/web/client/lib/lang/pt_client_del.lng +++ b/interface/web/client/lib/lang/pt_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirmar acção'; $wb['delete_explanation'] = 'Atenção: está acção ira remover todos os objectos associados ao cliente!'; $wb['btn_save_txt'] = 'Remover o cliente'; $wb['btn_cancel_txt'] = 'Cancelar sem remover o cliente'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/pt_client_template_list.lng b/interface/web/client/lib/lang/pt_client_template_list.lng index cd57886ba..d5f451111 100644 --- a/interface/web/client/lib/lang/pt_client_template_list.lng +++ b/interface/web/client/lib/lang/pt_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Templates de Cliente '; $wb['template_type_txt'] = 'Tipo'; $wb['template_name_txt'] = 'Nome da template'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng index 7e466004d..d2f34e968 100644 --- a/interface/web/client/lib/lang/pt_reseller.lng +++ b/interface/web/client/lib/lang/pt_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng index 5651460a1..50dd005d6 100644 --- a/interface/web/client/lib/lang/ro_client.lng +++ b/interface/web/client/lib/lang/ro_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/ro_client_del.lng b/interface/web/client/lib/lang/ro_client_del.lng index a826d64e1..0932e9568 100644 --- a/interface/web/client/lib/lang/ro_client_del.lng +++ b/interface/web/client/lib/lang/ro_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirm action'; $wb['delete_explanation'] = 'This action will delete the following number of records associated with this client'; $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/ro_client_template_list.lng b/interface/web/client/lib/lang/ro_client_template_list.lng index b19f5d43c..17fbf995b 100644 --- a/interface/web/client/lib/lang/ro_client_template_list.lng +++ b/interface/web/client/lib/lang/ro_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Template client'; $wb['template_type_txt'] = 'Tp'; $wb['template_name_txt'] = 'Nume Template'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng index 91025a9ea..32c9bb1c7 100644 --- a/interface/web/client/lib/lang/ro_reseller.lng +++ b/interface/web/client/lib/lang/ro_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng index b927418b8..1bd8e590a 100644 --- a/interface/web/client/lib/lang/ru_client.lng +++ b/interface/web/client/lib/lang/ru_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/ru_client_del.lng b/interface/web/client/lib/lang/ru_client_del.lng index 96a5774b8..8fae0aa44 100644 --- a/interface/web/client/lib/lang/ru_client_del.lng +++ b/interface/web/client/lib/lang/ru_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Подтверждение выполнения'; $wb['delete_explanation'] = 'Это действие удалит следующее число записей сопоставленных с этим клиентом'; $wb['btn_save_txt'] = 'Удалить клиента'; $wb['btn_cancel_txt'] = 'Отменить без удаления'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/ru_client_template_list.lng b/interface/web/client/lib/lang/ru_client_template_list.lng index b1a90d85f..dbdde0e06 100644 --- a/interface/web/client/lib/lang/ru_client_template_list.lng +++ b/interface/web/client/lib/lang/ru_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Шаблоны клиентов'; $wb['template_type_txt'] = 'Тип'; $wb['template_name_txt'] = 'Имя шаблона'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng index 3c24b30de..29975f2d1 100644 --- a/interface/web/client/lib/lang/ru_reseller.lng +++ b/interface/web/client/lib/lang/ru_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng index cbc9917b1..c2a31de36 100644 --- a/interface/web/client/lib/lang/se_client.lng +++ b/interface/web/client/lib/lang/se_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/se_client_del.lng b/interface/web/client/lib/lang/se_client_del.lng index a826d64e1..0932e9568 100644 --- a/interface/web/client/lib/lang/se_client_del.lng +++ b/interface/web/client/lib/lang/se_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirm action'; $wb['delete_explanation'] = 'This action will delete the following number of records associated with this client'; $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/se_client_template_list.lng b/interface/web/client/lib/lang/se_client_template_list.lng index b93a5f97b..0840184a9 100644 --- a/interface/web/client/lib/lang/se_client_template_list.lng +++ b/interface/web/client/lib/lang/se_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Client-Templates'; $wb['template_type_txt'] = 'Type'; $wb['template_name_txt'] = 'Template name'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng index 91025a9ea..32c9bb1c7 100644 --- a/interface/web/client/lib/lang/se_reseller.lng +++ b/interface/web/client/lib/lang/se_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng index 7dea61a9b..42e0f3ca0 100644 --- a/interface/web/client/lib/lang/sk_client.lng +++ b/interface/web/client/lib/lang/sk_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/sk_client_del.lng b/interface/web/client/lib/lang/sk_client_del.lng index a826d64e1..0932e9568 100644 --- a/interface/web/client/lib/lang/sk_client_del.lng +++ b/interface/web/client/lib/lang/sk_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'Confirm action'; $wb['delete_explanation'] = 'This action will delete the following number of records associated with this client'; $wb['btn_save_txt'] = 'Delete the client'; $wb['btn_cancel_txt'] = 'Cancel without deleting the client'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/sk_client_template_list.lng b/interface/web/client/lib/lang/sk_client_template_list.lng index b3b5de85e..ac25b8f3a 100644 --- a/interface/web/client/lib/lang/sk_client_template_list.lng +++ b/interface/web/client/lib/lang/sk_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Klient-Šablóny'; $wb['template_type_txt'] = 'Typ'; $wb['template_name_txt'] = 'Meno šablóny'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng index 792c13139..ab954301a 100644 --- a/interface/web/client/lib/lang/sk_reseller.lng +++ b/interface/web/client/lib/lang/sk_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng index 13bb60e21..e3c5c5348 100644 --- a/interface/web/client/lib/lang/tr_client.lng +++ b/interface/web/client/lib/lang/tr_client.lng @@ -143,4 +143,5 @@ $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any ma $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/lib/lang/tr_client_del.lng b/interface/web/client/lib/lang/tr_client_del.lng index 91c8198c5..62e7876b2 100644 --- a/interface/web/client/lib/lang/tr_client_del.lng +++ b/interface/web/client/lib/lang/tr_client_del.lng @@ -3,4 +3,5 @@ $wb['confirm_action_txt'] = 'İşlemi onaylayın'; $wb['delete_explanation'] = 'Bu işlem ilgili müşteri ile alakalı bütün kayıtları silecektir.'; $wb['btn_save_txt'] = 'Müşteriyi sil'; $wb['btn_cancel_txt'] = 'İptal et'; +$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?'; ?> diff --git a/interface/web/client/lib/lang/tr_client_template_list.lng b/interface/web/client/lib/lang/tr_client_template_list.lng index af5c1c74e..ea918615a 100644 --- a/interface/web/client/lib/lang/tr_client_template_list.lng +++ b/interface/web/client/lib/lang/tr_client_template_list.lng @@ -2,4 +2,5 @@ $wb['list_head_txt'] = 'Müşteri-Şablon'; $wb['template_type_txt'] = 'Çeşit'; $wb['template_name_txt'] = 'Şablon adı'; +$wb['template_id_txt'] = 'Template ID'; ?> diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng index ce687c509..f04edbf5c 100644 --- a/interface/web/client/lib/lang/tr_reseller.lng +++ b/interface/web/client/lib/lang/tr_reseller.lng @@ -142,4 +142,5 @@ $wb['bank_account_swift_txt'] = 'BIC / Swift'; $wb['aps_limits_txt'] = 'APS Installer Limits'; $wb['limit_aps_txt'] = 'Max. number of APS instances'; $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.'; +$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server'; ?> diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php index 1d02237da..ca2780cea 100644 --- a/interface/web/client/reseller_edit.php +++ b/interface/web/client/reseller_edit.php @@ -113,16 +113,30 @@ class page_action extends tform_actions { } $app->tpl->setVar('tpl_add_select',$option); - $sql = "SELECT template_additional FROM client WHERE client_id = " . $this->id; - $result = $app->db->queryOneRecord($sql); - $tplAdd = explode("/", $result['template_additional']); - $text = ''; - foreach($tplAdd as $item){ - if (trim($item) != ''){ - if ($text != '') $text .= '
    '; - $text .= $tpl[$item]; - } - } + // check for new-style records + $result = $app->db->queryAllRecords('SELECT assigned_template_id, client_template_id FROM client_template_assigned WHERE client_id = ' . $this->id); + if($result && count($result) > 0) { + // new style + $text = ''; + foreach($result as $item){ + if (trim($item['client_template_id']) != ''){ + if ($text != '') $text .= ''; + $text .= '
  • ' . $tpl[$item['client_template_id']]. '
  • '; + } + } + } else { + // old style + $sql = "SELECT template_additional FROM client WHERE client_id = " . $this->id; + $result = $app->db->queryOneRecord($sql); + $tplAdd = explode("/", $result['template_additional']); + $text = ''; + foreach($tplAdd as $item){ + if (trim($item) != ''){ + if ($text != '') $text .= ''; + $text .= '
  • ' . $tpl[$item]. '
  • '; + } + } + } $app->tpl->setVar('template_additional_list', $text); diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm index f9d96f0a3..018d1d5b6 100644 --- a/interface/web/client/templates/client_edit_address.htm +++ b/interface/web/client/templates/client_edit_address.htm @@ -9,6 +9,12 @@
    +
    + + +
    @@ -134,6 +140,18 @@
    +
    +

    {tmpl_var name='locked_txt'}

    +
    + {tmpl_var name='locked'} +
    +
    +
    +

    {tmpl_var name='canceled_txt'}

    +
    + {tmpl_var name='canceled'} +
    +
    {tmpl_var name='required_fields_txt'} diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm index 2e8100236..ba349b6bb 100644 --- a/interface/web/client/templates/client_edit_limits.htm +++ b/interface/web/client/templates/client_edit_limits.htm @@ -8,7 +8,6 @@
    {tmpl_var name="toolsarea_head_txt"}
    -
    @@ -309,6 +308,11 @@ function custom_template_selected() { return ($('#template_master').val() == '0' ? true : false); } +jQuery('#template_additional_list').find('li > a').click(function(e) { + e.preventDefault(); + delAdditionalTemplate($(this).parent().attr('rel')); +}); + jQuery('div.panel_client') .find('div.pnl_formsarea') .find('fieldset') diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm index 67eabbea2..4ffd78a83 100644 --- a/interface/web/client/templates/reseller_edit_address.htm +++ b/interface/web/client/templates/reseller_edit_address.htm @@ -9,6 +9,12 @@ +
    + + +
    @@ -134,6 +140,18 @@
    +
    +

    {tmpl_var name='locked_txt'}

    +
    + {tmpl_var name='locked'} +
    +
    +
    +

    {tmpl_var name='canceled_txt'}

    +
    + {tmpl_var name='canceled'} +
    +
    {tmpl_var name='required_fields_txt'} diff --git a/interface/web/dashboard/dashboard.php b/interface/web/dashboard/dashboard.php index dae00f816..0626758d0 100644 --- a/interface/web/dashboard/dashboard.php +++ b/interface/web/dashboard/dashboard.php @@ -157,8 +157,36 @@ while ($file = @readdir ($handle)) { /* Which dashlets in which column */ /******************************************************************************/ -$leftcol_dashlets = array('modules','invoices','quota','mailquota'); -$rightcol_dashlets = array('limits'); +$default_leftcol_dashlets = array('modules','invoices','quota','mailquota'); +$default_rightcol_dashlets = array('limits'); + +$app->uses('getconf'); +$dashlets_config = $app->getconf->get_global_config('misc'); +//* Client: If the logged in user is not admin and has no sub clients (no reseller) +if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) { + $role = 'client'; +//* Reseller: If the logged in user is not admin and has sub clients (is a reseller) +} elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) { + $role = 'reseller'; +//* Admin: If the logged in user is admin +} else { + $role = 'admin'; +} +$dashlets_config[$role.'_dashlets_left'] = trim($dashlets_config[$role.'_dashlets_left']); +$dashlets_config[$role.'_dashlets_right'] = trim($dashlets_config[$role.'_dashlets_right']); + +if($dashlets_config[$role.'_dashlets_left'] != ''){ + preg_match_all('@\[(.*?)\]@', $dashlets_config[$role.'_dashlets_left'], $matches); + $leftcol_dashlets = $matches[1]; +} else { + $leftcol_dashlets = $default_leftcol_dashlets; +} +if($dashlets_config[$role.'_dashlets_right'] != ''){ + preg_match_all('@\[(.*?)\]@', $dashlets_config[$role.'_dashlets_right'], $matches); + $rightcol_dashlets = $matches[1]; +} else { + $rightcol_dashlets = $default_rightcol_dashlets; +} /******************************************************************************/ diff --git a/interface/web/dashboard/dashlets/templates/mailquota.htm b/interface/web/dashboard/dashlets/templates/mailquota.htm index 25ee9d7e1..a239c48ba 100644 --- a/interface/web/dashboard/dashlets/templates/mailquota.htm +++ b/interface/web/dashboard/dashlets/templates/mailquota.htm @@ -1,6 +1,6 @@

    {tmpl_var name='mailquota_txt'}

    -
    +
    diff --git a/interface/web/dashboard/dashlets/templates/quota.htm b/interface/web/dashboard/dashlets/templates/quota.htm index 3cf40e73e..feb8e1f5b 100644 --- a/interface/web/dashboard/dashlets/templates/quota.htm +++ b/interface/web/dashboard/dashlets/templates/quota.htm @@ -1,6 +1,6 @@

    {tmpl_var name='quota_txt'}

    -
    +
    diff --git a/interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/ar_dashlet_quota.lng b/interface/web/dashboard/lib/lang/ar_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/ar_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/bg_dashlet_quota.lng b/interface/web/dashboard/lib/lang/bg_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/bg_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/br_dashlet_quota.lng b/interface/web/dashboard/lib/lang/br_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/br_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_quota.lng b/interface/web/dashboard/lib/lang/cz_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/cz_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng index 2fb3f6d44..921688119 100644 --- a/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng +++ b/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng @@ -1,8 +1,8 @@ \ No newline at end of file +$wb['mailquota_txt'] = 'Mailbox-Speicherplatz'; +$wb['email_txt'] = 'E-Mail-Adresse'; +$wb['name_txt'] = 'Name'; +$wb['used_txt'] = 'Verwendet'; +$wb['quota_txt'] = 'Verfügbar'; +$wb['no_email_accounts_txt'] = 'Kein E-Mail-Konto gefunden.'; +?> diff --git a/interface/web/dashboard/lib/lang/de_dashlet_quota.lng b/interface/web/dashboard/lib/lang/de_dashlet_quota.lng index 6050e105f..c694f1ecf 100644 --- a/interface/web/dashboard/lib/lang/de_dashlet_quota.lng +++ b/interface/web/dashboard/lib/lang/de_dashlet_quota.lng @@ -1,8 +1,8 @@ \ No newline at end of file +$wb['quota_txt'] = 'Webseiten-Speicherplatz'; +$wb['domain_txt'] = 'Domain / Webseite'; +$wb['used_txt'] = 'Verwendet'; +$wb['hard_txt'] = 'Hard Limit'; +$wb['soft_txt'] = 'Soft Limit'; +$wb['no_sites_txt'] = 'Keine Webseite gefunden.'; +?> diff --git a/interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/el_dashlet_quota.lng b/interface/web/dashboard/lib/lang/el_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/el_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/es_dashlet_quota.lng b/interface/web/dashboard/lib/lang/es_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/es_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/fi_dashlet_quota.lng b/interface/web/dashboard/lib/lang/fi_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/fi_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/fr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/fr_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/fr_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/hu_dashlet_quota.lng b/interface/web/dashboard/lib/lang/hu_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/hu_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/id_dashlet_quota.lng b/interface/web/dashboard/lib/lang/id_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/id_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/it_dashlet_quota.lng b/interface/web/dashboard/lib/lang/it_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/it_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/ja_dashlet_quota.lng b/interface/web/dashboard/lib/lang/ja_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/ja_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/nl_dashlet_quota.lng b/interface/web/dashboard/lib/lang/nl_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/nl_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/pl_dashlet_quota.lng b/interface/web/dashboard/lib/lang/pl_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/pl_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/pt_dashlet_quota.lng b/interface/web/dashboard/lib/lang/pt_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/pt_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/ro_dashlet_quota.lng b/interface/web/dashboard/lib/lang/ro_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/ro_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/ru_dashlet_quota.lng b/interface/web/dashboard/lib/lang/ru_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/ru_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/se_dashlet_quota.lng b/interface/web/dashboard/lib/lang/se_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/se_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/sk_dashlet_quota.lng b/interface/web/dashboard/lib/lang/sk_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/sk_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng new file mode 100644 index 000000000..2c2b6cd7a --- /dev/null +++ b/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng new file mode 100644 index 000000000..8b2e3d43d --- /dev/null +++ b/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/interface/web/dashboard/templates/dashboard.htm b/interface/web/dashboard/templates/dashboard.htm index 4d68fbd64..c8c314598 100644 --- a/interface/web/dashboard/templates/dashboard.htm +++ b/interface/web/dashboard/templates/dashboard.htm @@ -41,7 +41,7 @@ -
    +
    {tmpl_var name='content'} diff --git a/interface/web/dns/lib/lang/tr_dns_mx.lng b/interface/web/dns/lib/lang/tr_dns_mx.lng index 201f686ec..abdf7a40e 100644 --- a/interface/web/dns/lib/lang/tr_dns_mx.lng +++ b/interface/web/dns/lib/lang/tr_dns_mx.lng @@ -13,4 +13,5 @@ $wb['name_error_empty'] = 'Hostname boş.'; $wb['name_error_regex'] = 'Hostname yanlış formatta.'; $wb['data_error_empty'] = 'Mail sunucusu hostname boş'; $wb['data_error_regex'] = 'Mail sunucusu hostname geçersiz formatta'; +$wb['duplicate_mx_record_txt'] = 'Duplicate MX record.'; ?> diff --git a/interface/web/help/lib/lang/ar_support_message.lng b/interface/web/help/lib/lang/ar_support_message.lng index 59816c68d..bcc50ac46 100644 --- a/interface/web/help/lib/lang/ar_support_message.lng +++ b/interface/web/help/lib/lang/ar_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Subject'; $wb['message_txt'] = 'Message'; $wb['tstamp_txt'] = 'Timestamp'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/ar_support_message_list.lng b/interface/web/help/lib/lang/ar_support_message_list.lng index d6bc2aac3..719f4b04c 100644 --- a/interface/web/help/lib/lang/ar_support_message_list.lng +++ b/interface/web/help/lib/lang/ar_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Support Messages'; $wb['sender_id_txt'] = 'Sender'; $wb['subject_txt'] = 'Subject'; $wb['add_new_record_txt'] = 'Create new support message'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/bg_support_message.lng b/interface/web/help/lib/lang/bg_support_message.lng index 5c7c067d6..fb109257e 100644 --- a/interface/web/help/lib/lang/bg_support_message.lng +++ b/interface/web/help/lib/lang/bg_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Тема'; $wb['message_txt'] = 'Съобщение'; $wb['tstamp_txt'] = 'Дата'; $wb['reply_txt'] = 'Отговори'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/bg_support_message_list.lng b/interface/web/help/lib/lang/bg_support_message_list.lng index 1a5c21c50..8f313ebd3 100644 --- a/interface/web/help/lib/lang/bg_support_message_list.lng +++ b/interface/web/help/lib/lang/bg_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Съобщения до поддръжката'; $wb['sender_id_txt'] = 'Подател'; $wb['subject_txt'] = 'Тема'; $wb['add_new_record_txt'] = 'Ново съобщение'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/br_support_message.lng b/interface/web/help/lib/lang/br_support_message.lng index bce2c353a..84a60d899 100644 --- a/interface/web/help/lib/lang/br_support_message.lng +++ b/interface/web/help/lib/lang/br_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Assunto'; $wb['message_txt'] = 'Mensagem'; $wb['tstamp_txt'] = 'Dados'; $wb['reply_txt'] = 'Responder'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/br_support_message_list.lng b/interface/web/help/lib/lang/br_support_message_list.lng index d5ba95829..734dd281a 100644 --- a/interface/web/help/lib/lang/br_support_message_list.lng +++ b/interface/web/help/lib/lang/br_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Mensagens de Suporte'; $wb['sender_id_txt'] = 'De'; $wb['subject_txt'] = 'Assunto'; $wb['add_new_record_txt'] = 'Crie uma nova mensagem de suporte'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/cz_support_message.lng b/interface/web/help/lib/lang/cz_support_message.lng index 6c2728443..a6afd5adb 100644 --- a/interface/web/help/lib/lang/cz_support_message.lng +++ b/interface/web/help/lib/lang/cz_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Předmět'; $wb['message_txt'] = 'Zpráva'; $wb['tstamp_txt'] = 'Časové razítko'; $wb['reply_txt'] = 'Odpovědět'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/cz_support_message_list.lng b/interface/web/help/lib/lang/cz_support_message_list.lng index 8629a2f8a..c4c43eb87 100644 --- a/interface/web/help/lib/lang/cz_support_message_list.lng +++ b/interface/web/help/lib/lang/cz_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Zprávy pro podporu'; $wb['sender_id_txt'] = 'Odesílatel'; $wb['subject_txt'] = 'Předmět'; $wb['add_new_record_txt'] = 'Vytvořit zprávu pro podporu'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/el_support_message.lng b/interface/web/help/lib/lang/el_support_message.lng index 4810e084f..1c277cac8 100644 --- a/interface/web/help/lib/lang/el_support_message.lng +++ b/interface/web/help/lib/lang/el_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Θέμα'; $wb['message_txt'] = 'Μήνυμα'; $wb['tstamp_txt'] = 'Ημερομηνία/Ώρα'; $wb['reply_txt'] = 'Απάντηση'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/el_support_message_list.lng b/interface/web/help/lib/lang/el_support_message_list.lng index e8b2cf338..46ea54cbc 100644 --- a/interface/web/help/lib/lang/el_support_message_list.lng +++ b/interface/web/help/lib/lang/el_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Μηνύματα Υποστήριξης'; $wb['sender_id_txt'] = 'Αποστολέας'; $wb['subject_txt'] = 'Θέμα'; $wb['add_new_record_txt'] = 'Νέο μήνυμα υποστήριξης'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/es_support_message.lng b/interface/web/help/lib/lang/es_support_message.lng index 4f6c552a2..d0b8d0454 100644 --- a/interface/web/help/lib/lang/es_support_message.lng +++ b/interface/web/help/lib/lang/es_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Asunto'; $wb['message_txt'] = 'Mensaje'; $wb['tstamp_txt'] = 'Marca de tiempo'; $wb['reply_txt'] = 'Responder'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/es_support_message_list.lng b/interface/web/help/lib/lang/es_support_message_list.lng index 0ff8eb931..9db4de7e6 100644 --- a/interface/web/help/lib/lang/es_support_message_list.lng +++ b/interface/web/help/lib/lang/es_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Mensajes de soporte'; $wb['sender_id_txt'] = 'Remitente'; $wb['subject_txt'] = 'Asunto'; $wb['add_new_record_txt'] = 'Crear nuevo mensaje de soporte'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/fi_support_message.lng b/interface/web/help/lib/lang/fi_support_message.lng index 3995f2da7..0e0c517f2 100755 --- a/interface/web/help/lib/lang/fi_support_message.lng +++ b/interface/web/help/lib/lang/fi_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Tukipyynnön aihe'; $wb['message_txt'] = 'Tukipyyntö'; $wb['tstamp_txt'] = 'Päiväys'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/fi_support_message_list.lng b/interface/web/help/lib/lang/fi_support_message_list.lng index 4bbc1de79..0b50a2fac 100755 --- a/interface/web/help/lib/lang/fi_support_message_list.lng +++ b/interface/web/help/lib/lang/fi_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Tukipyynnöt'; $wb['sender_id_txt'] = 'Tukipyynnön lähettäjä'; $wb['subject_txt'] = 'Tukipyynnön aihe'; $wb['add_new_record_txt'] = 'Lähetä uusi tukipyyntö'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/fr_support_message.lng b/interface/web/help/lib/lang/fr_support_message.lng index 6d6434483..9f9dbe81a 100644 --- a/interface/web/help/lib/lang/fr_support_message.lng +++ b/interface/web/help/lib/lang/fr_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Sujet'; $wb['message_txt'] = 'Message'; $wb['tstamp_txt'] = 'Timestamp'; $wb['reply_txt'] = 'Répondre'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/fr_support_message_list.lng b/interface/web/help/lib/lang/fr_support_message_list.lng index ac63d3f6e..271f9dcf9 100644 --- a/interface/web/help/lib/lang/fr_support_message_list.lng +++ b/interface/web/help/lib/lang/fr_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Messages de support'; $wb['sender_id_txt'] = 'Expéditeur'; $wb['subject_txt'] = 'Sujet'; $wb['add_new_record_txt'] = 'Créer un nouveau message de support'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/hr_support_message.lng b/interface/web/help/lib/lang/hr_support_message.lng index 2576d1834..fca139b99 100644 --- a/interface/web/help/lib/lang/hr_support_message.lng +++ b/interface/web/help/lib/lang/hr_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Naslov poruke'; $wb['message_txt'] = 'Poruka'; $wb['tstamp_txt'] = 'Vrijeme'; $wb['reply_txt'] = 'Odgovori'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/hr_support_message_list.lng b/interface/web/help/lib/lang/hr_support_message_list.lng index 5c9dff1fa..e7aea1ab7 100644 --- a/interface/web/help/lib/lang/hr_support_message_list.lng +++ b/interface/web/help/lib/lang/hr_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Podrška'; $wb['sender_id_txt'] = 'Pošiljatelj'; $wb['subject_txt'] = 'Naslov poruke'; $wb['add_new_record_txt'] = 'Pošalji novu poruku'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/hu_support_message.lng b/interface/web/help/lib/lang/hu_support_message.lng index 6bc4aada9..b0d1d7176 100644 --- a/interface/web/help/lib/lang/hu_support_message.lng +++ b/interface/web/help/lib/lang/hu_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Tárgy'; $wb['message_txt'] = 'Üzenet'; $wb['tstamp_txt'] = 'Időbélyeg'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/hu_support_message_list.lng b/interface/web/help/lib/lang/hu_support_message_list.lng index 98f3051eb..f6152e5fe 100644 --- a/interface/web/help/lib/lang/hu_support_message_list.lng +++ b/interface/web/help/lib/lang/hu_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Support üzenetek'; $wb['sender_id_txt'] = 'Feladó'; $wb['subject_txt'] = 'Tárgy'; $wb['add_new_record_txt'] = 'Új support üzenet'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/id_support_message.lng b/interface/web/help/lib/lang/id_support_message.lng index 7471f7cd6..645f40eb7 100644 --- a/interface/web/help/lib/lang/id_support_message.lng +++ b/interface/web/help/lib/lang/id_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Judul'; $wb['message_txt'] = 'Pesan'; $wb['tstamp_txt'] = 'Tanda Waktu'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/id_support_message_list.lng b/interface/web/help/lib/lang/id_support_message_list.lng index 6c856cc9d..3df9cf74b 100644 --- a/interface/web/help/lib/lang/id_support_message_list.lng +++ b/interface/web/help/lib/lang/id_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Pesan Dukungan'; $wb['sender_id_txt'] = 'Pengirim'; $wb['subject_txt'] = 'Judul'; $wb['add_new_record_txt'] = 'Buat Pesan Dukungan Baru'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/it_support_message.lng b/interface/web/help/lib/lang/it_support_message.lng index 4ef99511d..a4712bda6 100644 --- a/interface/web/help/lib/lang/it_support_message.lng +++ b/interface/web/help/lib/lang/it_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Oggetto'; $wb['message_txt'] = 'Messaggio'; $wb['tstamp_txt'] = 'Timestamp'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/it_support_message_list.lng b/interface/web/help/lib/lang/it_support_message_list.lng index 95f3558a2..141647462 100644 --- a/interface/web/help/lib/lang/it_support_message_list.lng +++ b/interface/web/help/lib/lang/it_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Messaggi di supporto'; $wb['sender_id_txt'] = 'Mittente'; $wb['subject_txt'] = 'Oggetto'; $wb['add_new_record_txt'] = 'Crea nuovo messaggio di supporto'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/ja_support_message.lng b/interface/web/help/lib/lang/ja_support_message.lng index f2f106604..346497ea0 100644 --- a/interface/web/help/lib/lang/ja_support_message.lng +++ b/interface/web/help/lib/lang/ja_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = '件名'; $wb['message_txt'] = '本文'; $wb['tstamp_txt'] = '送信日時'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/ja_support_message_list.lng b/interface/web/help/lib/lang/ja_support_message_list.lng index 0a68de95b..94c121775 100644 --- a/interface/web/help/lib/lang/ja_support_message_list.lng +++ b/interface/web/help/lib/lang/ja_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'サポートメッセージ'; $wb['sender_id_txt'] = '送信者'; $wb['subject_txt'] = '件名'; $wb['add_new_record_txt'] = 'サポートメッセージを作成する'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/nl_support_message.lng b/interface/web/help/lib/lang/nl_support_message.lng index 436e3dec9..d88688714 100644 --- a/interface/web/help/lib/lang/nl_support_message.lng +++ b/interface/web/help/lib/lang/nl_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Onderwerp'; $wb['message_txt'] = 'Bericht'; $wb['tstamp_txt'] = 'Tijdstip'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/nl_support_message_list.lng b/interface/web/help/lib/lang/nl_support_message_list.lng index 12cd8989d..6e1871e74 100644 --- a/interface/web/help/lib/lang/nl_support_message_list.lng +++ b/interface/web/help/lib/lang/nl_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Support berichten'; $wb['sender_id_txt'] = 'Afzender'; $wb['subject_txt'] = 'Onderwerp'; $wb['add_new_record_txt'] = 'Maak een nieuw support bericht'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/pl_support_message.lng b/interface/web/help/lib/lang/pl_support_message.lng index 7482e3515..0584d30be 100644 --- a/interface/web/help/lib/lang/pl_support_message.lng +++ b/interface/web/help/lib/lang/pl_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Temat'; $wb['message_txt'] = 'Wiadomość'; $wb['tstamp_txt'] = 'Kalendarz'; $wb['reply_txt'] = 'Odpowiedź'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/pl_support_message_list.lng b/interface/web/help/lib/lang/pl_support_message_list.lng index bc3285694..78e1eaf9b 100644 --- a/interface/web/help/lib/lang/pl_support_message_list.lng +++ b/interface/web/help/lib/lang/pl_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Wiadomości'; $wb['sender_id_txt'] = 'Nadawca'; $wb['subject_txt'] = 'Temat'; $wb['add_new_record_txt'] = 'Wyślij wiadomość'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/pt_support_message.lng b/interface/web/help/lib/lang/pt_support_message.lng index 6f426ccbb..54428b77a 100644 --- a/interface/web/help/lib/lang/pt_support_message.lng +++ b/interface/web/help/lib/lang/pt_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Assunto'; $wb['message_txt'] = 'Mensagem'; $wb['tstamp_txt'] = 'Data'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/pt_support_message_list.lng b/interface/web/help/lib/lang/pt_support_message_list.lng index d5ba95829..734dd281a 100644 --- a/interface/web/help/lib/lang/pt_support_message_list.lng +++ b/interface/web/help/lib/lang/pt_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Mensagens de Suporte'; $wb['sender_id_txt'] = 'De'; $wb['subject_txt'] = 'Assunto'; $wb['add_new_record_txt'] = 'Crie uma nova mensagem de suporte'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/ro_support_message.lng b/interface/web/help/lib/lang/ro_support_message.lng index be5f50b2d..39c42da80 100644 --- a/interface/web/help/lib/lang/ro_support_message.lng +++ b/interface/web/help/lib/lang/ro_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Subiect'; $wb['message_txt'] = 'Mesaj'; $wb['tstamp_txt'] = 'Timestamp'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/ro_support_message_list.lng b/interface/web/help/lib/lang/ro_support_message_list.lng index 34aebb877..667f03d3c 100644 --- a/interface/web/help/lib/lang/ro_support_message_list.lng +++ b/interface/web/help/lib/lang/ro_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Mesaj catre Support '; $wb['sender_id_txt'] = 'Expeditor'; $wb['subject_txt'] = 'Subiect'; $wb['add_new_record_txt'] = 'Creatie mesaj nou catre support'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/ru_support_message.lng b/interface/web/help/lib/lang/ru_support_message.lng index ae0545bfb..3c2b2cdc3 100644 --- a/interface/web/help/lib/lang/ru_support_message.lng +++ b/interface/web/help/lib/lang/ru_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Тема'; $wb['message_txt'] = 'Сообщение'; $wb['tstamp_txt'] = 'Штамп времени'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/ru_support_message_list.lng b/interface/web/help/lib/lang/ru_support_message_list.lng index a25816b70..9293f1dce 100644 --- a/interface/web/help/lib/lang/ru_support_message_list.lng +++ b/interface/web/help/lib/lang/ru_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Сообщение службы поддержки'; $wb['sender_id_txt'] = 'От'; $wb['subject_txt'] = 'Тема'; $wb['add_new_record_txt'] = 'Создайте новое сообщение службы поддержки'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/se_support_message.lng b/interface/web/help/lib/lang/se_support_message.lng index 59816c68d..bcc50ac46 100644 --- a/interface/web/help/lib/lang/se_support_message.lng +++ b/interface/web/help/lib/lang/se_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Subject'; $wb['message_txt'] = 'Message'; $wb['tstamp_txt'] = 'Timestamp'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/se_support_message_list.lng b/interface/web/help/lib/lang/se_support_message_list.lng index d6bc2aac3..719f4b04c 100644 --- a/interface/web/help/lib/lang/se_support_message_list.lng +++ b/interface/web/help/lib/lang/se_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Support Messages'; $wb['sender_id_txt'] = 'Sender'; $wb['subject_txt'] = 'Subject'; $wb['add_new_record_txt'] = 'Create new support message'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/sk_support_message.lng b/interface/web/help/lib/lang/sk_support_message.lng index a7d3b31c3..4c8c5a9b1 100644 --- a/interface/web/help/lib/lang/sk_support_message.lng +++ b/interface/web/help/lib/lang/sk_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Predmet'; $wb['message_txt'] = 'Správa'; $wb['tstamp_txt'] = 'Časová pečiatka'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/sk_support_message_list.lng b/interface/web/help/lib/lang/sk_support_message_list.lng index 63007d8f0..afc4bdf9a 100644 --- a/interface/web/help/lib/lang/sk_support_message_list.lng +++ b/interface/web/help/lib/lang/sk_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Správy pre podporu'; $wb['sender_id_txt'] = 'Odosielateľ'; $wb['subject_txt'] = 'Predmet'; $wb['add_new_record_txt'] = 'Vytvoriť novú správu pre podporu'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/help/lib/lang/tr_support_message.lng b/interface/web/help/lib/lang/tr_support_message.lng index 59816c68d..bcc50ac46 100644 --- a/interface/web/help/lib/lang/tr_support_message.lng +++ b/interface/web/help/lib/lang/tr_support_message.lng @@ -5,4 +5,11 @@ $wb['subject_txt'] = 'Subject'; $wb['message_txt'] = 'Message'; $wb['tstamp_txt'] = 'Timestamp'; $wb['reply_txt'] = 'Reply'; +$wb['date_txt'] = 'Date'; +$wb['support_request_subject_txt'] = 'Support Request'; +$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.'; +$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.'; +$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.'; +$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.'; +$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.'; ?> diff --git a/interface/web/help/lib/lang/tr_support_message_list.lng b/interface/web/help/lib/lang/tr_support_message_list.lng index acdb363da..5728cb081 100644 --- a/interface/web/help/lib/lang/tr_support_message_list.lng +++ b/interface/web/help/lib/lang/tr_support_message_list.lng @@ -3,4 +3,5 @@ $wb['list_head_txt'] = 'Destek Mesajları'; $wb['sender_id_txt'] = 'Gönderici'; $wb['subject_txt'] = 'Konu'; $wb['add_new_record_txt'] = 'Yeni destek mesajı oluştur'; +$wb['date_txt'] = 'Date'; ?> diff --git a/interface/web/js/scrigo.js.php b/interface/web/js/scrigo.js.php index c78406a58..418b26bd4 100644 --- a/interface/web/js/scrigo.js.php +++ b/interface/web/js/scrigo.js.php @@ -642,40 +642,65 @@ function pass_contains(pass, check) { return false; } +var new_tpl_add_id = 0; function addAdditionalTemplate(){ - var tpl_add = document.getElementById('template_additional').value; - - var tpl_list = document.getElementById('template_additional_list').innerHTML; - var addTemplate = document.getElementById('tpl_add_select').value.split('|',2); - var addTplId = addTemplate[0]; - var addTplText = addTemplate[1]; + var tpl_add = jQuery('#template_additional').val(); + var addTemplate = jQuery('#tpl_add_select').val().split('|',2); + var addTplId = addTemplate[0]; + var addTplText = addTemplate[1]; if(addTplId > 0) { - var newVal = tpl_add + '/' + addTplId + '/'; - newVal = newVal.replace('//', '/'); - var newList = tpl_list + '
    ' + addTplText; - newList = newList.replace('

    ', '
    '); - document.getElementById('template_additional').value = newVal; - document.getElementById('template_additional_list').innerHTML = newList; - alert('additional template ' + addTplText + ' added to customer'); + var newVal = tpl_add.split('/'); + new_tpl_add_id += 1; + var delbtn = jQuery('').attr('class', 'button icons16 icoDelete').click(function(e) { + e.preventDefault(); + delAdditionalTemplate($(this).parent().attr('rel')); + }); + newVal[newVal.length] = 'n' + new_tpl_add_id + ':' + addTplId; + jQuery('
  • ' + addTplText + '
  • ').attr('rel', 'n' + new_tpl_add_id).append(delbtn).appendTo('#template_additional_list ul'); + jQuery('#template_additional').val(newVal.join('/')); + alert('additional template ' + addTplText + ' added to customer'); } else { - alert('no additional template selcted'); + alert('no additional template selcted'); } } -function delAdditionalTemplate(){ - var tpl_add = document.getElementById('template_additional').value; - if(tpl_add != '') { - var tpl_list = document.getElementById('template_additional_list').innerHTML; +function delAdditionalTemplate(tpl_id){ + var tpl_add = jQuery('#template_additional').val(); + if(tpl_id) { + // new style + var $el = jQuery('#template_additional_list ul').find('li[rel="' + tpl_id + '"]').eq(0); // only the first + var addTplText = $el.text(); + $el.remove(); + + var oldVal = tpl_add.split('/'); + var newVal = new Array(); + for(var i = 0; i < oldVal.length; i++) { + var tmp = oldVal[i].split(':', 2); + if(tmp.length == 2 && tmp[0] == tpl_id) continue; + newVal[newVal.length] = oldVal[i]; + } + jQuery('#template_additional').val(newVal.join('/')); + alert('additional template ' + addTplText + ' deleted from customer'); + } else if(tpl_add != '') { + // old style var addTemplate = document.getElementById('tpl_add_select').value.split('|',2); var addTplId = addTemplate[0]; var addTplText = addTemplate[1]; + + jQuery('#template_additional_list ul').find('li:not([rel])').each(function() { + var text = jQuery(this).text(); + if(text == addTplText) { + jQuery(this).remove(); + return false; + } + return this; + }); + var newVal = tpl_add; - newVal = newVal.replace(addTplId, ''); + var repl = new RegExp('(^|\/)' + addTplId + '(\/|$)'); + newVal = newVal.replace(repl, ''); newVal = newVal.replace('//', '/'); - var newList = tpl_list.replace(addTplText, ''); - newList = newList.replace('

    ', '
    '); - document.getElementById('template_additional').value = newVal; - document.getElementById('template_additional_list').innerHTML = newList; + jQuery('#template_additional').val(newVal); alert('additional template ' + addTplText + ' deleted from customer'); } else { alert('no additional template selcted'); diff --git a/interface/web/login/lib/lang/ar.lng b/interface/web/login/lib/lang/ar.lng index f7362b5be..ef17493e4 100644 --- a/interface/web/login/lib/lang/ar.lng +++ b/interface/web/login/lib/lang/ar.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/bg.lng b/interface/web/login/lib/lang/bg.lng index cb2795170..b0e353bb5 100644 --- a/interface/web/login/lib/lang/bg.lng +++ b/interface/web/login/lib/lang/bg.lng @@ -21,4 +21,5 @@ $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['error_maintenance_mode'] = 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/br.lng b/interface/web/login/lib/lang/br.lng index 0d2144769..f00af30c9 100644 --- a/interface/web/login/lib/lang/br.lng +++ b/interface/web/login/lib/lang/br.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/cz.lng b/interface/web/login/lib/lang/cz.lng index cf659346a..f789b21ff 100644 --- a/interface/web/login/lib/lang/cz.lng +++ b/interface/web/login/lib/lang/cz.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Resetování (obnova) hesla'; $wb['pw_button_txt'] = 'Znovu odeslat heslo'; $wb['email_txt'] = 'E-mail'; $wb['theme_not_compatible'] = 'Zvolené téma není kompatibilní s aktuální verzí ISPConfig. Zkontrolujte prosím, zda není nová verze tématu.
    Výchozí motiv byl aktivován automaticky.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/el.lng b/interface/web/login/lib/lang/el.lng index 12271aca2..00646c6db 100644 --- a/interface/web/login/lib/lang/el.lng +++ b/interface/web/login/lib/lang/el.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/es.lng b/interface/web/login/lib/lang/es.lng index d80bb7c88..e19e81dbf 100644 --- a/interface/web/login/lib/lang/es.lng +++ b/interface/web/login/lib/lang/es.lng @@ -21,4 +21,5 @@ $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['error_maintenance_mode'] = 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/fi.lng b/interface/web/login/lib/lang/fi.lng index 427f8de9d..c6bc2b89c 100755 --- a/interface/web/login/lib/lang/fi.lng +++ b/interface/web/login/lib/lang/fi.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/fr.lng b/interface/web/login/lib/lang/fr.lng index beb76a586..f71178c04 100644 --- a/interface/web/login/lib/lang/fr.lng +++ b/interface/web/login/lib/lang/fr.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/hr.lng b/interface/web/login/lib/lang/hr.lng index 7f84d6f62..2b0641463 100644 --- a/interface/web/login/lib/lang/hr.lng +++ b/interface/web/login/lib/lang/hr.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/hu.lng b/interface/web/login/lib/lang/hu.lng index 1dc8ef396..69c745278 100644 --- a/interface/web/login/lib/lang/hu.lng +++ b/interface/web/login/lib/lang/hu.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/id.lng b/interface/web/login/lib/lang/id.lng index 5e82059df..27c3857aa 100644 --- a/interface/web/login/lib/lang/id.lng +++ b/interface/web/login/lib/lang/id.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/it.lng b/interface/web/login/lib/lang/it.lng index c69cb52a8..05c7e35d1 100644 --- a/interface/web/login/lib/lang/it.lng +++ b/interface/web/login/lib/lang/it.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/ja.lng b/interface/web/login/lib/lang/ja.lng index 70ab27c26..959f67f7c 100644 --- a/interface/web/login/lib/lang/ja.lng +++ b/interface/web/login/lib/lang/ja.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/nl.lng b/interface/web/login/lib/lang/nl.lng index 59564e5c3..b203f7221 100644 --- a/interface/web/login/lib/lang/nl.lng +++ b/interface/web/login/lib/lang/nl.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/pl.lng b/interface/web/login/lib/lang/pl.lng index 29bd8b229..7fe9ae1f6 100644 --- a/interface/web/login/lib/lang/pl.lng +++ b/interface/web/login/lib/lang/pl.lng @@ -21,4 +21,5 @@ $wb['pw_button_txt'] = 'Prześlij hasło ponownie'; $wb['email_txt'] = 'E-mail'; $wb['error_maintenance_mode'] = 'Ta instalacja ISPConfig jest aktualnie w trakcje modernizacji. Wracamy niebawem - proszę o cierpliwość.'; $wb['theme_not_compatible'] = 'Wybrany temat nie jest kompatybilny z aktualną wersją ISPConfig. Proszę wybrać nową wersję tematu.
    Został aktywowany automatycznie domyślny temat.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/pt.lng b/interface/web/login/lib/lang/pt.lng index 6c5414c88..a5798e4be 100644 --- a/interface/web/login/lib/lang/pt.lng +++ b/interface/web/login/lib/lang/pt.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/ro.lng b/interface/web/login/lib/lang/ro.lng index 76b314a43..5588c3f5e 100644 --- a/interface/web/login/lib/lang/ro.lng +++ b/interface/web/login/lib/lang/ro.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/ru.lng b/interface/web/login/lib/lang/ru.lng index 866a95724..78a787e55 100644 --- a/interface/web/login/lib/lang/ru.lng +++ b/interface/web/login/lib/lang/ru.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/se.lng b/interface/web/login/lib/lang/se.lng index f7362b5be..ef17493e4 100644 --- a/interface/web/login/lib/lang/se.lng +++ b/interface/web/login/lib/lang/se.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/sk.lng b/interface/web/login/lib/lang/sk.lng index d1fc46d28..6e4bb87d4 100644 --- a/interface/web/login/lib/lang/sk.lng +++ b/interface/web/login/lib/lang/sk.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/login/lib/lang/tr.lng b/interface/web/login/lib/lang/tr.lng index 00f027ef5..46143b7ec 100644 --- a/interface/web/login/lib/lang/tr.lng +++ b/interface/web/login/lib/lang/tr.lng @@ -21,4 +21,5 @@ $wb['pw_reset_txt'] = 'Password reset'; $wb['pw_button_txt'] = 'Resend password'; $wb['email_txt'] = 'Email'; $wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.
    The default theme as been activated automatically.'; +$wb['back_txt'] = 'Back'; ?> diff --git a/interface/web/mail/lib/lang/ar_spamfilter_users.lng b/interface/web/mail/lib/lang/ar_spamfilter_users.lng index a93d94dba..3edc749e9 100644 --- a/interface/web/mail/lib/lang/ar_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ar_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Policy'; $wb['email_txt'] = 'Email (Pattern)'; $wb['fullname_txt'] = 'Name'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/ar_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ar_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/ar_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/ar_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/bg_spamfilter_users.lng b/interface/web/mail/lib/lang/bg_spamfilter_users.lng index a93d94dba..3edc749e9 100644 --- a/interface/web/mail/lib/lang/bg_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/bg_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Policy'; $wb['email_txt'] = 'Email (Pattern)'; $wb['fullname_txt'] = 'Name'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/bg_user_quota_stats_list.lng b/interface/web/mail/lib/lang/bg_user_quota_stats_list.lng index 48b7044ef..a77726622 100755 --- a/interface/web/mail/lib/lang/bg_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/bg_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Квота'; $wb['name_txt'] = 'Име'; $wb['email_txt'] = 'Емайл адрес'; $wb['used_txt'] = 'Използвано място'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/br_spamfilter_users.lng b/interface/web/mail/lib/lang/br_spamfilter_users.lng index 451500940..7bf85574f 100644 --- a/interface/web/mail/lib/lang/br_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/br_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Política'; $wb['email_txt'] = 'Correio (Padrão)'; $wb['fullname_txt'] = 'Nome'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/br_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/br_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/cz_spamfilter_users.lng b/interface/web/mail/lib/lang/cz_spamfilter_users.lng index 914304c58..4f5c0e867 100644 --- a/interface/web/mail/lib/lang/cz_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/cz_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Politika'; $wb['email_txt'] = 'Email (vzor)'; $wb['fullname_txt'] = 'Název'; $wb['local_txt'] = 'Lokální'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng b/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng index c8b73a9e8..f60e61651 100755 --- a/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Kvóta'; $wb['name_txt'] = 'Jméno'; $wb['email_txt'] = 'E-mailová adresa'; $wb['used_txt'] = 'Využité místo'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_get.lng b/interface/web/mail/lib/lang/de_mail_get.lng index b97265051..e6064caba 100644 --- a/interface/web/mail/lib/lang/de_mail_get.lng +++ b/interface/web/mail/lib/lang/de_mail_get.lng @@ -14,5 +14,5 @@ $wb['source_password_error_isempty'] = 'Passwort ist leer.'; $wb['destination_error_isemail'] = 'Kein Ziel gewählt.'; $wb['source_server_error_regex'] = 'POP3/IMAP Server ist kein gültiger Domainname.'; $wb['source_read_all_txt'] = 'Alle E-Mails abrufen (inkl. bereits gelesene E-Mails)'; -$wb['error_delete_read_all_combination'] = 'Unzulässige Kombination von Optionen. Sie können '; +$wb['error_delete_read_all_combination'] = 'Unzulässige Kombination von Optionen. Sie können "E-Mails nach Empfang löschen" = nein nicht zusammen mit "Alle E-Mails abrufen (inkl. bereits gelesene E-Mails)" = ja benutzen.'; ?> diff --git a/interface/web/mail/lib/lang/el_spamfilter_users.lng b/interface/web/mail/lib/lang/el_spamfilter_users.lng index 39a927363..0a896b1b0 100644 --- a/interface/web/mail/lib/lang/el_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/el_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Πολιτική'; $wb['email_txt'] = 'Email (Μοτίβο)'; $wb['fullname_txt'] = 'Όνομα'; $wb['local_txt'] = 'Τοπικός'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/el_user_quota_stats_list.lng b/interface/web/mail/lib/lang/el_user_quota_stats_list.lng index 2dfdf3af8..8c4040703 100755 --- a/interface/web/mail/lib/lang/el_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/el_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Όριο'; $wb['name_txt'] = 'Όνομα'; $wb['email_txt'] = 'Διεύθυνση Email'; $wb['used_txt'] = 'Χώρος σε χρήση'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/es_spamfilter_users.lng b/interface/web/mail/lib/lang/es_spamfilter_users.lng index 361c2fe1c..0078870a1 100644 --- a/interface/web/mail/lib/lang/es_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/es_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'ID Política'; $wb['email_txt'] = 'Correo'; $wb['fullname_txt'] = 'Nombre'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/es_user_quota_stats_list.lng b/interface/web/mail/lib/lang/es_user_quota_stats_list.lng index f06942483..75ce5a11e 100755 --- a/interface/web/mail/lib/lang/es_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/es_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Cuota'; $wb['name_txt'] = 'Nombre'; $wb['email_txt'] = 'Correo'; $wb['used_txt'] = 'Usado'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/fi_spamfilter_users.lng b/interface/web/mail/lib/lang/fi_spamfilter_users.lng index d960f5c82..d8a4a3f5a 100755 --- a/interface/web/mail/lib/lang/fi_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/fi_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Kohtelutapa'; $wb['email_txt'] = 'Sähköpostiosoite (RegExp)'; $wb['fullname_txt'] = 'Koko nimi'; $wb['local_txt'] = 'Paikallinen'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/fi_user_quota_stats_list.lng b/interface/web/mail/lib/lang/fi_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/fi_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/fi_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/fr_spamfilter_users.lng b/interface/web/mail/lib/lang/fr_spamfilter_users.lng index e88d33e39..07d06461c 100644 --- a/interface/web/mail/lib/lang/fr_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/fr_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Politique'; $wb['email_txt'] = 'Email (Schéma)'; $wb['fullname_txt'] = 'Nom'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/fr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/fr_user_quota_stats_list.lng index 258d73f23..06931edb1 100755 --- a/interface/web/mail/lib/lang/fr_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/fr_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Nom'; $wb['email_txt'] = 'Adresse email'; $wb['used_txt'] = 'Espace utilisé'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/hr_spamfilter_users.lng b/interface/web/mail/lib/lang/hr_spamfilter_users.lng index ff988f5d7..ddd28568c 100644 --- a/interface/web/mail/lib/lang/hr_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/hr_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Pravilo'; $wb['email_txt'] = 'Email (Pattern)'; $wb['fullname_txt'] = 'Name'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/hr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/hr_user_quota_stats_list.lng index 15cd7d1d3..a41b1a94c 100644 --- a/interface/web/mail/lib/lang/hr_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/hr_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Kvota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/hu_spamfilter_users.lng b/interface/web/mail/lib/lang/hu_spamfilter_users.lng index 4fd29bbd5..2800c3d94 100644 --- a/interface/web/mail/lib/lang/hu_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/hu_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Szabály'; $wb['email_txt'] = 'Email (Minta)'; $wb['fullname_txt'] = 'Név'; $wb['local_txt'] = 'Helyi'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/hu_user_quota_stats_list.lng b/interface/web/mail/lib/lang/hu_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/hu_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/hu_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/id_spamfilter_users.lng b/interface/web/mail/lib/lang/id_spamfilter_users.lng index 9b2868fe1..c316090e4 100644 --- a/interface/web/mail/lib/lang/id_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/id_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Kebijakan'; $wb['email_txt'] = 'Email (Pola)'; $wb['fullname_txt'] = 'Nama'; $wb['local_txt'] = 'Lokal'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/id_user_quota_stats_list.lng b/interface/web/mail/lib/lang/id_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/id_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/id_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/it_spamfilter_users.lng b/interface/web/mail/lib/lang/it_spamfilter_users.lng index a93d94dba..3edc749e9 100644 --- a/interface/web/mail/lib/lang/it_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/it_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Policy'; $wb['email_txt'] = 'Email (Pattern)'; $wb['fullname_txt'] = 'Name'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/it_user_quota_stats_list.lng b/interface/web/mail/lib/lang/it_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/it_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/it_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/ja_spamfilter_users.lng b/interface/web/mail/lib/lang/ja_spamfilter_users.lng index 815e723c2..9c3155851 100644 --- a/interface/web/mail/lib/lang/ja_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ja_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'ポリシー'; $wb['email_txt'] = 'メールアドレス(パターン)'; $wb['fullname_txt'] = 'Name'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/ja_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ja_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/ja_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/ja_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/nl_spamfilter_users.lng b/interface/web/mail/lib/lang/nl_spamfilter_users.lng index a6f4ab71a..3d3227951 100644 --- a/interface/web/mail/lib/lang/nl_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/nl_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Policy'; $wb['email_txt'] = 'E-mail (Patroon)'; $wb['fullname_txt'] = 'Naam'; $wb['local_txt'] = 'Locaal'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/nl_user_quota_stats_list.lng b/interface/web/mail/lib/lang/nl_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/nl_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/nl_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/pl_spamfilter_users.lng b/interface/web/mail/lib/lang/pl_spamfilter_users.lng index 656c29ea1..ef0ebbec0 100644 --- a/interface/web/mail/lib/lang/pl_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/pl_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Polityka'; $wb['email_txt'] = 'E-mail (wzór)'; $wb['fullname_txt'] = 'Nazwa'; $wb['local_txt'] = 'Lokalne'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/pl_user_quota_stats_list.lng b/interface/web/mail/lib/lang/pl_user_quota_stats_list.lng index 2b33b1040..14b26b8c7 100755 --- a/interface/web/mail/lib/lang/pl_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/pl_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Limit'; $wb['name_txt'] = 'Nazwa'; $wb['email_txt'] = 'Adres e-mail'; $wb['used_txt'] = 'Użycie dysku'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/pt_spamfilter_users.lng b/interface/web/mail/lib/lang/pt_spamfilter_users.lng index 451500940..7bf85574f 100644 --- a/interface/web/mail/lib/lang/pt_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/pt_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Política'; $wb['email_txt'] = 'Correio (Padrão)'; $wb['fullname_txt'] = 'Nome'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/pt_user_quota_stats_list.lng b/interface/web/mail/lib/lang/pt_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/pt_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/pt_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/ro_spamfilter_users.lng b/interface/web/mail/lib/lang/ro_spamfilter_users.lng index d07cd4987..a506428cb 100644 --- a/interface/web/mail/lib/lang/ro_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ro_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Policy'; $wb['email_txt'] = 'Email (Pattern)'; $wb['fullname_txt'] = 'Nume'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/ro_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ro_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/ro_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/ro_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/ru_spamfilter_users.lng b/interface/web/mail/lib/lang/ru_spamfilter_users.lng index 6c6665813..f5a1dc485 100644 --- a/interface/web/mail/lib/lang/ru_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/ru_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Политика'; $wb['email_txt'] = 'Email (Шаблон)'; $wb['fullname_txt'] = 'Имя'; $wb['local_txt'] = 'Локальный'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/ru_user_quota_stats_list.lng b/interface/web/mail/lib/lang/ru_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/ru_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/ru_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/se_spamfilter_users.lng b/interface/web/mail/lib/lang/se_spamfilter_users.lng index a93d94dba..3edc749e9 100644 --- a/interface/web/mail/lib/lang/se_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/se_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Policy'; $wb['email_txt'] = 'Email (Pattern)'; $wb['fullname_txt'] = 'Name'; $wb['local_txt'] = 'Local'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/se_user_quota_stats_list.lng b/interface/web/mail/lib/lang/se_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/se_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/se_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/sk_spamfilter_users.lng b/interface/web/mail/lib/lang/sk_spamfilter_users.lng index f193d421c..47aba5e49 100644 --- a/interface/web/mail/lib/lang/sk_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/sk_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Politika'; $wb['email_txt'] = 'E-mail (vzor)'; $wb['fullname_txt'] = 'Meno'; $wb['local_txt'] = 'Miestny'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/sk_user_quota_stats_list.lng b/interface/web/mail/lib/lang/sk_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/sk_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/sk_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/lib/lang/tr_spamfilter_users.lng b/interface/web/mail/lib/lang/tr_spamfilter_users.lng index b1e3ff81b..2efbed4ea 100644 --- a/interface/web/mail/lib/lang/tr_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/tr_spamfilter_users.lng @@ -5,4 +5,6 @@ $wb['policy_id_txt'] = 'Kural'; $wb['email_txt'] = 'Email (Desen)'; $wb['fullname_txt'] = 'İsim'; $wb['local_txt'] = 'Yerel'; +$wb['email_error_notempty'] = 'The email address must not be empty.'; +$wb['fullname_error_notempty'] = 'The name must not be empty.'; ?> diff --git a/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng b/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng index 95fff21ab..394e97c5c 100755 --- a/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng +++ b/interface/web/mail/lib/lang/tr_user_quota_stats_list.lng @@ -4,4 +4,5 @@ $wb['quota_txt'] = 'Quota'; $wb['name_txt'] = 'Name'; $wb['email_txt'] = 'Email Address'; $wb['used_txt'] = 'Used space'; +$wb['percentage_txt'] = 'Used %'; ?> diff --git a/interface/web/mail/mail_alias_edit.php b/interface/web/mail/mail_alias_edit.php index b7219d71c..bb96a7e3a 100644 --- a/interface/web/mail/mail_alias_edit.php +++ b/interface/web/mail/mail_alias_edit.php @@ -98,6 +98,12 @@ class page_action extends tform_actions { $domain = $app->db->queryOneRecord("SELECT server_id, domain FROM mail_domain WHERE domain = '".$app->db->quote($app->functions->idn_encode($_POST["email_domain"]))."' AND ".$app->tform->getAuthSQL('r')); if($domain["domain"] != $app->functions->idn_encode($_POST["email_domain"])) $app->tform->errorMessage .= $app->tform->wordbook["no_domain_perm"]; + //* Check if destination email belongs to user + if(isset($_POST["destination"])) { + $email = $app->db->queryOneRecord("SELECT email FROM mail_user WHERE email = '".$app->db->quote($app->functions->idn_encode($_POST["destination"]))."' AND ".$app->tform->getAuthSQL('r')); + if($email["email"] != $app->functions->idn_encode($_POST["destination"])) $app->tform->errorMessage .= $app->tform->lng("no_destination_perm"); + } + // Check the client limits, if user is not the admin if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin // Get the limits of the client diff --git a/interface/web/mail/mail_get_edit.php b/interface/web/mail/mail_get_edit.php index 41434c05e..cd7741b65 100644 --- a/interface/web/mail/mail_get_edit.php +++ b/interface/web/mail/mail_get_edit.php @@ -69,6 +69,12 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; + //* Check if destination email belongs to user + if(isset($_POST["destination"])) { + $email = $app->db->queryOneRecord("SELECT email FROM mail_user WHERE email = '".$app->db->quote($app->functions->idn_encode($_POST["destination"]))."' AND ".$app->tform->getAuthSQL('r')); + if($email["email"] != $app->functions->idn_encode($_POST["destination"])) $app->tform->errorMessage .= $app->tform->lng("no_destination_perm"); + } + // Check the client limits, if user is not the admin if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin // Get the limits of the client diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index ca973c56b..da3f99cb4 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -166,7 +166,7 @@ class page_action extends tform_actions { } // Check the quota and adjust - if(isset($_POST["quota"]) && $client["limit_mailquota"] >= 0) { + if(isset($_POST["quota"]) && $client["limit_mailquota"] >= 0 && $app->functions->intval($this->dataRecord["quota"]) * 1024 * 1024 != $this->oldDataRecord['quota']) { $tmp = $app->db->queryOneRecord("SELECT sum(quota) as mailquota FROM mail_user WHERE mailuser_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u')); $mailquota = $tmp["mailquota"] / 1024 / 1024; $new_mailbox_quota = $app->functions->intval($this->dataRecord["quota"]); diff --git a/interface/web/monitor/lib/lang/ar.lng b/interface/web/monitor/lib/lang/ar.lng index 01a79635a..150729e46 100644 --- a/interface/web/monitor/lib/lang/ar.lng +++ b/interface/web/monitor/lib/lang/ar.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/bg.lng b/interface/web/monitor/lib/lang/bg.lng index 87df3554a..80dee6c74 100644 --- a/interface/web/monitor/lib/lang/bg.lng +++ b/interface/web/monitor/lib/lang/bg.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Покажи fail2ban-Log'; $wb['Show IPTables'] = 'Покажи IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Покажи OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/br.lng b/interface/web/monitor/lib/lang/br.lng index d3f3d3079..ff38df232 100644 --- a/interface/web/monitor/lib/lang/br.lng +++ b/interface/web/monitor/lib/lang/br.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/cz.lng b/interface/web/monitor/lib/lang/cz.lng index 36647b72a..2379533c0 100644 --- a/interface/web/monitor/lib/lang/cz.lng +++ b/interface/web/monitor/lib/lang/cz.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Pravidla'; $wb['Show fail2ban-Log'] = 'Zobrazit Fail2Ban Log'; $wb['Show IPTables'] = 'Zobrazit IPTables pravidla'; $wb['Show OpenVz VE BeanCounter'] = 'Ukázat OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/el.lng b/interface/web/monitor/lib/lang/el.lng index 88e7f126a..d840b6bb6 100644 --- a/interface/web/monitor/lib/lang/el.lng +++ b/interface/web/monitor/lib/lang/el.lng @@ -146,4 +146,10 @@ $wb['Show fail2ban-Log'] = 'Εμφάνιση fail2ban-Log'; $wb['Show IPTables'] = 'Εμφάνιση IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; $wb['monitor_serverstate_raidresync_txt'] = 'Your RAID is in RESYNC mode'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng index 64c6cd7ad..020cf4d2d 100644 --- a/interface/web/monitor/lib/lang/es.lng +++ b/interface/web/monitor/lib/lang/es.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'Reglas de IPTables'; $wb['Show fail2ban-Log'] = 'Mostrar el registro de Fail2ban'; $wb['Show IPTables'] = 'Mostrar IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Mostrar OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/fi.lng b/interface/web/monitor/lib/lang/fi.lng index 4036b3c5c..5d3e4d14c 100755 --- a/interface/web/monitor/lib/lang/fi.lng +++ b/interface/web/monitor/lib/lang/fi.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/fr.lng b/interface/web/monitor/lib/lang/fr.lng index f10766953..70bb47be6 100644 --- a/interface/web/monitor/lib/lang/fr.lng +++ b/interface/web/monitor/lib/lang/fr.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'Règles IPTables'; $wb['monitor_title_beancounter_txt'] = 'Compteur OpenVz VE'; $wb['monitor_updates_nosupport_txt'] = 'Votre distribution nest pas supportée par le moniteur'; $wb['monitor_beancounter_nosupport_txt'] = 'Ce serveur n\'est pas un VE OpenVz et n\'a pas d\'information de compteur'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/hr.lng b/interface/web/monitor/lib/lang/hr.lng index b14129258..da1a09dc6 100644 --- a/interface/web/monitor/lib/lang/hr.lng +++ b/interface/web/monitor/lib/lang/hr.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables zaštita'; $wb['Show fail2ban-Log'] = 'Prikaži Fail2Ban log'; $wb['Show IPTables'] = 'Prikaži IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Prikaži OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/hu.lng b/interface/web/monitor/lib/lang/hu.lng index b16d6fcd2..833b4704f 100644 --- a/interface/web/monitor/lib/lang/hu.lng +++ b/interface/web/monitor/lib/lang/hu.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/id.lng b/interface/web/monitor/lib/lang/id.lng index e0871f3b1..e2a0286ac 100644 --- a/interface/web/monitor/lib/lang/id.lng +++ b/interface/web/monitor/lib/lang/id.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/it.lng b/interface/web/monitor/lib/lang/it.lng index 8c7b8be0d..7b5de123b 100644 --- a/interface/web/monitor/lib/lang/it.lng +++ b/interface/web/monitor/lib/lang/it.lng @@ -146,4 +146,10 @@ $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/ja.lng b/interface/web/monitor/lib/lang/ja.lng index 0d3340755..57e5374de 100644 --- a/interface/web/monitor/lib/lang/ja.lng +++ b/interface/web/monitor/lib/lang/ja.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/nl.lng b/interface/web/monitor/lib/lang/nl.lng index e4bfb03f2..103c20264 100644 --- a/interface/web/monitor/lib/lang/nl.lng +++ b/interface/web/monitor/lib/lang/nl.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/pl.lng b/interface/web/monitor/lib/lang/pl.lng index f1ce82191..870e34829 100644 --- a/interface/web/monitor/lib/lang/pl.lng +++ b/interface/web/monitor/lib/lang/pl.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'Reguły IPTables'; $wb['Show fail2ban-Log'] = 'Pokaż log fail2ban'; $wb['Show IPTables'] = 'Pokaż reguły IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/pt.lng b/interface/web/monitor/lib/lang/pt.lng index 08d6d5940..42f21a150 100644 --- a/interface/web/monitor/lib/lang/pt.lng +++ b/interface/web/monitor/lib/lang/pt.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/ro.lng b/interface/web/monitor/lib/lang/ro.lng index 859c4166e..167c2f988 100644 --- a/interface/web/monitor/lib/lang/ro.lng +++ b/interface/web/monitor/lib/lang/ro.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/ru.lng b/interface/web/monitor/lib/lang/ru.lng index c1b310f89..42173f5c1 100644 --- a/interface/web/monitor/lib/lang/ru.lng +++ b/interface/web/monitor/lib/lang/ru.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/se.lng b/interface/web/monitor/lib/lang/se.lng index 5385f76d4..65c57ae31 100644 --- a/interface/web/monitor/lib/lang/se.lng +++ b/interface/web/monitor/lib/lang/se.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/sk.lng b/interface/web/monitor/lib/lang/sk.lng index 9fed474a3..a5ea26cd7 100644 --- a/interface/web/monitor/lib/lang/sk.lng +++ b/interface/web/monitor/lib/lang/sk.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/monitor/lib/lang/tr.lng b/interface/web/monitor/lib/lang/tr.lng index aaea02255..d15ef4e8a 100644 --- a/interface/web/monitor/lib/lang/tr.lng +++ b/interface/web/monitor/lib/lang/tr.lng @@ -146,4 +146,10 @@ $wb['monitor_title_iptables_txt'] = 'IPTables Rules'; $wb['Show fail2ban-Log'] = 'Show fail2ban-Log'; $wb['Show IPTables'] = 'Show IPTables'; $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter'; +$wb['Show Monit'] = 'Show Monit'; +$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.'; +$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.'; +$wb['Show Munin'] = 'Show Munin'; +$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.'; +$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.'; ?> diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php index 334738acf..9da45131d 100644 --- a/interface/web/sites/ajax_get_json.php +++ b/interface/web/sites/ajax_get_json.php @@ -34,11 +34,12 @@ require_once('../../lib/app.inc.php'); //* Check permissions for module $app->auth->check_module_permissions('sites'); -$app->uses('getconf'); +$app->uses('getconf,tform'); $server_id = $app->functions->intval($_GET["server_id"]); $web_id = $app->functions->intval($_GET["web_id"]); $php_type = $_GET["php_type"]; +$client_group_id = $app->functions->intval($_GET['client_group_id']); $type = $_GET["type"]; //if($_SESSION["s"]["user"]["typ"] == 'admin') { @@ -55,7 +56,7 @@ $type = $_GET["type"]; if($type == 'getserverid'){ $json = '{"serverid":"'; - $sql = "SELECT server_id FROM web_domain WHERE domain_id = $web_id"; + $sql = "SELECT server_id FROM web_domain WHERE domain_id = $web_id AND ".$app->tform->getAuthSQL('r'); $server = $app->db->queryOneRecord($sql); $json .= $server['server_id']; unset($server); @@ -69,10 +70,26 @@ $type = $_GET["type"]; $web_config = $app->getconf->get_server_config($server_id, 'web'); if(!empty($web_config['server_type'])) $server_type = $web_config['server_type']; if($server_type == 'nginx' && $php_type == 'fast-cgi') $php_type = 'php-fpm'; - // get client id $sql_where = ''; - if($_SESSION["s"]["user"]["typ"] != 'admin'){ - $sql_where = " AND client_id = ".$_SESSION["s"]["user"]["client_id"]; + + //* Client: If the logged in user is not admin and has no sub clients (no reseller) + if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) { + $sql_where = " AND (client_id = 0 OR client_id = ".$_SESSION["s"]["user"]["client_id"] . ")"; + //* Reseller: If the logged in user is not admin and has sub clients (is a reseller) + } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) { + $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = $client_group_id"); + //$sql_where = " AND (client_id = 0 OR client_id = ".$_SESSION["s"]["user"]["client_id"]; + $sql_where = " AND (client_id = 0"; + if($app->functions->intval($client['client_id']) > 0) $sql_where .= " OR client_id = ".$app->functions->intval($client['client_id']); + $sql_where .= ")"; + //* Admin: If the logged in user is admin + } else { + //$sql_where = ''; + $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = $client_group_id"); + //$sql_where = " AND (client_id = 0 OR client_id = ".$_SESSION["s"]["user"]["client_id"]; + $sql_where = " AND (client_id = 0"; + if($app->functions->intval($client['client_id']) > 0) $sql_where .= " OR client_id = ".$app->functions->intval($client['client_id']); + $sql_where .= ")"; } if($php_type == 'php-fpm'){ @@ -99,7 +116,7 @@ $type = $_GET["type"]; if($type == 'getphptype'){ $json = '{"phptype":"'; - $sql = "SELECT php FROM web_domain WHERE domain_id = $web_id"; + $sql = "SELECT php FROM web_domain WHERE domain_id = $web_id AND ".$app->tform->getAuthSQL('r'); $php = $app->db->queryOneRecord($sql); $json .= $php['php']; unset($php); @@ -108,7 +125,7 @@ $type = $_GET["type"]; if($type == 'getredirecttype'){ $json = '{"redirecttype":"'; - $sql = "SELECT redirect_type FROM web_domain WHERE domain_id = $web_id"; + $sql = "SELECT redirect_type FROM web_domain WHERE domain_id = $web_id AND ".$app->tform->getAuthSQL('r'); $redirect = $app->db->queryOneRecord($sql); $json .= $redirect['redirect_type']; unset($redirect); @@ -138,7 +155,7 @@ $type = $_GET["type"]; if($type == 'getdatabaseusers') { $json = '{}'; - $sql = "SELECT sys_groupid FROM web_domain WHERE domain_id = $web_id"; + $sql = "SELECT sys_groupid FROM web_domain WHERE domain_id = $web_id AND ".$app->tform->getAuthSQL('r'); $group = $app->db->queryOneRecord($sql); if($group) { $sql = "SELECT database_user_id, database_user FROM web_database_user WHERE sys_groupid = '" . $group['sys_groupid'] . "'"; diff --git a/interface/web/sites/cron_edit.php b/interface/web/sites/cron_edit.php index 4c584d190..fea4a7be1 100644 --- a/interface/web/sites/cron_edit.php +++ b/interface/web/sites/cron_edit.php @@ -104,7 +104,8 @@ class page_action extends tform_actions { } // Get the record of the parent domain - $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"])); + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); // Set fixed values $this->dataRecord["server_id"] = $parent_domain["server_id"]; diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php index 8dc3ab30b..99e0bbdfe 100644 --- a/interface/web/sites/database_edit.php +++ b/interface/web/sites/database_edit.php @@ -136,6 +136,9 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); + if($_SESSION["s"]["user"]["typ"] != 'admin') { // Get the limits of the client $client_group_id = $_SESSION["s"]["user"]["default_group"]; @@ -186,7 +189,7 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf, $interfaceConf; - //* Site shell not be empty + //* Site shall not be empty if($this->dataRecord['parent_domain_id'] == 0) $app->tform->errorMessage .= $app->tform->lng("database_site_error_empty").'
    '; //* Get the database name and database user prefix diff --git a/interface/web/sites/ftp_user_edit.php b/interface/web/sites/ftp_user_edit.php index 798233de9..59a36805c 100644 --- a/interface/web/sites/ftp_user_edit.php +++ b/interface/web/sites/ftp_user_edit.php @@ -91,7 +91,15 @@ class page_action extends tform_actions { global $app, $conf; // Get the record of the parent domain - $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"])); + if(isset($this->dataRecord["parent_domain_id"])) { + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); + } else { + $tmp = $app->tform->getDataRecord($this->id); + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval($tmp["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); + unset($tmp); + } // Set a few fixed values $this->dataRecord["server_id"] = $parent_domain["server_id"]; diff --git a/interface/web/sites/lib/lang/ar_shell_user.lng b/interface/web/sites/lib/lang/ar_shell_user.lng index 4f5999471..8460d4e7a 100644 --- a/interface/web/sites/lib/lang/ar_shell_user.lng +++ b/interface/web/sites/lib/lang/ar_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/ar_web_domain.lng b/interface/web/sites/lib/lang/ar_web_domain.lng index f10cc4225..8bdb312c9 100644 --- a/interface/web/sites/lib/lang/ar_web_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/ar_web_folder_user.lng b/interface/web/sites/lib/lang/ar_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/ar_web_folder_user.lng +++ b/interface/web/sites/lib/lang/ar_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/bg_shell_user.lng b/interface/web/sites/lib/lang/bg_shell_user.lng index 888a1b8cc..82a44af34 100644 --- a/interface/web/sites/lib/lang/bg_shell_user.lng +++ b/interface/web/sites/lib/lang/bg_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_domain.lng b/interface/web/sites/lib/lang/bg_web_domain.lng index c2816ad35..dc2d3ff67 100644 --- a/interface/web/sites/lib/lang/bg_web_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/bg_web_folder_user.lng b/interface/web/sites/lib/lang/bg_web_folder_user.lng index df127ebdf..c84ea7158 100644 --- a/interface/web/sites/lib/lang/bg_web_folder_user.lng +++ b/interface/web/sites/lib/lang/bg_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/br_shell_user.lng b/interface/web/sites/lib/lang/br_shell_user.lng index a001451a7..8a098cb5a 100644 --- a/interface/web/sites/lib/lang/br_shell_user.lng +++ b/interface/web/sites/lib/lang/br_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng index 623bc0b21..b2abb2ac9 100644 --- a/interface/web/sites/lib/lang/br_web_domain.lng +++ b/interface/web/sites/lib/lang/br_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/br_web_folder_user.lng b/interface/web/sites/lib/lang/br_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/br_web_folder_user.lng +++ b/interface/web/sites/lib/lang/br_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/cz_shell_user.lng b/interface/web/sites/lib/lang/cz_shell_user.lng index 97b8a0d08..711475eba 100644 --- a/interface/web/sites/lib/lang/cz_shell_user.lng +++ b/interface/web/sites/lib/lang/cz_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generovat heslo'; $wb['repeat_password_txt'] = 'Opakujte heslo'; $wb['password_mismatch_txt'] = 'Hesla se neshodují.'; $wb['password_match_txt'] = 'Hesla se shodují.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_domain.lng b/interface/web/sites/lib/lang/cz_web_domain.lng index f3e31d39a..49ee278fa 100644 --- a/interface/web/sites/lib/lang/cz_web_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/cz_web_folder_user.lng b/interface/web/sites/lib/lang/cz_web_folder_user.lng index 48f426089..d55cb29d8 100644 --- a/interface/web/sites/lib/lang/cz_web_folder_user.lng +++ b/interface/web/sites/lib/lang/cz_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generovat heslo'; $wb['repeat_password_txt'] = 'Opakujte heslo'; $wb['password_mismatch_txt'] = 'Hesla se neshodují.'; $wb['password_match_txt'] = 'Hesla se shodují.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/de_database_admin_list.lng b/interface/web/sites/lib/lang/de_database_admin_list.lng index 3b11b2c41..f77b4ca89 100644 --- a/interface/web/sites/lib/lang/de_database_admin_list.lng +++ b/interface/web/sites/lib/lang/de_database_admin_list.lng @@ -8,4 +8,5 @@ $wb['database_user_txt'] = 'Datenbank Benutzer'; $wb['database_name_txt'] = 'Datenbankname'; $wb['add_new_record_txt'] = 'Neue Datenbank hinzufügen'; $wb['sys_groupid_txt'] = 'Kunde'; +$wb['parent_domain_id_txt'] = 'Domain'; ?> diff --git a/interface/web/sites/lib/lang/de_database_list.lng b/interface/web/sites/lib/lang/de_database_list.lng index 89caea3e9..d355181b2 100644 --- a/interface/web/sites/lib/lang/de_database_list.lng +++ b/interface/web/sites/lib/lang/de_database_list.lng @@ -7,4 +7,5 @@ $wb['server_id_txt'] = 'Server'; $wb['database_name_txt'] = 'Datenbankname'; $wb['add_new_record_txt'] = 'Neue Datenbank hinzufügen'; $wb['database_user_txt'] = 'Database user'; +$wb['parent_domain_id_txt'] = 'Domain'; ?> diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng index 5467c9965..15bbcfd57 100644 --- a/interface/web/sites/lib/lang/de_web_domain.lng +++ b/interface/web/sites/lib/lang/de_web_domain.lng @@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monatlich'; $wb['rewrite_rules_txt'] = 'Rewrite Rules'; $wb['invalid_rewrite_rules_txt'] = 'Unzulässige Rewrite Rules'; $wb['allowed_rewrite_rule_directives_txt'] = 'Erlaubte Direktiven:'; +$wb['configuration_error_txt'] = "KONFIGURATIONSFEHLER"; ?> diff --git a/interface/web/sites/lib/lang/de_web_folder_user.lng b/interface/web/sites/lib/lang/de_web_folder_user.lng index 9562168e1..6983dc136 100644 --- a/interface/web/sites/lib/lang/de_web_folder_user.lng +++ b/interface/web/sites/lib/lang/de_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Passwort erzeugen'; $wb['repeat_password_txt'] = 'Passwort wiederholen'; $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.'; $wb['password_match_txt'] = 'Die Passwörter stimmen überein.'; +$wb['no_folder_perm'] = 'Sie haben keine Berechtigung für diesen Ordner.'; ?> diff --git a/interface/web/sites/lib/lang/el_shell_user.lng b/interface/web/sites/lib/lang/el_shell_user.lng index e41572a1a..3c3ea316c 100644 --- a/interface/web/sites/lib/lang/el_shell_user.lng +++ b/interface/web/sites/lib/lang/el_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/el_web_domain.lng b/interface/web/sites/lib/lang/el_web_domain.lng index e13af5060..6cdc3d7c5 100644 --- a/interface/web/sites/lib/lang/el_web_domain.lng +++ b/interface/web/sites/lib/lang/el_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/el_web_folder_user.lng b/interface/web/sites/lib/lang/el_web_folder_user.lng index 0435d233a..6835eaaaf 100644 --- a/interface/web/sites/lib/lang/el_web_folder_user.lng +++ b/interface/web/sites/lib/lang/el_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/en_database_admin_list.lng b/interface/web/sites/lib/lang/en_database_admin_list.lng index 5d0ad7a83..e68d9935f 100644 --- a/interface/web/sites/lib/lang/en_database_admin_list.lng +++ b/interface/web/sites/lib/lang/en_database_admin_list.lng @@ -8,4 +8,5 @@ $wb["database_user_txt"] = 'Database user'; $wb["database_name_txt"] = 'Database name'; $wb["add_new_record_txt"] = 'Add new Database'; $wb["sys_groupid_txt"] = 'Client'; +$wb["parent_domain_id_txt"] = 'Website'; ?> diff --git a/interface/web/sites/lib/lang/en_database_list.lng b/interface/web/sites/lib/lang/en_database_list.lng index 0a8d6ff87..13bb30403 100644 --- a/interface/web/sites/lib/lang/en_database_list.lng +++ b/interface/web/sites/lib/lang/en_database_list.lng @@ -7,4 +7,5 @@ $wb["server_id_txt"] = 'Server'; $wb["database_user_txt"] = 'Database user'; $wb["database_name_txt"] = 'Database name'; $wb["add_new_record_txt"] = 'Add new Database'; -?> +$wb["parent_domain_id_txt"] = 'Website'; +?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng index f48953f4b..6f5647b34 100644 --- a/interface/web/sites/lib/lang/en_web_domain.lng +++ b/interface/web/sites/lib/lang/en_web_domain.lng @@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['rewrite_rules_txt'] = 'Rewrite Rules'; $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; +$wb['configuration_error_txt'] = "CONFIGURATION ERROR"; ?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/en_web_folder_user.lng b/interface/web/sites/lib/lang/en_web_folder_user.lng index 4d46ec819..63c18567f 100644 --- a/interface/web/sites/lib/lang/en_web_folder_user.lng +++ b/interface/web/sites/lib/lang/en_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb["no_folder_perm"] = 'You have no permission for this folder.'; ?> \ No newline at end of file diff --git a/interface/web/sites/lib/lang/es_shell_user.lng b/interface/web/sites/lib/lang/es_shell_user.lng index 2ca9c5584..45fd930e2 100644 --- a/interface/web/sites/lib/lang/es_shell_user.lng +++ b/interface/web/sites/lib/lang/es_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/es_web_domain.lng b/interface/web/sites/lib/lang/es_web_domain.lng index db0a0b6bf..b3f466018 100644 --- a/interface/web/sites/lib/lang/es_web_domain.lng +++ b/interface/web/sites/lib/lang/es_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/es_web_folder_user.lng b/interface/web/sites/lib/lang/es_web_folder_user.lng index 645fe3ab3..f3468c947 100644 --- a/interface/web/sites/lib/lang/es_web_folder_user.lng +++ b/interface/web/sites/lib/lang/es_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/fi_shell_user.lng b/interface/web/sites/lib/lang/fi_shell_user.lng index 423939d98..06fe1bd7e 100755 --- a/interface/web/sites/lib/lang/fi_shell_user.lng +++ b/interface/web/sites/lib/lang/fi_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_domain.lng b/interface/web/sites/lib/lang/fi_web_domain.lng index 7c31eeb54..1c4055aa1 100755 --- a/interface/web/sites/lib/lang/fi_web_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/fi_web_folder_user.lng b/interface/web/sites/lib/lang/fi_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/fi_web_folder_user.lng +++ b/interface/web/sites/lib/lang/fi_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/fr_shell_user.lng b/interface/web/sites/lib/lang/fr_shell_user.lng index 3af188c5e..1fbc93cc9 100644 --- a/interface/web/sites/lib/lang/fr_shell_user.lng +++ b/interface/web/sites/lib/lang/fr_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_domain.lng b/interface/web/sites/lib/lang/fr_web_domain.lng index d0029908d..d96e6ad75 100644 --- a/interface/web/sites/lib/lang/fr_web_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/fr_web_folder_user.lng b/interface/web/sites/lib/lang/fr_web_folder_user.lng index df2f802b0..444814c6d 100644 --- a/interface/web/sites/lib/lang/fr_web_folder_user.lng +++ b/interface/web/sites/lib/lang/fr_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/hr_shell_user.lng b/interface/web/sites/lib/lang/hr_shell_user.lng index b38dde9ca..417378725 100644 --- a/interface/web/sites/lib/lang/hr_shell_user.lng +++ b/interface/web/sites/lib/lang/hr_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_domain.lng b/interface/web/sites/lib/lang/hr_web_domain.lng index 37bed82f7..8c47934df 100644 --- a/interface/web/sites/lib/lang/hr_web_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/hr_web_folder_user.lng b/interface/web/sites/lib/lang/hr_web_folder_user.lng index b81caa5d5..8ebc859e7 100644 --- a/interface/web/sites/lib/lang/hr_web_folder_user.lng +++ b/interface/web/sites/lib/lang/hr_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/hu_shell_user.lng b/interface/web/sites/lib/lang/hu_shell_user.lng index 3191cc878..849f380f8 100644 --- a/interface/web/sites/lib/lang/hu_shell_user.lng +++ b/interface/web/sites/lib/lang/hu_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_domain.lng b/interface/web/sites/lib/lang/hu_web_domain.lng index 2bf0127a5..006078725 100644 --- a/interface/web/sites/lib/lang/hu_web_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/hu_web_folder_user.lng b/interface/web/sites/lib/lang/hu_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/hu_web_folder_user.lng +++ b/interface/web/sites/lib/lang/hu_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/id_shell_user.lng b/interface/web/sites/lib/lang/id_shell_user.lng index f36c057b8..0ec09ccf7 100644 --- a/interface/web/sites/lib/lang/id_shell_user.lng +++ b/interface/web/sites/lib/lang/id_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/id_web_domain.lng b/interface/web/sites/lib/lang/id_web_domain.lng index 6c464398f..5bcfb28ba 100644 --- a/interface/web/sites/lib/lang/id_web_domain.lng +++ b/interface/web/sites/lib/lang/id_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/id_web_folder_user.lng b/interface/web/sites/lib/lang/id_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/id_web_folder_user.lng +++ b/interface/web/sites/lib/lang/id_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/it_shell_user.lng b/interface/web/sites/lib/lang/it_shell_user.lng index 4f5999471..8460d4e7a 100644 --- a/interface/web/sites/lib/lang/it_shell_user.lng +++ b/interface/web/sites/lib/lang/it_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/it_web_domain.lng b/interface/web/sites/lib/lang/it_web_domain.lng index 084b4acf2..d605e88df 100644 --- a/interface/web/sites/lib/lang/it_web_domain.lng +++ b/interface/web/sites/lib/lang/it_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/it_web_folder_user.lng b/interface/web/sites/lib/lang/it_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/it_web_folder_user.lng +++ b/interface/web/sites/lib/lang/it_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/ja_shell_user.lng b/interface/web/sites/lib/lang/ja_shell_user.lng index 04c7a7827..19f09a5cb 100644 --- a/interface/web/sites/lib/lang/ja_shell_user.lng +++ b/interface/web/sites/lib/lang/ja_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_domain.lng b/interface/web/sites/lib/lang/ja_web_domain.lng index 43162ef3d..a6dbbf6dc 100644 --- a/interface/web/sites/lib/lang/ja_web_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/ja_web_folder_user.lng b/interface/web/sites/lib/lang/ja_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/ja_web_folder_user.lng +++ b/interface/web/sites/lib/lang/ja_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/nl_shell_user.lng b/interface/web/sites/lib/lang/nl_shell_user.lng index bfd9635a7..53fed2070 100644 --- a/interface/web/sites/lib/lang/nl_shell_user.lng +++ b/interface/web/sites/lib/lang/nl_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_domain.lng b/interface/web/sites/lib/lang/nl_web_domain.lng index 785471dce..e2bb5cbea 100644 --- a/interface/web/sites/lib/lang/nl_web_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/nl_web_folder_user.lng b/interface/web/sites/lib/lang/nl_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/nl_web_folder_user.lng +++ b/interface/web/sites/lib/lang/nl_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/pl_shell_user.lng b/interface/web/sites/lib/lang/pl_shell_user.lng index 5259aeb2b..e51ef644a 100644 --- a/interface/web/sites/lib/lang/pl_shell_user.lng +++ b/interface/web/sites/lib/lang/pl_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generuj hasło'; $wb['repeat_password_txt'] = 'Powtórz hasło'; $wb['password_mismatch_txt'] = 'Hasła nie pasują do siebie'; $wb['password_match_txt'] = 'Hasła pasują'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_domain.lng b/interface/web/sites/lib/lang/pl_web_domain.lng index 4cac25f0b..c08113e9e 100644 --- a/interface/web/sites/lib/lang/pl_web_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw ngin $wb['proxy_directives_txt'] = 'Dyrektywy Proxy'; $wb['available_proxy_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw Proxy:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/pl_web_folder_user.lng b/interface/web/sites/lib/lang/pl_web_folder_user.lng index 1975ae581..25f7de44c 100644 --- a/interface/web/sites/lib/lang/pl_web_folder_user.lng +++ b/interface/web/sites/lib/lang/pl_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generuj hasło'; $wb['repeat_password_txt'] = 'Powtórz hasło'; $wb['password_mismatch_txt'] = 'Hasła nie pasują do siebie'; $wb['password_match_txt'] = 'Hasła pasują'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/pt_shell_user.lng b/interface/web/sites/lib/lang/pt_shell_user.lng index 821e5cb53..5e346483e 100644 --- a/interface/web/sites/lib/lang/pt_shell_user.lng +++ b/interface/web/sites/lib/lang/pt_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_domain.lng b/interface/web/sites/lib/lang/pt_web_domain.lng index e3acc8a29..787e1c71d 100644 --- a/interface/web/sites/lib/lang/pt_web_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/pt_web_folder_user.lng b/interface/web/sites/lib/lang/pt_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/pt_web_folder_user.lng +++ b/interface/web/sites/lib/lang/pt_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/ro_shell_user.lng b/interface/web/sites/lib/lang/ro_shell_user.lng index 1eea93f5f..d4620af9e 100644 --- a/interface/web/sites/lib/lang/ro_shell_user.lng +++ b/interface/web/sites/lib/lang/ro_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_domain.lng b/interface/web/sites/lib/lang/ro_web_domain.lng index d100895fa..31e0112ee 100644 --- a/interface/web/sites/lib/lang/ro_web_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/ro_web_folder_user.lng b/interface/web/sites/lib/lang/ro_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/ro_web_folder_user.lng +++ b/interface/web/sites/lib/lang/ro_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/ru_shell_user.lng b/interface/web/sites/lib/lang/ru_shell_user.lng index 6723395d7..d87f544e1 100644 --- a/interface/web/sites/lib/lang/ru_shell_user.lng +++ b/interface/web/sites/lib/lang/ru_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_domain.lng b/interface/web/sites/lib/lang/ru_web_domain.lng index 46f377f94..5f6aafdc3 100644 --- a/interface/web/sites/lib/lang/ru_web_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/ru_web_folder_user.lng b/interface/web/sites/lib/lang/ru_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/ru_web_folder_user.lng +++ b/interface/web/sites/lib/lang/ru_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/se_shell_user.lng b/interface/web/sites/lib/lang/se_shell_user.lng index 4f5999471..8460d4e7a 100644 --- a/interface/web/sites/lib/lang/se_shell_user.lng +++ b/interface/web/sites/lib/lang/se_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/se_web_domain.lng b/interface/web/sites/lib/lang/se_web_domain.lng index a44eee857..3e309ed5d 100644 --- a/interface/web/sites/lib/lang/se_web_domain.lng +++ b/interface/web/sites/lib/lang/se_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/se_web_folder_user.lng b/interface/web/sites/lib/lang/se_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/se_web_folder_user.lng +++ b/interface/web/sites/lib/lang/se_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/sk_shell_user.lng b/interface/web/sites/lib/lang/sk_shell_user.lng index fc0542904..79f9eac87 100644 --- a/interface/web/sites/lib/lang/sk_shell_user.lng +++ b/interface/web/sites/lib/lang/sk_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_domain.lng b/interface/web/sites/lib/lang/sk_web_domain.lng index b127ec23b..952216fe8 100644 --- a/interface/web/sites/lib/lang/sk_web_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_domain.lng @@ -112,4 +112,11 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; $wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/sk_web_folder_user.lng b/interface/web/sites/lib/lang/sk_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/sk_web_folder_user.lng +++ b/interface/web/sites/lib/lang/sk_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/lib/lang/tr_shell_user.lng b/interface/web/sites/lib/lang/tr_shell_user.lng index 17a5ff060..ac45063f0 100644 --- a/interface/web/sites/lib/lang/tr_shell_user.lng +++ b/interface/web/sites/lib/lang/tr_shell_user.lng @@ -26,4 +26,6 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.'; +$wb['username_not_allowed_txt'] = 'The username is not allowed.'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng index 814f600c8..23a5374b0 100644 --- a/interface/web/sites/lib/lang/tr_web_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_domain.lng @@ -111,4 +111,12 @@ $wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Sni $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:'; $wb['proxy_directives_txt'] = 'Proxy Directives'; $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; +$wb['no_server_error'] = 'No server selected.'; +$wb['no_backup_txt'] = 'No backup'; +$wb['daily_backup_txt'] = 'Daily'; +$wb['weekly_backup_txt'] = 'Weekly'; +$wb['monthly_backup_txt'] = 'Monthly'; +$wb['rewrite_rules_txt'] = 'Rewrite Rules'; +$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; +$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; ?> diff --git a/interface/web/sites/lib/lang/tr_web_folder_user.lng b/interface/web/sites/lib/lang/tr_web_folder_user.lng index bf5665396..3534ea7f2 100644 --- a/interface/web/sites/lib/lang/tr_web_folder_user.lng +++ b/interface/web/sites/lib/lang/tr_web_folder_user.lng @@ -9,4 +9,5 @@ $wb['generate_password_txt'] = 'Generate Password'; $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; +$wb['no_folder_perm'] = 'You have no permission for this folder.'; ?> diff --git a/interface/web/sites/list/database.list.php b/interface/web/sites/list/database.list.php index f512bef31..76dbec54f 100644 --- a/interface/web/sites/list/database.list.php +++ b/interface/web/sites/list/database.list.php @@ -112,6 +112,23 @@ $liste["item"][] = array( 'field' => "server_id", ), 'width' => "", 'value' => ""); + +$liste["item"][] = array( 'field' => "parent_domain_id", + 'datatype' => "VARCHAR", + 'filters' => array( 0 => array( 'event' => 'SHOW', + 'type' => 'IDNTOUTF8') + ), + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain", + 'keyfield'=> 'domain_id', + 'valuefield'=> 'domain' + ), + 'width' => "", + 'value' => ""); $liste["item"][] = array( 'field' => "database_user_id", 'datatype' => "INTEGER", diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php index b14963a30..a18dd8e55 100644 --- a/interface/web/sites/shell_user_edit.php +++ b/interface/web/sites/shell_user_edit.php @@ -99,7 +99,17 @@ class page_action extends tform_actions { global $app, $conf; // Get the record of the parent domain - $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"])); + //$parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + //if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); + if(isset($this->dataRecord["parent_domain_id"])) { + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); + } else { + $tmp = $app->tform->getDataRecord($this->id); + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval($tmp["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); + unset($tmp); + } // Set a few fixed values $this->dataRecord["server_id"] = $parent_domain["server_id"]; diff --git a/interface/web/sites/templates/database_admin_list.htm b/interface/web/sites/templates/database_admin_list.htm index 2f967384f..e4aefdbd8 100644 --- a/interface/web/sites/templates/database_admin_list.htm +++ b/interface/web/sites/templates/database_admin_list.htm @@ -22,6 +22,7 @@
    + @@ -32,6 +33,7 @@ + + + @@ -47,6 +48,7 @@ + +
    {tmpl_var name='search_limit'} @@ -47,6 +49,7 @@ {tmpl_var name="type"} {tmpl_var name="sys_groupid"} {tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"} {tmpl_var name="database_user_id"} {tmpl_var name="database_name"} diff --git a/interface/web/sites/templates/database_list.htm b/interface/web/sites/templates/database_list.htm index 888f3ba13..15a8ae77c 100644 --- a/interface/web/sites/templates/database_list.htm +++ b/interface/web/sites/templates/database_list.htm @@ -38,6 +38,7 @@ {tmpl_var name='search_limit'} @@ -61,6 +63,7 @@ {tmpl_var name="remote_access"} {tmpl_var name="type"} {tmpl_var name="server_id"}{tmpl_var name="parent_domain_id"} {tmpl_var name="database_user_id"} {tmpl_var name="database_name"} diff --git a/interface/web/sites/templates/web_domain_advanced.htm b/interface/web/sites/templates/web_domain_advanced.htm index 5df608add..2f5136ebe 100644 --- a/interface/web/sites/templates/web_domain_advanced.htm +++ b/interface/web/sites/templates/web_domain_advanced.htm @@ -1,6 +1,15 @@

    + +
    +

    {tmpl_var name='configuration_error_txt'}

    +
    +
    {tmpl_var name='config_error_tstamp'} : 
    {tmpl_var name='config_error_msg'}
    +
    +
    +
    +
    diff --git a/interface/web/sites/templates/web_domain_backup.htm b/interface/web/sites/templates/web_domain_backup.htm index 3c78fe73d..cfe43379f 100644 --- a/interface/web/sites/templates/web_domain_backup.htm +++ b/interface/web/sites/templates/web_domain_backup.htm @@ -1,6 +1,15 @@

    + +
    +

    {tmpl_var name='configuration_error_txt'}

    +
    +
    {tmpl_var name='config_error_tstamp'} : 
    {tmpl_var name='config_error_msg'}
    +
    +
    +
    +
    diff --git a/interface/web/sites/templates/web_domain_edit.htm b/interface/web/sites/templates/web_domain_edit.htm index 9a1062387..d12c3a36c 100644 --- a/interface/web/sites/templates/web_domain_edit.htm +++ b/interface/web/sites/templates/web_domain_edit.htm @@ -1,6 +1,15 @@

    + +
    +

    {tmpl_var name='configuration_error_txt'}

    +
    +
    {tmpl_var name='config_error_tstamp'} : 
    {tmpl_var name='config_error_msg'}
    +
    +
    +
    +
    @@ -172,6 +181,7 @@ jQuery('#client_group_id').change(function(){ clientGroupId = $(this).val(); reloadWebIP(); + reloadFastcgiPHPVersions(); }); if(jQuery('#php').val() == 'fast-cgi' || jQuery('#php').val() == 'php-fpm'){ @@ -225,7 +235,7 @@ } function reloadFastcgiPHPVersions(noFormChange) { - jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, php_type : jQuery('#php').val(), type : "getphpfastcgi"}, function(data) { + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, php_type : jQuery('#php').val(), type : "getphpfastcgi", client_group_id : clientGroupId}, function(data) { var options = ''; var phpfastcgiselected = ''; $.each(data, function(key, val) { diff --git a/interface/web/sites/templates/web_domain_redirect.htm b/interface/web/sites/templates/web_domain_redirect.htm index faff04441..c0bd977e2 100644 --- a/interface/web/sites/templates/web_domain_redirect.htm +++ b/interface/web/sites/templates/web_domain_redirect.htm @@ -1,6 +1,15 @@

    + +
    +

    {tmpl_var name='configuration_error_txt'}

    +
    +
    {tmpl_var name='config_error_tstamp'} : 
    {tmpl_var name='config_error_msg'}
    +
    +
    +
    +
    @@ -23,7 +32,7 @@
    -  {tmpl_var name="allowed_rewrite_rule_directives_txt"}

     break
     if
     return
     rewrite
     set +  {tmpl_var name="allowed_rewrite_rule_directives_txt"}

     break
     if
     return
     rewrite
     set

     http://wiki.nginx.org/HttpRewriteModule
    diff --git a/interface/web/sites/templates/web_domain_ssl.htm b/interface/web/sites/templates/web_domain_ssl.htm index 832d623f6..50d95d350 100644 --- a/interface/web/sites/templates/web_domain_ssl.htm +++ b/interface/web/sites/templates/web_domain_ssl.htm @@ -1,6 +1,15 @@

    + +
    +

    {tmpl_var name='configuration_error_txt'}

    +
    +
    {tmpl_var name='config_error_tstamp'} : 
    {tmpl_var name='config_error_msg'}
    +
    +
    +
    +
    diff --git a/interface/web/sites/templates/web_domain_stats.htm b/interface/web/sites/templates/web_domain_stats.htm index f497f1bb9..769e088f8 100644 --- a/interface/web/sites/templates/web_domain_stats.htm +++ b/interface/web/sites/templates/web_domain_stats.htm @@ -1,6 +1,15 @@

    + +
    +

    {tmpl_var name='configuration_error_txt'}

    +
    +
    {tmpl_var name='config_error_tstamp'} : 
    {tmpl_var name='config_error_msg'}
    +
    +
    +
    +
    diff --git a/interface/web/sites/web_aliasdomain_edit.php b/interface/web/sites/web_aliasdomain_edit.php index 150cb36a4..1d05a5e8f 100644 --- a/interface/web/sites/web_aliasdomain_edit.php +++ b/interface/web/sites/web_aliasdomain_edit.php @@ -143,7 +143,8 @@ class page_action extends tform_actions { } // Get the record of the parent domain - $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"])); + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); // Set a few fixed values $this->dataRecord["type"] = 'alias'; diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index 5c0ec9a2d..062529fda 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -188,8 +188,11 @@ class page_action extends tform_actions { $client_select = ''; //$tmp_data_record = $app->tform->getDataRecord($this->id); if(is_array($records)) { + $selected_client_group_id = 0; // needed to get list of PHP versions foreach( $records as $rec) { + if(is_array($this->dataRecord) && ($rec["groupid"] == $this->dataRecord['client_group_id'] || $rec["groupid"] == $this->dataRecord['sys_groupid']) && !$selected_client_group_id) $selected_client_group_id = $rec["groupid"]; $selected = @(is_array($this->dataRecord) && ($rec["groupid"] == $this->dataRecord['client_group_id'] || $rec["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':''; + if($selected == 'SELECTED') $selected_client_group_id = $rec["groupid"]; $client_select .= "\r\n"; } } @@ -229,11 +232,14 @@ class page_action extends tform_actions { $server_type = 'apache'; if(!empty($web_config['server_type'])) $server_type = $web_config['server_type']; if($server_type == 'nginx' && $this->dataRecord['php'] == 'fast-cgi') $this->dataRecord['php'] = 'php-fpm'; + $selected_client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = $selected_client_group_id"); + //$sql_where = " AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id']." OR client_id = ".intval($selected_client['client_id']).")"; + $sql_where = " AND (client_id = 0 OR client_id = ".intval($selected_client['client_id']).")"; if($this->dataRecord['php'] == 'php-fpm'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ".($this->id > 0 ? $this->dataRecord['server_id'] : intval($client['default_webserver']))." AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ".($this->id > 0 ? $this->dataRecord['server_id'] : intval($client['default_webserver'])).$sql_where); } if($this->dataRecord['php'] == 'fast-cgi') { - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ".($this->id > 0 ? $this->dataRecord['server_id'] : intval($client['default_webserver']))." AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ".($this->id > 0 ? $this->dataRecord['server_id'] : intval($client['default_webserver'])).$sql_where); } $php_select = ""; if(is_array($php_records) && !empty($php_records)) { @@ -350,16 +356,36 @@ class page_action extends tform_actions { $app->tpl->setVar("ipv6_address",$ip_select); unset($tmp); unset($ips); + + // Fill the client select field + $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY sys_group.name"; + $clients = $app->db->queryAllRecords($sql); + $client_select = ""; + //$tmp_data_record = $app->tform->getDataRecord($this->id); + if(is_array($clients)) { + $selected_client_group_id = 0; // needed to get list of PHP versions + foreach($clients as $client) { + if(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']) && !$selected_client_group_id) $selected_client_group_id = $client["groupid"]; + //$selected = @($client["groupid"] == $tmp_data_record["sys_groupid"])?'SELECTED':''; + $selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':''; + if($selected == 'SELECTED') $selected_client_group_id = $client["groupid"]; + $client_select .= "\r\n"; + } + } + $app->tpl->setVar("client_group_id",$client_select); //PHP Version Selection (FastCGI) $server_type = 'apache'; if(!empty($web_config['server_type'])) $server_type = $web_config['server_type']; if($server_type == 'nginx' && $this->dataRecord['php'] == 'fast-cgi') $this->dataRecord['php'] = 'php-fpm'; + $selected_client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = $selected_client_group_id"); + //$sql_where = " AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id']." OR client_id = ".intval($selected_client['client_id']).")"; + $sql_where = " AND (client_id = 0 OR client_id = ".intval($selected_client['client_id']).")"; if($this->dataRecord['php'] == 'php-fpm'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = $server_id"); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = $server_id".$sql_where); } if($this->dataRecord['php'] == 'fast-cgi') { - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = $server_id"); + $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = $server_id".$sql_where); } $php_select = ""; if(is_array($php_records) && !empty($php_records)) { @@ -375,20 +401,6 @@ class page_action extends tform_actions { } $app->tpl->setVar("fastcgi_php_version",$php_select); unset($php_records); - - // Fill the client select field - $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY sys_group.name"; - $clients = $app->db->queryAllRecords($sql); - $client_select = ""; - //$tmp_data_record = $app->tform->getDataRecord($this->id); - if(is_array($clients)) { - foreach( $clients as $client) { - //$selected = @($client["groupid"] == $tmp_data_record["sys_groupid"])?'SELECTED':''; - $selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':''; - $client_select .= "\r\n"; - } - } - $app->tpl->setVar("client_group_id",$client_select); foreach($read_limits as $limit) $app->tpl->setVar($limit, ($limit == 'force_suexec' ? 'n' : 'y')); @@ -494,6 +506,17 @@ class page_action extends tform_actions { } $app->tpl->setVar("domain_option",$domain_select); } + + // check for configuration errors in sys_datalog + if($this->id > 0) { + $datalog = $app->db->queryOneRecord("SELECT sys_datalog.error, sys_log.tstamp FROM sys_datalog, sys_log WHERE sys_datalog.dbtable = 'web_domain' AND sys_datalog.dbidx = 'domain_id:".$this->id."' AND sys_datalog.datalog_id = sys_log.datalog_id AND sys_log.message = CONCAT('Processed datalog_id ',sys_log.datalog_id) ORDER BY sys_datalog.tstamp DESC"); + if(is_array($datalog) && !empty($datalog)){ + if(trim($datalog['error']) != ''){ + $app->tpl->setVar("config_error_msg",nl2br(htmlentities($datalog['error']))); + $app->tpl->setVar("config_error_tstamp",date($app->lng('conf_format_datetime'), $datalog['tstamp'])); + } + } + } parent::onShowEnd(); } @@ -700,6 +723,10 @@ class page_action extends tform_actions { $rewrite_rule_lines = explode("\n", $rewrite_rules); if(is_array($rewrite_rule_lines) && !empty($rewrite_rule_lines)){ foreach($rewrite_rule_lines as $rewrite_rule_line){ + // ignore comments + if(substr(ltrim($rewrite_rule_line),0,1) == '#') continue; + // empty lines + if(trim($rewrite_rule_line) == '') continue; // rewrite if(preg_match('@^\s*rewrite\s+(^/)?\S+(\$)?\s+\S+(\s+(last|break|redirect|permanent|))?\s*;\s*$@', $rewrite_rule_line)) continue; // if @@ -714,7 +741,6 @@ class page_action extends tform_actions { } // break if(preg_match('@^\s*break\s*;\s*$@', $rewrite_rule_line)){ - $if_level += 1; continue; } // return code [ text ] @@ -1001,7 +1027,16 @@ class page_action extends tform_actions { unset($backup_copies); unset($backup_interval); } - + + //* Change vhost subdomain ip/ipv6 if domain ip/ipv6 has changed + if(isset($this->dataRecord['ip_address']) && ($this->dataRecord['ip_address'] != $this->oldDataRecord['ip_address'] || $this->dataRecord['ipv6_address'] != $this->oldDataRecord['ipv6_address'])) { + $records = $app->db->queryAllRecords("SELECT domain_id FROM web_domain WHERE type = 'vhostsubdomain' AND parent_domain_id = ".$this->id); + foreach($records as $rec) { + $app->db->datalogUpdate('web_domain', "ip_address = '".$web_rec['ip_address']."', ipv6_address = '".$web_rec['ipv6_address']."'", 'domain_id', $rec['domain_id']); + } + unset($records); + unset($rec); + } } function onAfterDelete() { diff --git a/interface/web/sites/web_folder_edit.php b/interface/web/sites/web_folder_edit.php index 178c2af69..2f888a12a 100644 --- a/interface/web/sites/web_folder_edit.php +++ b/interface/web/sites/web_folder_edit.php @@ -55,7 +55,8 @@ class page_action extends tform_actions { global $app, $conf; // Get the record of the parent domain - $parent_domain = $app->db->queryOneRecord("select server_id FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"])); + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); // Set a few fixed values $this->dataRecord["server_id"] = $parent_domain["server_id"]; diff --git a/interface/web/sites/web_folder_user_edit.php b/interface/web/sites/web_folder_user_edit.php index 95a886449..c67e8230c 100644 --- a/interface/web/sites/web_folder_user_edit.php +++ b/interface/web/sites/web_folder_user_edit.php @@ -55,7 +55,8 @@ class page_action extends tform_actions { global $app, $conf; // Get the record of the parent domain - $folder = $app->db->queryOneRecord("select server_id FROM web_folder WHERE web_folder_id = ".$app->functions->intval(@$this->dataRecord["web_folder_id"])); + $folder = $app->db->queryOneRecord("select * FROM web_folder WHERE web_folder_id = ".$app->functions->intval(@$this->dataRecord["web_folder_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$folder || $folder['web_folder_id'] != @$this->dataRecord['web_folder_id']) $app->tform->errorMessage .= $app->tform->lng("no_folder_perm"); // Set a few fixed values $this->dataRecord["server_id"] = $folder["server_id"]; diff --git a/interface/web/sites/web_subdomain_edit.php b/interface/web/sites/web_subdomain_edit.php index ae9ee074e..3475ed5c0 100644 --- a/interface/web/sites/web_subdomain_edit.php +++ b/interface/web/sites/web_subdomain_edit.php @@ -132,7 +132,8 @@ class page_action extends tform_actions { global $app, $conf; // Get the record of the parent domain - $parent_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"])); + $parent_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); $app->uses('ini_parser,getconf'); $settings = $app->getconf->get_global_config('domains'); diff --git a/interface/web/sites/web_vhost_subdomain_edit.php b/interface/web/sites/web_vhost_subdomain_edit.php index 656a7dd3d..97e84f4f5 100644 --- a/interface/web/sites/web_vhost_subdomain_edit.php +++ b/interface/web/sites/web_vhost_subdomain_edit.php @@ -368,7 +368,8 @@ class page_action extends tform_actions { unset($tmp); } - $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"])); + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); // Set a few fixed values $this->dataRecord["type"] = 'vhostsubdomain'; diff --git a/interface/web/sites/webdav_user_edit.php b/interface/web/sites/webdav_user_edit.php index c6eaaf994..377b00eb0 100644 --- a/interface/web/sites/webdav_user_edit.php +++ b/interface/web/sites/webdav_user_edit.php @@ -98,7 +98,8 @@ class page_action extends tform_actions { global $app, $conf; /* Get the record of the parent domain */ - $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"])); + $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r')); + if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); /* * Set a few fixed values diff --git a/remoting_client/examples/client_add.php b/remoting_client/examples/client_add.php index 25412ec0a..95faffda2 100644 --- a/remoting_client/examples/client_add.php +++ b/remoting_client/examples/client_add.php @@ -25,7 +25,7 @@ try { 'zip' => '21337', 'city' => 'london', 'state' => 'bavaria', - 'country' => 'UK', + 'country' => 'GB', 'telephone' => '123456789', 'mobile' => '987654321', 'fax' => '546718293', diff --git a/remoting_client/examples/client_update.php b/remoting_client/examples/client_update.php index 82f879703..e88437843 100644 --- a/remoting_client/examples/client_update.php +++ b/remoting_client/examples/client_update.php @@ -16,17 +16,20 @@ try { //* Parameters $reseller_id = 1; - $c_id = 1; + $client_id = 1; //* Get the client record - $client_record = $client->client_get($session_id, $reseller_id); + $client_record = $client->client_get($session_id, $client_id); //* Change parameters $client_record['country'] = 'de'; $client_record['username'] = 'mguy'; $client_record['contact_name'] = 'brush'; + //* We set the client password to a empty string as we do not want to change it. + $client_record['password'] = ''; + $affected_rows = $client->client_update($session_id, $c_id, $reseller_id, $client_record); echo "Number of records that have been changed in the database: ".$affected_rows."
    "; diff --git a/server/cron_daily.php b/server/cron_daily.php index 21d8f84f0..029c4f30f 100644 --- a/server/cron_daily.php +++ b/server/cron_daily.php @@ -33,6 +33,7 @@ require(SCRIPT_PATH."/lib/config.inc.php"); require(SCRIPT_PATH."/lib/app.inc.php"); set_time_limit(0); +ini_set('error_reporting', E_ALL & ~E_NOTICE); // make sure server_id is always an int $conf['server_id'] = intval($conf['server_id']); @@ -742,10 +743,10 @@ if ($app->dbmaster == $app->db) { //* Send traffic notifications if($rec['traffic_quota_lock'] != 'y' && ($web_config['overtraffic_notify_admin'] == 'y' || $web_config['overtraffic_notify_client'] == 'y')) { - + $placeholders = array('{domain}' => $rec['domain'], - '{admin_mail}' => $global_config['admin_mail']); - + '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root')); + $recipients = array(); //* send email to admin if($global_config['admin_mail'] != '' && $web_config['overtraffic_notify_admin'] == 'y') { @@ -860,7 +861,7 @@ if ($app->dbmaster == $app->db) { // send notification - everything ok again if($rec['last_quota_notification'] && $web_config['overquota_notify_onok'] == 'y' && ($web_config['overquota_notify_admin'] == 'y' || $web_config['overquota_notify_client'] == 'y')) { $placeholders = array('{domain}' => $rec['domain'], - '{admin_mail}' => $global_config['admin_mail'], + '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root'), '{used}' => $rec['used'], '{soft}' => $rec['soft'], '{hard}' => $rec['hard'], @@ -897,7 +898,7 @@ if ($app->dbmaster == $app->db) { $app->dbmaster->datalogUpdate('web_domain', "last_quota_notification = CURDATE()", 'domain_id', $rec['domain_id']); $placeholders = array('{domain}' => $rec['domain'], - '{admin_mail}' => $global_config['admin_mail'], + '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root'), '{used}' => $rec['used'], '{soft}' => $rec['soft'], '{hard}' => $rec['hard'], @@ -990,7 +991,7 @@ if ($app->dbmaster == $app->db) { // send notification - everything ok again if($rec['last_quota_notification'] && $mail_config['overquota_notify_onok'] == 'y' && ($mail_config['overquota_notify_admin'] == 'y' || $mail_config['overquota_notify_client'] == 'y')) { $placeholders = array('{email}' => $rec['email'], - '{admin_mail}' => $global_config['admin_mail'], + '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root'), '{used}' => $rec['used'], '{name}' => $rec['name'], '{quota}' => $rec['quota'], @@ -1027,7 +1028,7 @@ if ($app->dbmaster == $app->db) { $app->dbmaster->datalogUpdate('mail_user', "last_quota_notification = CURDATE()", 'mailuser_id', $rec['mailuser_id']); $placeholders = array('{email}' => $rec['email'], - '{admin_mail}' => $global_config['admin_mail'], + '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root'), '{used}' => $rec['used'], '{name}' => $rec['name'], '{quota}' => $rec['quota'], @@ -1237,7 +1238,8 @@ if($backup_dir != '') { if ($rec['type'] == 'mysql') { $db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i').'.sql'; - $command = "mysqldump -h '".escapeshellcmd($clientdb_host)."' -u '".escapeshellcmd($clientdb_user)."' -p'".escapeshellcmd($clientdb_password)."' -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; + //$command = "mysqldump -h '".escapeshellcmd($clientdb_host)."' -u '".escapeshellcmd($clientdb_user)."' -p'".escapeshellcmd($clientdb_password)."' -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; + $command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'"; exec($command, $tmp_output, $retval); //* Compress the backup with gzip diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php index 11bf8daf2..321e5c6ff 100755 --- a/server/lib/app.inc.php +++ b/server/lib/app.inc.php @@ -156,7 +156,7 @@ class app { } // if - if($priority >= $conf['admin_notify_priority'] && $conf['admin_mail'] != '') { + if(isset($conf['admin_notify_priority']) && $priority >= $conf['admin_notify_priority'] && $conf['admin_mail'] != '') { // send notification to admin $mailBody = $log_msg; $mailSubject = substr($log_msg,0,50).'...'; diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 2974da09c..23ba8a627 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -373,6 +373,15 @@ public function toLower($record) { return true; } + + //** Deletes a record and saves the changes into the datalog + public function datalogError($errormsg) { + global $app; + + if(isset($app->modules->current_datalog_id) && $app->modules->current_datalog_id > 0) $this->query("UPDATE sys_datalog set error = '".$this->quote($errormsg)."' WHERE datalog_id = ".$app->modules->current_datalog_id); + + return true; + } public function freeResult($query) diff --git a/server/mods-available/dns_module.inc.php b/server/mods-available/dns_module.inc.php index 2fac7b5c5..2a06361e6 100644 --- a/server/mods-available/dns_module.inc.php +++ b/server/mods-available/dns_module.inc.php @@ -130,9 +130,9 @@ class dns_module { $retval = array('output' => '', 'retval' => 0); if($action == 'restart') { - exec($conf['init_scripts'] . '/' . $daemon . ' restart', $retval['output'], $retval['retval']); + exec($conf['init_scripts'] . '/' . $daemon . ' restart 2>&1', $retval['output'], $retval['retval']); } else { - exec($conf['init_scripts'] . '/' . $daemon . ' reload', $retval['output'], $retval['retval']); + exec($conf['init_scripts'] . '/' . $daemon . ' reload 2>&1', $retval['output'], $retval['retval']); } return $retval; } @@ -179,7 +179,7 @@ class dns_module { } $retval = array('output' => '', 'retval' => 0); - exec($conf['init_scripts'] . '/' . $daemon . ' restart', $retval['output'], $retval['retval']); + exec($conf['init_scripts'] . '/' . $daemon . ' restart 2>&1', $retval['output'], $retval['retval']); // unset $tmps; return $retval; diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php index 52d4aeddb..868cf9e20 100644 --- a/server/mods-available/web_module.inc.php +++ b/server/mods-available/web_module.inc.php @@ -212,9 +212,9 @@ class web_module { $retval = array('output' => '', 'retval' => 0); if($action == 'restart') { - exec($conf['init_scripts'] . '/' . $daemon . ' restart', $retval['output'], $retval['retval']); + exec($conf['init_scripts'] . '/' . $daemon . ' restart 2>&1', $retval['output'], $retval['retval']); } else { - exec($conf['init_scripts'] . '/' . $daemon . ' reload', $retval['output'], $retval['retval']); + exec($conf['init_scripts'] . '/' . $daemon . ' reload 2>&1', $retval['output'], $retval['retval']); } return $retval; } @@ -231,7 +231,7 @@ class web_module { if(!$init_script) $init_script = $conf['init_scripts'].'/'.$web_config['php_fpm_init_script']; $retval = array('output' => '', 'retval' => 0); - exec($init_script.' '.$action, $retval['output'], $retval['retval']); + exec($init_script.' '.$action.' 2>&1', $retval['output'], $retval['retval']); return $retval; } diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 0107cbba1..5bc440750 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -1563,7 +1563,7 @@ class apache2_plugin { if($web_config['check_apache_config'] == 'y') { //* Test if apache starts with the new configuration file $apache_online_status_before_restart = $this->_checkTcp('localhost',80); - $app->log('Apache status is: '.$apache_online_status_before_restart,LOGLEVEL_DEBUG); + $app->log('Apache status is: '.($apache_online_status_before_restart === true? 'running' : 'down'),LOGLEVEL_DEBUG); $retval = $app->services->restartService('httpd','restart'); // $retval['retval'] is 0 on success and > 0 on failure $app->log('Apache restart return value is: '.$retval['retval'],LOGLEVEL_DEBUG); @@ -1577,39 +1577,49 @@ class apache2_plugin { sleep(1); } //* Check if apache restarted successfully if it was online before - $app->log('Apache online status after restart is: '.$apache_online_status_after_restart,LOGLEVEL_DEBUG); + $app->log('Apache online status after restart is: '.($apache_online_status_after_restart === true? 'running' : 'down'),LOGLEVEL_DEBUG); if($apache_online_status_before_restart && !$apache_online_status_after_restart || $retval['retval'] > 0) { $app->log('Apache did not restart after the configuration change for website '.$data['new']['domain'].'. Reverting the configuration. Saved non-working config as '.$vhost_file.'.err',LOGLEVEL_WARN); if(is_array($retval['output']) && !empty($retval['output'])){ $app->log('Reason for Apache restart failure: '.implode("\n", $retval['output']),LOGLEVEL_WARN); + $app->dbmaster->datalogError(implode("\n", $retval['output'])); } else { // if no output is given, check again $webserver_binary = ''; - exec('which apache2', $webserver_check_output, $webserver_check_retval); + exec('which apache2ctl', $webserver_check_output, $webserver_check_retval); if($webserver_check_retval == 0){ - $webserver_binary = 'apache2'; + $webserver_binary = 'apache2ctl'; } else { unset($webserver_check_output, $webserver_check_retval); - exec('which httpd2', $webserver_check_output, $webserver_check_retval); + exec('which apache2', $webserver_check_output, $webserver_check_retval); if($webserver_check_retval == 0){ - $webserver_binary = 'httpd2'; + $webserver_binary = 'apache2'; } else { unset($webserver_check_output, $webserver_check_retval); - exec('which httpd', $webserver_check_output, $webserver_check_retval); + exec('which httpd2', $webserver_check_output, $webserver_check_retval); if($webserver_check_retval == 0){ - $webserver_binary = 'httpd'; + $webserver_binary = 'httpd2'; } else { unset($webserver_check_output, $webserver_check_retval); - exec('which apache', $webserver_check_output, $webserver_check_retval); + exec('which httpd', $webserver_check_output, $webserver_check_retval); if($webserver_check_retval == 0){ - $webserver_binary = 'apache'; + $webserver_binary = 'httpd'; + } else { + unset($webserver_check_output, $webserver_check_retval); + exec('which apache', $webserver_check_output, $webserver_check_retval); + if($webserver_check_retval == 0){ + $webserver_binary = 'apache'; + } } } } } if($webserver_binary != ''){ exec($webserver_binary.' -t 2>&1', $tmp_output, $tmp_retval); - if($tmp_retval > 0 && is_array($tmp_output) && !empty($tmp_output)) $app->log('Reason for Apache restart failure: '.implode("\n", $tmp_output),LOGLEVEL_WARN); + if($tmp_retval > 0 && is_array($tmp_output) && !empty($tmp_output)){ + $app->log('Reason for Apache restart failure: '.implode("\n", $tmp_output),LOGLEVEL_WARN); + $app->dbmaster->datalogError(implode("\n", $tmp_output)); + } unset($tmp_output, $tmp_retval); } } diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index dd9bcd70e..181eedb19 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -940,6 +940,7 @@ class nginx_plugin { if($vhost_data['php'] == 'fast-cgi') $vhost_data['php'] = 'php-fpm'; // Custom rewrite rules + /* $final_rewrite_rules = array(); $custom_rewrite_rules = $data['new']['rewrite_rules']; // Make sure we only have Unix linebreaks @@ -952,6 +953,85 @@ class nginx_plugin { } } $tpl->setLoop('rewrite_rules', $final_rewrite_rules); + */ + + // Custom rewrite rules + $final_rewrite_rules = array(); + + if(isset($data['new']['rewrite_rules']) && trim($data['new']['rewrite_rules']) != '') { + $custom_rewrite_rules = trim($data['new']['rewrite_rules']); + $custom_rewrites_are_valid = true; + // use this counter to make sure all curly brackets are properly closed + $if_level = 0; + // Make sure we only have Unix linebreaks + $custom_rewrite_rules = str_replace("\r\n", "\n", $custom_rewrite_rules); + $custom_rewrite_rules = str_replace("\r", "\n", $custom_rewrite_rules); + $custom_rewrite_rule_lines = explode("\n", $custom_rewrite_rules); + if(is_array($custom_rewrite_rule_lines) && !empty($custom_rewrite_rule_lines)){ + foreach($custom_rewrite_rule_lines as $custom_rewrite_rule_line){ + // ignore comments + if(substr(ltrim($custom_rewrite_rule_line),0,1) == '#'){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + continue; + } + // empty lines + if(trim($custom_rewrite_rule_line) == ''){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + continue; + } + // rewrite + if(preg_match('@^\s*rewrite\s+(^/)?\S+(\$)?\s+\S+(\s+(last|break|redirect|permanent|))?\s*;\s*$@', $custom_rewrite_rule_line)){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + continue; + } + // if + if(preg_match('@^\s*if\s+\(\s*\$\S+(\s+(\!?(=|~|~\*))\s+(\S+|\".+\"))?\s*\)\s*\{\s*$@', $custom_rewrite_rule_line)){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + $if_level += 1; + continue; + } + // if - check for files, directories, etc. + if(preg_match('@^\s*if\s+\(\s*\!?-(f|d|e|x)\s+\S+\s*\)\s*\{\s*$@', $custom_rewrite_rule_line)){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + $if_level += 1; + continue; + } + // break + if(preg_match('@^\s*break\s*;\s*$@', $custom_rewrite_rule_line)){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + continue; + } + // return code [ text ] + if(preg_match('@^\s*return\s+\d\d\d.*;\s*$@', $custom_rewrite_rule_line)){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + continue; + } + // return code URL + // return URL + if(preg_match('@^\s*return(\s+\d\d\d)?\s+(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*\@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*\s*;\s*$@', $custom_rewrite_rule_line)){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + continue; + } + // set + if(preg_match('@^\s*set\s+\$\S+\s+\S+\s*;\s*$@', $custom_rewrite_rule_line)){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + continue; + } + // closing curly bracket + if(trim($custom_rewrite_rule_line) == '}'){ + $final_rewrite_rules[] = array('rewrite_rule' => $custom_rewrite_rule_line); + $if_level -= 1; + continue; + } + $custom_rewrites_are_valid = false; + break; + } + } + if(!$custom_rewrites_are_valid || $if_level != 0){ + $final_rewrite_rules = array(); + } + } + $tpl->setLoop('rewrite_rules', $final_rewrite_rules); // Custom nginx directives $final_nginx_directives = array(); @@ -1538,7 +1618,7 @@ class nginx_plugin { if($web_config['check_apache_config'] == 'y') { //* Test if nginx starts with the new configuration file $nginx_online_status_before_restart = $this->_checkTcp('localhost',80); - $app->log('nginx status is: '.$nginx_online_status_before_restart,LOGLEVEL_DEBUG); + $app->log('nginx status is: '.($nginx_online_status_before_restart === true? 'running' : 'down'),LOGLEVEL_DEBUG); $retval = $app->services->restartService('httpd','restart'); // $retval['retval'] is 0 on success and > 0 on failure $app->log('nginx restart return value is: '.$retval['retval'],LOGLEVEL_DEBUG); @@ -1548,15 +1628,19 @@ class nginx_plugin { //* Check if nginx restarted successfully if it was online before $nginx_online_status_after_restart = $this->_checkTcp('localhost',80); - $app->log('nginx online status after restart is: '.$nginx_online_status_after_restart,LOGLEVEL_DEBUG); + $app->log('nginx online status after restart is: '.($nginx_online_status_after_restart === true? 'running' : 'down'),LOGLEVEL_DEBUG); if($nginx_online_status_before_restart && !$nginx_online_status_after_restart || $retval['retval'] > 0) { $app->log('nginx did not restart after the configuration change for website '.$data['new']['domain'].'. Reverting the configuration. Saved non-working config as '.$vhost_file.'.err',LOGLEVEL_WARN); if(is_array($retval['output']) && !empty($retval['output'])){ $app->log('Reason for nginx restart failure: '.implode("\n", $retval['output']),LOGLEVEL_WARN); + $app->dbmaster->datalogError(implode("\n", $retval['output'])); } else { // if no output is given, check again exec('nginx -t 2>&1', $tmp_output, $tmp_retval); - if($tmp_retval > 0 && is_array($tmp_output) && !empty($tmp_output)) $app->log('Reason for nginx restart failure: '.implode("\n", $tmp_output),LOGLEVEL_WARN); + if($tmp_retval > 0 && is_array($tmp_output) && !empty($tmp_output)){ + $app->log('Reason for nginx restart failure: '.implode("\n", $tmp_output),LOGLEVEL_WARN); + $app->dbmaster->datalogError(implode("\n", $tmp_output)); + } unset($tmp_output, $tmp_retval); } $app->system->copy($vhost_file,$vhost_file.'.err'); diff --git a/server/server.php b/server/server.php index 38baa772d..2ead49043 100644 --- a/server/server.php +++ b/server/server.php @@ -71,7 +71,8 @@ if ($app->dbmaster->connect_error == NULL) { unset($server_db_record); // retrieve admin email address for notifications - $sys_ini = $app->dbmaster->queryOneRecord("SELECT * FROM sys_ini WHERE sysini_id = 1"); + //$sys_ini = $app->dbmaster->queryOneRecord("SELECT * FROM sys_ini WHERE sysini_id = 1"); + $sys_ini = $app->db->queryOneRecord("SELECT * FROM sys_ini WHERE sysini_id = 1"); $conf['sys_ini'] = $app->ini_parser->parse_ini_string(stripslashes($sys_ini['config'])); $conf['admin_mail'] = $conf['sys_ini']['mail']['admin_mail']; unset($sys_ini); -- GitLab