From 532ae591db5b5f020abf60609ded0d2d32b76d86 Mon Sep 17 00:00:00 2001
From: latham <latham@ispconfig3>
Date: Fri, 08 Apr 2011 15:50:11 -0400
Subject: [PATCH] Remove DOS line returns lathama
---
interface/web/sites/templates/web_subdomain_edit.htm | 84
interface/web/js/yui/logger/assets/logger.css | 40
interface/web/mail/templates/spamfilter_config_getmail_edit.htm | 44
interface/web/client/templates/client_edit_address.htm | 228
interface/web/mail/templates/mail_transport_edit.htm | 112
interface/web/themes/default/yaml/screen/content_default.css | 340
interface/web/dns/dns_soa_del.php | 136
interface/web/sites/cron_del.php | 126
interface/web/themes/default/yaml/print/print_123_draft.css | 78
server/mods-available/remoteaction_core_module.inc.php | 406
interface/web/themes/default/yaml/print/print_023_draft.css | 80
interface/lib/classes/plugin_dbhistory.inc.php | 136
interface/web/dashboard/dashlets/modules.php | 108
interface/web/monitor/templates/show_log.htm | 50
interface/web/themes/default/css/central.css | 64
interface/web/designer/lib/lang/fr_module_edit.lng | 4
interface/web/mail/templates/mail_domain_admin_list.htm | 24
interface/web/dns/dns_rr_del.php | 132
interface/web/sites/lib/lang/en_web_domain.lng | 148
interface/web/sites/templates/ftp_user_edit.htm | 96
interface/web/themes/default/yaml/screen/basemod_draft.css | 138
interface/web/themes/default/templates/tabbed_form.tpl.htm | 56
interface/web/mail/lib/lang/en_spamfilter_whitelist_list.lng | 16
interface/web/themes/default/yaml/navigation/nav_vlist.css | 216
helper_scripts/setup_in_openvz/recreate_ssh_and_hostname.sh | 36
interface/web/mail/mailinglist.php | 134
interface/web/admin/templates/server_edit_config.htm | 44
interface/web/designer/lib/lang/id_module_edit.lng | 20
interface/web/themes/default/templates/module_tree.tpl.htm | 74
interface/web/mail/templates/spamfilter_policy_edit.htm | 128
interface/web/mail/templates/mail_user_custom_rules_edit.htm | 44
interface/web/themes/default/yaml/print/print_020_draft.css | 60
interface/web/mail/lib/lang/en_mail_alias_list.lng | 14
interface/web/themes/default/yaml/print/print_120_draft.css | 78
interface/web/themes/default/css/patches/central.css | 74
interface/web/sites/templates/shell_user_advanced.htm | 68
interface/web/admin/lib/lang/en_server_config.lng | 162
interface/index.htm | 16
interface/web/dns/templates/dns_records_edit.htm | 24
interface/web/themes/default/yaml/core/base.css | 458
install/install.php | 980
interface/web/mail/templates/spamfilter_config_server_edit.htm | 76
interface/web/monitor/templates/show_data.htm | 24
interface/web/monitor/templates/datalog_list.htm | 98
interface/web/mail/templates/spamfilter_other_edit.htm | 160
interface/web/admin/templates/software_repo_edit.htm | 80
interface/web/sites/templates/cron_edit.htm | 136
interface/web/login/templates/password_reset.htm | 66
interface/web/mail/lib/lang/en_mail_domain_admin_list.lng | 14
interface/web/domain/lib/admin.conf.php | 56
interface/web/mail/lib/lang/en_mail_mailinglist_list.lng | 8
interface/web/designer/templates/form_edit.htm | 156
interface/web/dns/form/dns_template.tform.php | 200
interface/web/sites/lib/lang/en_web_domain_admin_list.lng | 16
interface/web/sites/templates/web_aliasdomain_edit.htm | 112
interface/web/mail/lib/lang/en_spamfilter_policy_list.lng | 16
interface/web/themes/default/css/print/print_100.css | 62
interface/web/mail/mail_mailinglist_del.php | 114
interface/web/mail/templates/mail_content_filter_edit.htm | 100
interface/web/sites/templates/user_quota_stats_list.htm | 12
interface/web/sites/templates/ftp_user_advanced.htm | 100
interface/web/mail/form/mail_mailinglist.tform.php | 242
interface/web/mail/lib/admin.conf.php | 2
interface/web/mail/templates/mail_relay_recipient_list.htm | 18
interface/web/tools/templates/user_settings.htm | 88
interface/lib/classes/session.inc.php | 256
interface/web/themes/default/yaml/print/print_003_draft.css | 62
install/autoupdate.php | 628
interface/web/mail/templates/mail_whitelist_edit.htm | 82
interface/web/mail/lib/lang/en_mail_transport_list.lng | 16
interface/lib/classes/form.inc.php | 948
server/mods-available/mail_module.inc.php | 322
interface/web/mail/mail_mailinglist_list.php | 86
interface/web/temp/en.lng | 302
interface/web/dashboard/dashlets/limits.php | 354
interface/web/mail/templates/mail_domain_catchall_edit.htm | 76
interface/web/dns/dns_a_list.php | 46
server/plugins-available/mailman_plugin.inc.php | 310
interface/web/dns/lib/admin.conf.php | 2
interface/web/themes/default/yaml/patches/patch_layout_draft.css | 58
interface/web/index.php | 80
interface/web/client/templates/reseller_edit_limits.htm | 374
interface/lib/classes/tpl_error.inc.php | 182
interface/web/admin/templates/language_list.htm | 94
interface/web/mail/templates/spamfilter_taglevel_edit.htm | 104
interface/web/admin/templates/server_config_cron_edit.htm | 60
interface/web/dns/dns_template_del.php | 114
interface/web/help/templates/support_message_edit.htm | 66
interface/web/sites/lib/lang/en_user_quota_stats_list.lng | 14
interface/web/monitor/templates/show_sys_state.htm | 50
interface/lib/classes/validate_dns.inc.php | 572
interface/web/dns/dns_slave_del.php | 136
interface/web/mail/templates/mail_mailinglist_edit.htm | 160
interface/web/client/form/client_template.tform.php | 1048
interface/web/themes/default/yaml/core/slim_print_base.css | 40
interface/web/sites/templates/webdav_user_edit.htm | 116
interface/web/themes/default/yaml/print/print_100_draft.css | 62
interface/web/admin/templates/software_update_list.htm | 98
install/dist/conf/debian60.conf.php | 388
interface/web/admin/templates/firewall_edit.htm | 76
interface/web/dns/list/dns_template.list.php | 158
interface/web/mail/lib/lang/en_mail_whitelist_list.lng | 18
interface/web/sites/templates/web_domain_redirect.htm | 56
interface/web/mail/lib/lang/en_spamfilter_users_list.lng | 18
interface/web/designer/templates/paging.tpl.htm | 16
interface/web/mail/lib/lang/en_mail_blacklist_list.lng | 18
interface/web/mail/lib/lang/en_mail_domain_catchall_list.lng | 16
interface/web/admin/templates/server_ip_edit.htm | 68
interface/web/themes/default/yaml/debug/debug.css | 314
docs/INSTALL_FEDORA_9.txt | 430
interface/web/sites/templates/shell_user_edit.htm | 132
interface/web/themes/default/css/screen/uni-form-generic.css | 270
interface/web/admin/form/system_config.tform.php | 540
interface/web/themes/default_64_navimg/css/additional.css | 118
interface/web/mail/templates/spamfilter_config_mail_edit.htm | 132
install/sql/README.txt | 78
interface/web/themes/default/yaml/!important.txt | 8
interface/web/themes/default/yaml/core/print_base.css | 240
interface/web/mail/templates/spamfilter_quarantine_edit.htm | 88
interface/web/sites/lib/admin.conf.php | 2
interface/web/client/form/reseller.tform.php | 1622 +-
interface/web/sites/templates/database_admin_list.htm | 36
install/sql/incremental/upd_0007.sql | 36
interface/web/nav.php | 228
interface/web/admin/templates/remote_action_osupdate.htm | 50
install/dist/conf/debian40.conf.php | 388
interface/web/admin/templates/server_config_getmail_edit.htm | 44
interface/web/sites/templates/web_domain_admin_list.htm | 30
interface/web/sites/templates/ftp_user_advanced_client.htm | 44
interface/web/designer/templates/form_show.htm | 120
interface/web/mail/lib/lang/fr_mail_user.lng | 4
interface/web/tools/form/user_settings.tform.php | 328
interface/web/mail/lib/lang/en_mail_mailinglist.lng | 28
helper_scripts/setup_in_openvz/install_server.sh | 122
interface/web/dashboard/lib/custom_menu.inc.php | 152
interface/web/client/templates/client_template_edit_limits.htm | 272
interface/web/themes/default/yaml/core/slim_iehacks.css | 70
interface/web/client/templates/client_edit_limits.htm | 404
interface/web/mail/lib/lang/en_mail_forward_list.lng | 14
server/lib/classes/tpl_error.inc.php | 182
interface/web/admin/templates/software_package_list.htm | 92
interface/web/designer/lib/lang/pl_module_edit.lng | 20
interface/web/admin/templates/server_config_vlogger_edit.htm | 44
interface/web/themes/default/templates/module.tpl.htm | 72
interface/web/mail/lib/lang/en_mail_spamfilter_list.lng | 14
interface/web/dns/templates/dns_template_edit.htm | 76
interface/web/admin/templates/software_package_install.htm | 58
interface/web/capp.php | 110
interface/web/mail/templates/mail_user_stats_list.htm | 104
interface/web/sites/lib/lang/en_database_admin_list.lng | 18
interface/web/mail/mail_mailinglist_edit.php | 512
interface/web/mail/templates/mail_blacklist_edit.htm | 82
interface/web/monitor/templates/syslog_list.htm | 112
server/lib/classes/tpl_cache.inc.php | 370
interface/web/admin/templates/language_edit.htm | 64
install/update.php | 716
interface/web/monitor/lib/admin.conf.php | 2
interface/web/themes/default/templates/sidenav.tpl.htm | 48
interface/web/mail/mail_domain_del.php | 194
interface/lib/classes/plugin_base.inc.php | 126
interface/web/admin/form/remote_user.tform.php | 318
install/lib/installer_base.lib.php | 3564 ++--
interface/web/dns/dns_template_list.php | 46
interface/lib/classes/remoting.inc.php | 4770 +++---
interface/web/themes/default/yaml/core/slim_base.css | 98
interface/web/admin/templates/users_user_edit.htm | 134
interface/web/themes/default/css/screen/basemod_2col_left_seo.css | 96
interface/web/dashboard/templates/custom_menu.htm | 14
helper_scripts/setup_in_openvz/diff_openssl.cnf | 50
interface/web/themes/default/templates/topnav.tpl.htm | 18
interface/web/admin/templates/server_config_fastcgi_edit.htm | 92
interface/web/themes/default/yaml/print/print_103_draft.css | 74
docs/INSTALL_OPENSUSE_11.txt | 402
interface/web/mail/templates/mail_mailinglist_list.htm | 106
interface/lib/classes/auth.inc.php | 256
interface/web/themes/default/yaml/patches/patch_nav_vlist.css | 122
interface/lib/classes/functions.inc.php | 220
interface/web/admin/form/users.tform.php | 910
interface/web/admin/templates/remote_action_ispcupdate.htm | 50
interface/web/mail/templates/spamfilter_whitelist_edit.htm | 98
interface/web/help/templates/support_message_view.htm | 48
interface/web/designer/lib/lang/nl_module_edit.lng | 20
interface/web/mail/templates/mail_get_edit.htm | 108
interface/web/admin/lib/lang/en_users.lng | 56
interface/web/mail/lib/module.conf.php | 398
interface/web/client/lib/admin.conf.php | 2
interface/web/client/templates/client_template_edit_template.htm | 56
interface/web/mail/list/mail_mailinglist.list.php | 132
interface/web/admin/templates/server_config_jailkit_edit.htm | 68
interface/web/mail/templates/spamfilter_blacklist_edit.htm | 98
interface/web/admin/templates/language_add.htm | 64
interface/web/client/form/client.tform.php | 1720 +-
interface/web/themes/default/yaml/core/iehacks.css | 620
interface/web/mail/mail_domain_edit.php | 738
interface/lib/classes/tpl_cache.inc.php | 370
interface/web/themes/default_no_navimg/css/additional.css | 118
interface/web/mail/templates/spamfilter_users_edit.htm | 100
interface/web/designer/lib/lang/cz_module_edit.lng | 20
interface/web/domain/lib/lang/en_domain_list.lng | 8
interface/web/admin/form/firewall.tform.php | 222
interface/web/themes/default/licences.txt | 16
interface/web/mail/templates/mail_alias_edit.htm | 78
interface/web/sites/cron_list.php | 44
interface/web/admin/templates/groups_edit.htm | 52
interface/web/admin/templates/users_groups_edit.htm | 60
interface/web/js/yui/datatable/assets/datatable.css | 152
interface/web/designer/lib/admin.conf.php | 6
interface/web/mail/lib/lang/id_mail_alias_list.lng | 14
docs/INSTALL_OPENSUSE_11_1.txt | 420
interface/web/themes/default/css/screen/content.css | 376
210 files changed, 20,982 insertions(+), 20,982 deletions(-)
diff --git a/docs/INSTALL_FEDORA_9.txt b/docs/INSTALL_FEDORA_9.txt
index 13bce90..7f1531f 100644
--- a/docs/INSTALL_FEDORA_9.txt
+++ b/docs/INSTALL_FEDORA_9.txt
@@ -1,215 +1,215 @@
-
-Installation
------------
-
-It is recommended to use a clean (fresh) Fedora install. Then follow the steps below to setup your server with ISPConfig 3:
-
-Installation of some basic requirements:
-
-rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
-yum update
-yum groupinstall 'Development Tools'
-yum groupinstall 'Development Libraries'
-
-You should disable selinux now, as some programs will not start when selinux is enabled:
-
-vi /etc/selinux/config
-
-and set:
-
-SELINUX=disabled
-
-then reboot the server.
-
-
-1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin with the following command line (on one line!):
-
-yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpMyAdmin pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel getmail
-
-useradd -m -s /bin/bash compileuser
-passwd compileuser
-
-visudo
-
-## Allow root to run any commands anywhere
-root ALL=(ALL) ALL
-compileuser ALL=(ALL) ALL
-
-
-su compileuser
-
-mkdir $HOME/rpm
-mkdir $HOME/rpm/SOURCES
-mkdir $HOME/rpm/SPECS
-mkdir $HOME/rpm/BUILD
-mkdir $HOME/rpm/SRPMS
-mkdir $HOME/rpm/RPMS
-mkdir $HOME/rpm/RPMS/i386
-
-echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros
-
-
-wget http://prdownloads.sourceforge.net/courier/courier-authlib-0.61.0.tar.bz2
-wget http://prdownloads.sourceforge.net/courier/courier-imap-4.4.1.tar.bz2
-wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2
-
-sudo rpmbuild -ta courier-authlib-0.61.0.tar.bz2
-
-sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-0.61.0-1.fc9.i386.rpm
-sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-mysql-0.61.0-1.fc9.i386.rpm
-sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-devel-0.61.0-1.fc9.i386.rpm
-
-rpmbuild -ta courier-imap-4.4.1.tar.bz2
-
-sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-imap-4.4.1-1.9.i386.rpm
-
-sudo rpmbuild -ta maildrop-2.0.4.tar.bz2
-
-sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/maildrop-2.0.4-1.9.i386.rpm
-
-exit
-
-yum install postfix
-
-chkconfig --levels 235 mysqld on
-/etc/init.d/mysqld start
-
-chkconfig --levels 235 httpd on
-/etc/init.d/httpd start
-
-chkconfig --levels 235 courier-authlib on
-/etc/init.d/courier-authlib start
-
-chkconfig --levels 235 sendmail off
-chkconfig --levels 235 postfix on
-chkconfig --levels 235 saslauthd on
-/etc/init.d/sendmail stop
-/etc/init.d/postfix start
-/etc/init.d/saslauthd start
-
-chkconfig --levels 235 courier-imap on
-/etc/init.d/courier-authlib restart
-/etc/init.d/courier-imap restart
-
-
-Set the mysql database password:
-
-mysqladmin -u root password yourrootsqlpassword
-mysqladmin -h ispconfig.local -u root password yourrootsqlpassword
-
-
-2) Install Amavisd-new, Spamassassin and Clamav (1 line!):
-
-yum install amavisd-new spamassassin clamav clamav-data clamav-server clamav-update unzip bzip2 unrar
-
-chkconfig --levels 235 amavisd on
-chkconfig --levels 235 clamd.amavisd on
-/usr/bin/freshclam
-/etc/init.d/amavisd start
-/etc/init.d/clamd.amavisd start
-
-3) Install apache, PHP5 and phpmyadmin (1 line!):
-
-yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel phpmyadmin
-
-
-4) Install pure-ftpd and quota
-
-yum install pure-ftpd quota
-
-chkconfig --levels 235 pure-ftpd on
-
-5) Install mydns
-
-rpm -i http://mydns.bboy.net/download/mydns-mysql-1.1.0-1.i386.rpm
-
-chkconfig --levels 235 mydns on
-
-6) Install vlogger and webalizer
-
-yum install webalizer perl-DateTime-Format-HTTP perl-DateTime-Format-Builder
-
-cd /tmp
-wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
-tar xvfz vlogger-1.3.tar.gz
-mv vlogger-1.3/vlogger /usr/sbin/
-rm -rf vlogger*
-
-7) Configure the firewall
-
-Now you should switch off the firewall by running:
-
-system-config-firewall-tui
-
-ISPConfig comes with a iptables bsed firewall script that can be meneged from within the ispconfig interface.
-
-
-8) Install ISPConfig 3
-
-There are two possile scenarios, but not both:
-8.1) Install the latest released version
-8.2) Install directly from SVN
-
-8.1) Installation of beta 3 from tar.gz
-
- cd /tmp
- wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
- tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
- cd ispconfig3_install/install/
-
-8.2) Installation from SVN
-
- yum install subversion
- cd /tmp
- svn export svn://svn.ispconfig.org/ispconfig3/trunk/
- cd trunk/install
-
-
-8.1+8.2) Now proceed with the ISPConfig installation.
-
-Now start the installation process by executing:
-
-php -q install.php
-
-The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!):
-
-http://192.168.0.100:8080/
-
-the default login is:
-
-user: admin
-password: admin
-
-In case you get a permission denied error from apache, please restart the apache webserver process.
-
-Optional:
-
-Install a webbased Email Client
-
-yum install squirrelmail
-
-
-----------------------------------------------------------------------------------------------------------
-
-Hints:
-
-debian 4.0 under openvz:
-
-VPSID=101
-for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
-do
- vzctl set $VPSID --capability ${CAP}:on --save
-done
-
-----------------------------------------------------------------------------------------------------------
-
-Installing Jailkit:
-
-cd /tmp
-wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
-tar xvfz jailkit-2.5.tar.gz
-cd jailkit-2.5
-./configure
-make
-make install
-rm -rf jailkit-2.5*
+
+Installation
+-----------
+
+It is recommended to use a clean (fresh) Fedora install. Then follow the steps below to setup your server with ISPConfig 3:
+
+Installation of some basic requirements:
+
+rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
+yum update
+yum groupinstall 'Development Tools'
+yum groupinstall 'Development Libraries'
+
+You should disable selinux now, as some programs will not start when selinux is enabled:
+
+vi /etc/selinux/config
+
+and set:
+
+SELINUX=disabled
+
+then reboot the server.
+
+
+1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin with the following command line (on one line!):
+
+yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpMyAdmin pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel getmail
+
+useradd -m -s /bin/bash compileuser
+passwd compileuser
+
+visudo
+
+## Allow root to run any commands anywhere
+root ALL=(ALL) ALL
+compileuser ALL=(ALL) ALL
+
+
+su compileuser
+
+mkdir $HOME/rpm
+mkdir $HOME/rpm/SOURCES
+mkdir $HOME/rpm/SPECS
+mkdir $HOME/rpm/BUILD
+mkdir $HOME/rpm/SRPMS
+mkdir $HOME/rpm/RPMS
+mkdir $HOME/rpm/RPMS/i386
+
+echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros
+
+
+wget http://prdownloads.sourceforge.net/courier/courier-authlib-0.61.0.tar.bz2
+wget http://prdownloads.sourceforge.net/courier/courier-imap-4.4.1.tar.bz2
+wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2
+
+sudo rpmbuild -ta courier-authlib-0.61.0.tar.bz2
+
+sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-0.61.0-1.fc9.i386.rpm
+sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-mysql-0.61.0-1.fc9.i386.rpm
+sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-devel-0.61.0-1.fc9.i386.rpm
+
+rpmbuild -ta courier-imap-4.4.1.tar.bz2
+
+sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-imap-4.4.1-1.9.i386.rpm
+
+sudo rpmbuild -ta maildrop-2.0.4.tar.bz2
+
+sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/maildrop-2.0.4-1.9.i386.rpm
+
+exit
+
+yum install postfix
+
+chkconfig --levels 235 mysqld on
+/etc/init.d/mysqld start
+
+chkconfig --levels 235 httpd on
+/etc/init.d/httpd start
+
+chkconfig --levels 235 courier-authlib on
+/etc/init.d/courier-authlib start
+
+chkconfig --levels 235 sendmail off
+chkconfig --levels 235 postfix on
+chkconfig --levels 235 saslauthd on
+/etc/init.d/sendmail stop
+/etc/init.d/postfix start
+/etc/init.d/saslauthd start
+
+chkconfig --levels 235 courier-imap on
+/etc/init.d/courier-authlib restart
+/etc/init.d/courier-imap restart
+
+
+Set the mysql database password:
+
+mysqladmin -u root password yourrootsqlpassword
+mysqladmin -h ispconfig.local -u root password yourrootsqlpassword
+
+
+2) Install Amavisd-new, Spamassassin and Clamav (1 line!):
+
+yum install amavisd-new spamassassin clamav clamav-data clamav-server clamav-update unzip bzip2 unrar
+
+chkconfig --levels 235 amavisd on
+chkconfig --levels 235 clamd.amavisd on
+/usr/bin/freshclam
+/etc/init.d/amavisd start
+/etc/init.d/clamd.amavisd start
+
+3) Install apache, PHP5 and phpmyadmin (1 line!):
+
+yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel phpmyadmin
+
+
+4) Install pure-ftpd and quota
+
+yum install pure-ftpd quota
+
+chkconfig --levels 235 pure-ftpd on
+
+5) Install mydns
+
+rpm -i http://mydns.bboy.net/download/mydns-mysql-1.1.0-1.i386.rpm
+
+chkconfig --levels 235 mydns on
+
+6) Install vlogger and webalizer
+
+yum install webalizer perl-DateTime-Format-HTTP perl-DateTime-Format-Builder
+
+cd /tmp
+wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
+tar xvfz vlogger-1.3.tar.gz
+mv vlogger-1.3/vlogger /usr/sbin/
+rm -rf vlogger*
+
+7) Configure the firewall
+
+Now you should switch off the firewall by running:
+
+system-config-firewall-tui
+
+ISPConfig comes with a iptables bsed firewall script that can be meneged from within the ispconfig interface.
+
+
+8) Install ISPConfig 3
+
+There are two possile scenarios, but not both:
+8.1) Install the latest released version
+8.2) Install directly from SVN
+
+8.1) Installation of beta 3 from tar.gz
+
+ cd /tmp
+ wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
+ tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
+ cd ispconfig3_install/install/
+
+8.2) Installation from SVN
+
+ yum install subversion
+ cd /tmp
+ svn export svn://svn.ispconfig.org/ispconfig3/trunk/
+ cd trunk/install
+
+
+8.1+8.2) Now proceed with the ISPConfig installation.
+
+Now start the installation process by executing:
+
+php -q install.php
+
+The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!):
+
+http://192.168.0.100:8080/
+
+the default login is:
+
+user: admin
+password: admin
+
+In case you get a permission denied error from apache, please restart the apache webserver process.
+
+Optional:
+
+Install a webbased Email Client
+
+yum install squirrelmail
+
+
+----------------------------------------------------------------------------------------------------------
+
+Hints:
+
+debian 4.0 under openvz:
+
+VPSID=101
+for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
+do
+ vzctl set $VPSID --capability ${CAP}:on --save
+done
+
+----------------------------------------------------------------------------------------------------------
+
+Installing Jailkit:
+
+cd /tmp
+wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
+tar xvfz jailkit-2.5.tar.gz
+cd jailkit-2.5
+./configure
+make
+make install
+rm -rf jailkit-2.5*
diff --git a/docs/INSTALL_OPENSUSE_11.txt b/docs/INSTALL_OPENSUSE_11.txt
index a9176cb..de8c0a0 100644
--- a/docs/INSTALL_OPENSUSE_11.txt
+++ b/docs/INSTALL_OPENSUSE_11.txt
@@ -1,201 +1,201 @@
-
-Installation
------------
-
-It is recommended to use a clean (fresh) OpenSUSE installatiom where you selected to install just the minimal packages. A Gnome or KDE desktop is not needed and will just slow down the server. Then follow the steps below to setup your server with ISPConfig 3:
-
-Install some basic packes and the compilers that we need later
-
-yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ make vim telnet cron iptables iputils man man-pages
-
-1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin with the following command line (on one line!):
-
-yast2 -i postfix postfix-mysql mysql mysql-client phpMyAdmin courier-imap courier-authlib courier-authlib-mysql python cron cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd libmysqlclient-devel
-
-chkconfig --add mysql
-/etc/init.d/mysql start
-
-chkconfig --add postfix
-/etc/init.d/postfix start
-
-chkconfig --add saslauthd
-/etc/init.d/saslauthd start
-
-chkconfig --add saslauthd
-/etc/init.d/saslauthd start
-
-chkconfig --add fam
-chkconfig --add courier-authdaemon
-chkconfig --add courier-pop
-chkconfig --add courier-imap
-/etc/init.d/courier-pop start
-/etc/init.d/courier-imap start
-chkconfig --add courier-pop-ssl
-chkconfig --add courier-imap-ssl
-/etc/init.d/courier-pop-ssl start
-/etc/init.d/courier-imap-ssl start
-
-cd /tmp
-wget http://download.opensuse.org/repositories/server:/mail/openSUSE_11.0/i586/getmail-4.7.6-1.4.i586.rpm
-rpm -i getmail-4.7.6-1.4.i586.rpm
-
-// Warnings like "warning: getmail-4.7.6-1.4.i586.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" can be ignored.
-
-// Install maildrop
-rpm --force -i http://download.opensuse.org/repositories/home%3A/cboltz/openSUSE_10.3/i586/maildrop-2.0.3-16.1.i586.rpm
-
-// Install pam_mysql
-
-yast2 -i pam-devel
-cd /tmp
-wget http://heanet.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.7RC1.tar.gz
-tar xvfz pam_mysql-0.7RC1.tar.gz
-cd pam_mysql-0.7RC1
-./configure
-make
-make install
-rm -rf pam_mysql-0.7RC1
-rm pam_mysql-0.7RC1.tar.gz
-
-// Set the mysql database password:
-
-mysqladmin -u root password yourrootsqlpassword
-mysqladmin -h ispconfig.local -u root password yourrootsqlpassword
-
-
-2) Install Amavisd-new, Spamassassin and Clamav (1 line!):
-
-yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql
-
-chkconfig --add amavis
-chkconfig --add clamd
-/etc/init.d/amavis start
-/etc/init.d/clamd start
-
-3) Install PHP5 modules (1 line!):
-
-yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dbase php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-ncurses php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl
-
-Then run the following to enable the Apache modules:
-
-a2enmod suexec
-a2enmod rewrite
-a2enmod ssl
-a2enmod actions
-
-chkconfig --add apache2
-/etc/init.d/apache2 start
-
-4) Install pure-ftpd and quota
-
-yast2 -i pure-ftpd quota
-
-// The current pure-ftpd package from SuSE is unstable and segfaults when a file is uploaded,
-// we will replace it with a manually compiled package now:
-
-cd /tmp
-wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.21.tar.gz
-tar xvfz pure-ftpd-1.0.21.tar.gz
-cd pure-ftpd-1.0.21/
-./configure --sysconfdir=/etc/pure-ftpd --with-everything --with-mysql
-make
-make install
-mv /usr/sbin/pure-ftpd /usr/sbin/pure-ftpd.suse
-ln -s /usr/local/sbin/pure-ftpd /usr/sbin/pure-ftpd
-rm -rf pure-ftpd-1.0.21
-rm -f pure-ftpd-1.0.21.tar.gz
-
-chkconfig --add pure-ftpd
-/etc/init.d/pure-ftpd start
-
-
-5) Install mydns
-
-cd /tmp
-wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/server:/dns/SUSE_Factory/i586/mydns-mysql-1.1.0-3.72.i586.rpm
-wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/server:/dns/SUSE_Factory/i586/mydns-1.1.0-3.72.i586.rpm
-rpm -i mydns*.rpm
-rm -rf /tmp/mydns*
-
-chkconfig --add mydns
-
-6) Install vlogger and webalizer
-
-cd /tmp
-wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
-tar xvfz vlogger-1.3.tar.gz
-mv vlogger-1.3/vlogger /usr/sbin/
-rm -rf vlogger*
-
-
-yast2 -i webalizer perl-DateManip
-
-
-7) Install ISPConfig 3
-
-There are two possile scenarios, but not both:
-7.1) Install the latest released version
-7.2) Install directly from SVN
-
-7.1) Installation of beta 3 from tar.gz
-
- cd /tmp
- wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
- tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
- cd ispconfig3_install/install/
-
-7.2) Installation from SVN
-
- yast2 -i subversion
- cd /tmp
- svn export svn://svn.ispconfig.org/ispconfig3/trunk/
- cd trunk/install
-
-
-7.1+7.2) Now proceed with the ISPConfig installation.
-
-Now start the installation process by executing:
-
-php -q install.php
-
-The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!):
-
-http://192.168.0.100:8080/
-
-the default login is:
-
-user: admin
-password: admin
-
-In case you get a permission denied error from apache, please restart the apache webserver process.
-
-Optional:
-
-Install a webbased Email Client
-
-yast2 -i squirrelmail
-
-----------------------------------------------------------------------------------------------------------
-
-Hints:
-
-debian 4.0 under openvz:
-
-VPSID=101
-for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
-do
- vzctl set $VPSID --capability ${CAP}:on --save
-done
-
-----------------------------------------------------------------------------------------------------------
-
-Installing Jailkit:
-
-cd /tmp
-wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
-tar xvfz jailkit-2.5.tar.gz
-cd jailkit-2.5
-./configure
-make
-make install
-rm -rf jailkit-2.5*
+
+Installation
+-----------
+
+It is recommended to use a clean (fresh) OpenSUSE installatiom where you selected to install just the minimal packages. A Gnome or KDE desktop is not needed and will just slow down the server. Then follow the steps below to setup your server with ISPConfig 3:
+
+Install some basic packes and the compilers that we need later
+
+yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ make vim telnet cron iptables iputils man man-pages
+
+1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin with the following command line (on one line!):
+
+yast2 -i postfix postfix-mysql mysql mysql-client phpMyAdmin courier-imap courier-authlib courier-authlib-mysql python cron cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd libmysqlclient-devel
+
+chkconfig --add mysql
+/etc/init.d/mysql start
+
+chkconfig --add postfix
+/etc/init.d/postfix start
+
+chkconfig --add saslauthd
+/etc/init.d/saslauthd start
+
+chkconfig --add saslauthd
+/etc/init.d/saslauthd start
+
+chkconfig --add fam
+chkconfig --add courier-authdaemon
+chkconfig --add courier-pop
+chkconfig --add courier-imap
+/etc/init.d/courier-pop start
+/etc/init.d/courier-imap start
+chkconfig --add courier-pop-ssl
+chkconfig --add courier-imap-ssl
+/etc/init.d/courier-pop-ssl start
+/etc/init.d/courier-imap-ssl start
+
+cd /tmp
+wget http://download.opensuse.org/repositories/server:/mail/openSUSE_11.0/i586/getmail-4.7.6-1.4.i586.rpm
+rpm -i getmail-4.7.6-1.4.i586.rpm
+
+// Warnings like "warning: getmail-4.7.6-1.4.i586.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" can be ignored.
+
+// Install maildrop
+rpm --force -i http://download.opensuse.org/repositories/home%3A/cboltz/openSUSE_10.3/i586/maildrop-2.0.3-16.1.i586.rpm
+
+// Install pam_mysql
+
+yast2 -i pam-devel
+cd /tmp
+wget http://heanet.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.7RC1.tar.gz
+tar xvfz pam_mysql-0.7RC1.tar.gz
+cd pam_mysql-0.7RC1
+./configure
+make
+make install
+rm -rf pam_mysql-0.7RC1
+rm pam_mysql-0.7RC1.tar.gz
+
+// Set the mysql database password:
+
+mysqladmin -u root password yourrootsqlpassword
+mysqladmin -h ispconfig.local -u root password yourrootsqlpassword
+
+
+2) Install Amavisd-new, Spamassassin and Clamav (1 line!):
+
+yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql
+
+chkconfig --add amavis
+chkconfig --add clamd
+/etc/init.d/amavis start
+/etc/init.d/clamd start
+
+3) Install PHP5 modules (1 line!):
+
+yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dbase php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-ncurses php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl
+
+Then run the following to enable the Apache modules:
+
+a2enmod suexec
+a2enmod rewrite
+a2enmod ssl
+a2enmod actions
+
+chkconfig --add apache2
+/etc/init.d/apache2 start
+
+4) Install pure-ftpd and quota
+
+yast2 -i pure-ftpd quota
+
+// The current pure-ftpd package from SuSE is unstable and segfaults when a file is uploaded,
+// we will replace it with a manually compiled package now:
+
+cd /tmp
+wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.21.tar.gz
+tar xvfz pure-ftpd-1.0.21.tar.gz
+cd pure-ftpd-1.0.21/
+./configure --sysconfdir=/etc/pure-ftpd --with-everything --with-mysql
+make
+make install
+mv /usr/sbin/pure-ftpd /usr/sbin/pure-ftpd.suse
+ln -s /usr/local/sbin/pure-ftpd /usr/sbin/pure-ftpd
+rm -rf pure-ftpd-1.0.21
+rm -f pure-ftpd-1.0.21.tar.gz
+
+chkconfig --add pure-ftpd
+/etc/init.d/pure-ftpd start
+
+
+5) Install mydns
+
+cd /tmp
+wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/server:/dns/SUSE_Factory/i586/mydns-mysql-1.1.0-3.72.i586.rpm
+wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/server:/dns/SUSE_Factory/i586/mydns-1.1.0-3.72.i586.rpm
+rpm -i mydns*.rpm
+rm -rf /tmp/mydns*
+
+chkconfig --add mydns
+
+6) Install vlogger and webalizer
+
+cd /tmp
+wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
+tar xvfz vlogger-1.3.tar.gz
+mv vlogger-1.3/vlogger /usr/sbin/
+rm -rf vlogger*
+
+
+yast2 -i webalizer perl-DateManip
+
+
+7) Install ISPConfig 3
+
+There are two possile scenarios, but not both:
+7.1) Install the latest released version
+7.2) Install directly from SVN
+
+7.1) Installation of beta 3 from tar.gz
+
+ cd /tmp
+ wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
+ tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
+ cd ispconfig3_install/install/
+
+7.2) Installation from SVN
+
+ yast2 -i subversion
+ cd /tmp
+ svn export svn://svn.ispconfig.org/ispconfig3/trunk/
+ cd trunk/install
+
+
+7.1+7.2) Now proceed with the ISPConfig installation.
+
+Now start the installation process by executing:
+
+php -q install.php
+
+The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!):
+
+http://192.168.0.100:8080/
+
+the default login is:
+
+user: admin
+password: admin
+
+In case you get a permission denied error from apache, please restart the apache webserver process.
+
+Optional:
+
+Install a webbased Email Client
+
+yast2 -i squirrelmail
+
+----------------------------------------------------------------------------------------------------------
+
+Hints:
+
+debian 4.0 under openvz:
+
+VPSID=101
+for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
+do
+ vzctl set $VPSID --capability ${CAP}:on --save
+done
+
+----------------------------------------------------------------------------------------------------------
+
+Installing Jailkit:
+
+cd /tmp
+wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
+tar xvfz jailkit-2.5.tar.gz
+cd jailkit-2.5
+./configure
+make
+make install
+rm -rf jailkit-2.5*
diff --git a/docs/INSTALL_OPENSUSE_11_1.txt b/docs/INSTALL_OPENSUSE_11_1.txt
index 6688c24..f6ea738 100644
--- a/docs/INSTALL_OPENSUSE_11_1.txt
+++ b/docs/INSTALL_OPENSUSE_11_1.txt
@@ -1,210 +1,210 @@
-
-Installation
------------
-
-It is recommended to use a clean (fresh) OpenSUSE installatiom where you selected to install just the minimal packages. A Gnome or KDE desktop is not needed and will just slow down the server. Then follow the steps below to setup your server with ISPConfig 3:
-
-The following guide is for the 32Bit version of openSUSE, for 64Bit installations the package names may differ especially the names of downloaded rpm files.
-
-Install some basic packes and the compilers that we need later
-
-yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ make vim telnet cron iptables iputils man man-pages nano pico
-
-1) Install Postfix, Courier, Saslauthd, MySQL with the following command line (on one line!):
-
-yast2 -i postfix postfix-mysql mysql mysql-client courier-imap courier-authlib courier-authlib-mysql python cron cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd libmysqlclient-devel
-
-chkconfig --add mysql
-/etc/init.d/mysql start
-
-chkconfig --add postfix
-/etc/init.d/postfix start
-
-chkconfig --add saslauthd
-/etc/init.d/saslauthd start
-
-chkconfig --add saslauthd
-/etc/init.d/saslauthd start
-
-chkconfig --add fam
-chkconfig --add courier-authdaemon
-chkconfig --add courier-pop
-chkconfig --add courier-imap
-/etc/init.d/courier-pop start
-/etc/init.d/courier-imap start
-chkconfig --add courier-pop-ssl
-chkconfig --add courier-imap-ssl
-/etc/init.d/courier-pop-ssl start
-/etc/init.d/courier-imap-ssl start
-
-
-cd /tmp
-wget http://download.opensuse.org/repositories/server:/mail/openSUSE_11.0/i586/getmail-4.7.6-1.4.i586.rpm
-rpm -i getmail-4.7.6-1.4.i586.rpm
-
-// Install maildrop
-wget http://download.opensuse.org/repositories/home:/atzewilms/openSUSE_11.1_Update/i586/maildrop-2.0.4-10.5.i586.rpm
-rpm --force -i maildrop-2.0.4-10.5.i586.rpm
-
-// Install pam_mysql
-yast2 -i pam-devel
-cd /tmp
-wget http://heanet.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.7RC1.tar.gz
-tar xvfz pam_mysql-0.7RC1.tar.gz
-cd pam_mysql-0.7RC1
-./configure
-make
-make install
-rm -rf /tmp/pam_mysql-0.7RC1
-rm /tmp/pam_mysql-0.7RC1.tar.gz
-
-
-// Set the mysql database password:
-
-mysql_secure_installation
-
-
-2) Install Amavisd-new, Spamassassin and Clamav (1 line!):
-
-yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql
-
-chkconfig --add amavis
-chkconfig --add clamd
-/etc/init.d/amavis start
-/etc/init.d/clamd start
-
-2.1) Install apache2
-
-yast2 -i apache2 apache2-mod_fcgid
-
-rpm -i http://download.opensuse.org/repositories/server:/php/server_database_apache_openSUSE_11.0/i586/suphp-0.6.2-10.41.i586.rpm
-
-3) Install PHP5 modules (1 line!):
-
-yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dbase php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-ncurses php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5
-
-Then run the following to enable the Apache modules:
-
-a2enmod suexec
-a2enmod rewrite
-a2enmod ssl
-a2enmod actions
-a2enmod suphp
-a2enmod fcgid
-
-// Fix a suexec permission problem
-
-chown root:www /usr/sbin/suexec2
-chmod 4755 /usr/sbin/suexec2
-
-// and start apache
-
-chkconfig --add apache2
-/etc/init.d/apache2 start
-
-cd /tmp
-
-yast2 -i pwgen
-rpm -i http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.1/noarch/phpMyAdmin-3.1.2-1.1.noarch.rpm
-ln -s /srv/www/htdocs/phpMyAdmin /usr/local/ispconfig/interface/web/phpmyadmin
-
-// Warnings like "warning: phpMyAdmin-3.1.2-1.1.src.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" can be ignored.
-
-4) Install pure-ftpd and quota
-
-yast2 -i pure-ftpd quota
-
-chkconfig --add pure-ftpd
-/etc/init.d/pure-ftpd start
-
-
-5) Install mydns
-
-cd /tmp
-wget http://download.opensuse.org/repositories/home:/bajizs_cnt/openSUSE_11.1/i586/mydns-ng-1.2.8-1.1.i586.rpm
-wget http://download.opensuse.org/repositories/home:/bajizs_cnt/openSUSE_11.1/i586/mydns-ng-mysql-1.2.8-1.1.i586.rpm
-rpm -i mydns*.rpm
-
-chkconfig --add mydns
-
-6) Install vlogger and webalizer
-
-cd /tmp
-wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
-tar xvfz vlogger-1.3.tar.gz
-mv vlogger-1.3/vlogger /usr/sbin/
-rm -rf vlogger*
-yast2 -i webalizer perl-DateManip
-
-6.1 Install fail2ban
-
-rpm -i http://download.opensuse.org/repositories/home:/leonardocf/openSUSE_11.0/i586/fail2ban-0.8.2-5.2.i586.rpm
-
-
-
-
-6.2) Cleanup
-
-rm -f /tmp/*.rpm
-
-6.2 Install jailkit
-
-cd /tmp
-wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
-tar xvfz jailkit-2.5.tar.gz
-cd jailkit-2.5
-./configure
-make
-make install
-cd ..
-rm -rf jailkit-2.5*
-
-
-7) Install ISPConfig 3
-
-There are two possile scenarios, but not both:
-7.1) Install the latest released version
-7.2) Install directly from SVN
-
-7.1) Installation of beta 3 from tar.gz
-
- cd /tmp
- wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
- tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
- cd ispconfig3_install/install/
-
-7.2) Installation from SVN
-
- yast2 -i subversion
- cd /tmp
- svn export svn://svn.ispconfig.org/ispconfig3/trunk/
- cd trunk/install
-
-
-7.1+7.2) Now proceed with the ISPConfig installation.
-
-Now start the installation process by executing:
-
-php -q install.php
-
-// Cleanup
-rm -rf /tmp/trunk
-
-The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!):
-
-http://192.168.0.100:8080/
-
-the default login is:
-
-user: admin
-password: admin
-
-In case you get a permission denied error from apache, please restart the apache webserver process.
-
-Optional:
-
-Install a webbased Email Client
-
-yast2 -i squirrelmail
-
-
+
+Installation
+-----------
+
+It is recommended to use a clean (fresh) OpenSUSE installatiom where you selected to install just the minimal packages. A Gnome or KDE desktop is not needed and will just slow down the server. Then follow the steps below to setup your server with ISPConfig 3:
+
+The following guide is for the 32Bit version of openSUSE, for 64Bit installations the package names may differ especially the names of downloaded rpm files.
+
+Install some basic packes and the compilers that we need later
+
+yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ make vim telnet cron iptables iputils man man-pages nano pico
+
+1) Install Postfix, Courier, Saslauthd, MySQL with the following command line (on one line!):
+
+yast2 -i postfix postfix-mysql mysql mysql-client courier-imap courier-authlib courier-authlib-mysql python cron cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd libmysqlclient-devel
+
+chkconfig --add mysql
+/etc/init.d/mysql start
+
+chkconfig --add postfix
+/etc/init.d/postfix start
+
+chkconfig --add saslauthd
+/etc/init.d/saslauthd start
+
+chkconfig --add saslauthd
+/etc/init.d/saslauthd start
+
+chkconfig --add fam
+chkconfig --add courier-authdaemon
+chkconfig --add courier-pop
+chkconfig --add courier-imap
+/etc/init.d/courier-pop start
+/etc/init.d/courier-imap start
+chkconfig --add courier-pop-ssl
+chkconfig --add courier-imap-ssl
+/etc/init.d/courier-pop-ssl start
+/etc/init.d/courier-imap-ssl start
+
+
+cd /tmp
+wget http://download.opensuse.org/repositories/server:/mail/openSUSE_11.0/i586/getmail-4.7.6-1.4.i586.rpm
+rpm -i getmail-4.7.6-1.4.i586.rpm
+
+// Install maildrop
+wget http://download.opensuse.org/repositories/home:/atzewilms/openSUSE_11.1_Update/i586/maildrop-2.0.4-10.5.i586.rpm
+rpm --force -i maildrop-2.0.4-10.5.i586.rpm
+
+// Install pam_mysql
+yast2 -i pam-devel
+cd /tmp
+wget http://heanet.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.7RC1.tar.gz
+tar xvfz pam_mysql-0.7RC1.tar.gz
+cd pam_mysql-0.7RC1
+./configure
+make
+make install
+rm -rf /tmp/pam_mysql-0.7RC1
+rm /tmp/pam_mysql-0.7RC1.tar.gz
+
+
+// Set the mysql database password:
+
+mysql_secure_installation
+
+
+2) Install Amavisd-new, Spamassassin and Clamav (1 line!):
+
+yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql
+
+chkconfig --add amavis
+chkconfig --add clamd
+/etc/init.d/amavis start
+/etc/init.d/clamd start
+
+2.1) Install apache2
+
+yast2 -i apache2 apache2-mod_fcgid
+
+rpm -i http://download.opensuse.org/repositories/server:/php/server_database_apache_openSUSE_11.0/i586/suphp-0.6.2-10.41.i586.rpm
+
+3) Install PHP5 modules (1 line!):
+
+yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dbase php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-ncurses php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5
+
+Then run the following to enable the Apache modules:
+
+a2enmod suexec
+a2enmod rewrite
+a2enmod ssl
+a2enmod actions
+a2enmod suphp
+a2enmod fcgid
+
+// Fix a suexec permission problem
+
+chown root:www /usr/sbin/suexec2
+chmod 4755 /usr/sbin/suexec2
+
+// and start apache
+
+chkconfig --add apache2
+/etc/init.d/apache2 start
+
+cd /tmp
+
+yast2 -i pwgen
+rpm -i http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.1/noarch/phpMyAdmin-3.1.2-1.1.noarch.rpm
+ln -s /srv/www/htdocs/phpMyAdmin /usr/local/ispconfig/interface/web/phpmyadmin
+
+// Warnings like "warning: phpMyAdmin-3.1.2-1.1.src.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" can be ignored.
+
+4) Install pure-ftpd and quota
+
+yast2 -i pure-ftpd quota
+
+chkconfig --add pure-ftpd
+/etc/init.d/pure-ftpd start
+
+
+5) Install mydns
+
+cd /tmp
+wget http://download.opensuse.org/repositories/home:/bajizs_cnt/openSUSE_11.1/i586/mydns-ng-1.2.8-1.1.i586.rpm
+wget http://download.opensuse.org/repositories/home:/bajizs_cnt/openSUSE_11.1/i586/mydns-ng-mysql-1.2.8-1.1.i586.rpm
+rpm -i mydns*.rpm
+
+chkconfig --add mydns
+
+6) Install vlogger and webalizer
+
+cd /tmp
+wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
+tar xvfz vlogger-1.3.tar.gz
+mv vlogger-1.3/vlogger /usr/sbin/
+rm -rf vlogger*
+yast2 -i webalizer perl-DateManip
+
+6.1 Install fail2ban
+
+rpm -i http://download.opensuse.org/repositories/home:/leonardocf/openSUSE_11.0/i586/fail2ban-0.8.2-5.2.i586.rpm
+
+
+
+
+6.2) Cleanup
+
+rm -f /tmp/*.rpm
+
+6.2 Install jailkit
+
+cd /tmp
+wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
+tar xvfz jailkit-2.5.tar.gz
+cd jailkit-2.5
+./configure
+make
+make install
+cd ..
+rm -rf jailkit-2.5*
+
+
+7) Install ISPConfig 3
+
+There are two possile scenarios, but not both:
+7.1) Install the latest released version
+7.2) Install directly from SVN
+
+7.1) Installation of beta 3 from tar.gz
+
+ cd /tmp
+ wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
+ tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
+ cd ispconfig3_install/install/
+
+7.2) Installation from SVN
+
+ yast2 -i subversion
+ cd /tmp
+ svn export svn://svn.ispconfig.org/ispconfig3/trunk/
+ cd trunk/install
+
+
+7.1+7.2) Now proceed with the ISPConfig installation.
+
+Now start the installation process by executing:
+
+php -q install.php
+
+// Cleanup
+rm -rf /tmp/trunk
+
+The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!):
+
+http://192.168.0.100:8080/
+
+the default login is:
+
+user: admin
+password: admin
+
+In case you get a permission denied error from apache, please restart the apache webserver process.
+
+Optional:
+
+Install a webbased Email Client
+
+yast2 -i squirrelmail
+
+
diff --git a/helper_scripts/setup_in_openvz/diff_openssl.cnf b/helper_scripts/setup_in_openvz/diff_openssl.cnf
index b1973a4..4a3c7e6 100644
--- a/helper_scripts/setup_in_openvz/diff_openssl.cnf
+++ b/helper_scripts/setup_in_openvz/diff_openssl.cnf
@@ -1,25 +1,25 @@
-# diff openssl.cnf /usr/lib/ssl/openssl.cnf
-68c68
-< default_days = 3653 # how long to certify for
----
-> default_days = 365 # how long to certify for
-125c125
-< countryName_default = YOURCOUNTRY
----
-> countryName_default = AU
-130c130
-< stateOrProvinceName_default = YOURPROVINCE
----
-> stateOrProvinceName_default = Some-State
-135c135
-< 0.organizationName_default = YOURDOMAIN
----
-> 0.organizationName_default = Internet Widgits Pty Ltd
-142c142
-< organizationalUnitName_default = ISP
----
-> #organizationalUnitName_default =
-145d144
-< commonName_default = YOURHOSTNAME
-149d147
-< emailAddress_default = postmaster@YOURDOMAIN
+# diff openssl.cnf /usr/lib/ssl/openssl.cnf
+68c68
+< default_days = 3653 # how long to certify for
+---
+> default_days = 365 # how long to certify for
+125c125
+< countryName_default = YOURCOUNTRY
+---
+> countryName_default = AU
+130c130
+< stateOrProvinceName_default = YOURPROVINCE
+---
+> stateOrProvinceName_default = Some-State
+135c135
+< 0.organizationName_default = YOURDOMAIN
+---
+> 0.organizationName_default = Internet Widgits Pty Ltd
+142c142
+< organizationalUnitName_default = ISP
+---
+> #organizationalUnitName_default =
+145d144
+< commonName_default = YOURHOSTNAME
+149d147
+< emailAddress_default = postmaster@YOURDOMAIN
diff --git a/helper_scripts/setup_in_openvz/install_server.sh b/helper_scripts/setup_in_openvz/install_server.sh
index 454aec6..1cc0584 100644
--- a/helper_scripts/setup_in_openvz/install_server.sh
+++ b/helper_scripts/setup_in_openvz/install_server.sh
@@ -1,61 +1,61 @@
-#!/bin/bash
-# Script to configuring an ispconfig3 server in a Debian VPS
-# by calocen [at] gmail [dot] com
-
-# getting some enviromment values
-myhostname=`hostname -f`
-mydomain=`hostname -d`
-myip=`hostname -i`
-[ ! -x /usr/bin/geoiplookup ] && apt-get --assume-yes install geoip-bin
-mycountry=`geoiplookup $myip | cut -f4 -d" " | cut -f1 -d","`
-myprovince=`geoiplookup $myip | cut -f5 -d" "`
-
-# reconfiguring webalizer, postfix
-# could be cool to modify here webalizer values
-dpkg-reconfigure -u webalizer
-postconf -e "myhostname = $myhostname"
-postconf -e "mydestination = $myhostname, localhost"
-echo $myhostname > /etc/mailname
-dpkg-reconfigure -u postfix
-
-# request new password
-oldpwd=`grep password /root/.my.cnf | tr "\t" " " | tr -s " " | cut -f3 -d" "`
-read -p "mysql password: [$oldpwd] " mysqlpwd
-[ -z $mysqlpwd ] && mysqlpwd=$oldpwd
-echo $mysqlpwd
-#read -p "Are you sure? (y/n) " sure
-## who said fear ##
-set -x
-mysqladmin -u root -p$oldpwd password $mysqlpwd
-mysqladmin -u root -p$mysqlpwd -h localhost password $mysqlpwd
-cat << EOF > /root/.my.cnf
-[client]
-password = $mysqlpwd
-EOF
-chmod 600 /root/.my.cnf
-
-# changing mydns password
-mysql -e "SET PASSWORD FOR 'mydns'@'%' = PASSWORD( '$mysqlpwd' )"
-mysql -e "SET PASSWORD FOR 'mydns'@'localhost' = PASSWORD( '$mysqlpwd' )"
-cp -ax /etc/mydns.conf /etc/mydns.conf~
-sed s/$oldpwd/$mysqlpwd/g < /etc/mydns.conf~ > /etc/mydns.conf
-
-# enabling mydns
-mydns --create-tables > /tmp/mydns.sql
-mysql -e "CREATE DATABASE IF NOT EXISTS mydns ; USE mydns ; SOURCE /tmp/mydns.sql;"
-rm /tmp/mydns.*
-invoke-rc.d mydns restart
-
-# preparing server installation
-mv /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf~
-sed s/"YOURHOSTNAME"/"$myhostname"/g < /usr/local/bin/openssl.cnf |
-sed s/"YOURDOMAIN"/"$mydomain"/g | \
-sed s/"YOURCOUNTRY"/"$mycountry"/g | \
-sed s/"YOURPROVINCE"/"$myprovince"/g > /etc/ssl/openssl.cnf
-
-tar xfz /root/downloads/ISPConfig-3.0.0.7-beta.tar.gz -C /usr/local/src
-# here would be some stuff to update from SVN
-cd /usr/local/src/ispconfig3_install/install/
-php -q install.php
-
-
+#!/bin/bash
+# Script to configuring an ispconfig3 server in a Debian VPS
+# by calocen [at] gmail [dot] com
+
+# getting some enviromment values
+myhostname=`hostname -f`
+mydomain=`hostname -d`
+myip=`hostname -i`
+[ ! -x /usr/bin/geoiplookup ] && apt-get --assume-yes install geoip-bin
+mycountry=`geoiplookup $myip | cut -f4 -d" " | cut -f1 -d","`
+myprovince=`geoiplookup $myip | cut -f5 -d" "`
+
+# reconfiguring webalizer, postfix
+# could be cool to modify here webalizer values
+dpkg-reconfigure -u webalizer
+postconf -e "myhostname = $myhostname"
+postconf -e "mydestination = $myhostname, localhost"
+echo $myhostname > /etc/mailname
+dpkg-reconfigure -u postfix
+
+# request new password
+oldpwd=`grep password /root/.my.cnf | tr "\t" " " | tr -s " " | cut -f3 -d" "`
+read -p "mysql password: [$oldpwd] " mysqlpwd
+[ -z $mysqlpwd ] && mysqlpwd=$oldpwd
+echo $mysqlpwd
+#read -p "Are you sure? (y/n) " sure
+## who said fear ##
+set -x
+mysqladmin -u root -p$oldpwd password $mysqlpwd
+mysqladmin -u root -p$mysqlpwd -h localhost password $mysqlpwd
+cat << EOF > /root/.my.cnf
+[client]
+password = $mysqlpwd
+EOF
+chmod 600 /root/.my.cnf
+
+# changing mydns password
+mysql -e "SET PASSWORD FOR 'mydns'@'%' = PASSWORD( '$mysqlpwd' )"
+mysql -e "SET PASSWORD FOR 'mydns'@'localhost' = PASSWORD( '$mysqlpwd' )"
+cp -ax /etc/mydns.conf /etc/mydns.conf~
+sed s/$oldpwd/$mysqlpwd/g < /etc/mydns.conf~ > /etc/mydns.conf
+
+# enabling mydns
+mydns --create-tables > /tmp/mydns.sql
+mysql -e "CREATE DATABASE IF NOT EXISTS mydns ; USE mydns ; SOURCE /tmp/mydns.sql;"
+rm /tmp/mydns.*
+invoke-rc.d mydns restart
+
+# preparing server installation
+mv /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf~
+sed s/"YOURHOSTNAME"/"$myhostname"/g < /usr/local/bin/openssl.cnf |
+sed s/"YOURDOMAIN"/"$mydomain"/g | \
+sed s/"YOURCOUNTRY"/"$mycountry"/g | \
+sed s/"YOURPROVINCE"/"$myprovince"/g > /etc/ssl/openssl.cnf
+
+tar xfz /root/downloads/ISPConfig-3.0.0.7-beta.tar.gz -C /usr/local/src
+# here would be some stuff to update from SVN
+cd /usr/local/src/ispconfig3_install/install/
+php -q install.php
+
+
diff --git a/helper_scripts/setup_in_openvz/recreate_ssh_and_hostname.sh b/helper_scripts/setup_in_openvz/recreate_ssh_and_hostname.sh
index 5ba95c8..72c2ab6 100644
--- a/helper_scripts/setup_in_openvz/recreate_ssh_and_hostname.sh
+++ b/helper_scripts/setup_in_openvz/recreate_ssh_and_hostname.sh
@@ -1,18 +1,18 @@
-#!/bin/bash
-set -x
-echo "" > /etc/resolv.conf
-echo "" > /etc/hostname
-echo "" > /etc/mailname
-rm -f /etc/ssh/ssh_host_*
-cat << EOF > /etc/rc2.d/S15ssh_gen_host_keys
-#!/bin/bash
-ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ''
-ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ''
-dpkg-reconfigure -u webalizer
-postconf -e "myhostname = $(hostname -f)"
-postconf -e "mydestination = $(hostname -f), localhost"
-echo $(hostname -f) > /etc/mailname
-dpkg-reconfigure -u postfix
-rm -f \$0
-EOF
-chmod a+x /etc/rc2.d/S15ssh_gen_host_keys
+#!/bin/bash
+set -x
+echo "" > /etc/resolv.conf
+echo "" > /etc/hostname
+echo "" > /etc/mailname
+rm -f /etc/ssh/ssh_host_*
+cat << EOF > /etc/rc2.d/S15ssh_gen_host_keys
+#!/bin/bash
+ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ''
+ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ''
+dpkg-reconfigure -u webalizer
+postconf -e "myhostname = $(hostname -f)"
+postconf -e "mydestination = $(hostname -f), localhost"
+echo $(hostname -f) > /etc/mailname
+dpkg-reconfigure -u postfix
+rm -f \$0
+EOF
+chmod a+x /etc/rc2.d/S15ssh_gen_host_keys
diff --git a/install/autoupdate.php b/install/autoupdate.php
index d4bbfcd..647fc34 100644
--- a/install/autoupdate.php
+++ b/install/autoupdate.php
@@ -1,314 +1,314 @@
-<?php
-/*
-Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- ISPConfig 3 updater.
-*/
-
-error_reporting(E_ALL|E_STRICT);
-
-/*
- * If the auto-updater flag is not on (the file does not exist) then cancel the auto-update!
-*/
-if (!file_exists('autoupdate')) {
-
- //** The banner on the command line
- echo "\n\n".str_repeat('-',80)."\n";
- echo " _____ ___________ _____ __ _ ____
-|_ _/ ___| ___ \ / __ \ / _(_) /__ \
- | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
- | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
- _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
- \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
- __/ |
- |___/ ";
- echo "\n".str_repeat('-',80)."\n";
- echo "\n\n>>This script is for internal use only! Please use update.php! \n\n";
- exit;
-}
-
-//** Include the library with the basic installer functions
-require_once('lib/install.lib.php');
-
-//** Include the library with the basic updater functions
-require_once('lib/update.lib.php');
-
-//** Include the base class of the installer class
-require_once('lib/installer_base.lib.php');
-
-//** Ensure that current working directory is install directory
-$cur_dir = getcwd();
-if(realpath(dirname(__FILE__)) != $cur_dir) die("Please run installation/update from _inside_ the install directory!\n");
-
-//** Install logfile
-define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log');
-define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../'));
-
-//** Get distribution identifier
-$dist = get_distname();
-
-include_once("/usr/local/ispconfig/server/lib/config.inc.php");
-$conf_old = $conf;
-unset($conf);
-
-if($dist['id'] == '') die('Linux distribution or version not recognized.');
-
-//** Include the distribution-specific installer class library and configuration
-if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once('dist/lib/'.$dist['baseid'].'.lib.php');
-include_once('dist/lib/'.$dist['id'].'.lib.php');
-include_once('dist/conf/'.$dist['id'].'.conf.php');
-
-//** Get hostname
-exec('hostname -f', $tmp_out);
-$conf['hostname'] = $tmp_out[0];
-unset($tmp_out);
-
-//** Set the mysql login information
-$conf["mysql"]["host"] = $conf_old["db_host"];
-$conf["mysql"]["database"] = $conf_old["db_database"];
-$conf['mysql']['charset'] = 'utf8';
-$conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
-$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
-$conf['language'] = $conf_old['language'];
-if($conf['language'] == '{language}') $conf['language'] = 'en';
-
-if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
-if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"];
-if(isset($conf_old["dbmaster_user"])) $conf["mysql"]["master_ispconfig_user"] = $conf_old["dbmaster_user"];
-if(isset($conf_old["dbmaster_password"])) $conf["mysql"]["master_ispconfig_password"] = $conf_old["dbmaster_password"];
-
-//* Check if this is a master / slave setup
-$conf['mysql']['master_slave_setup'] = 'n';
-if($conf["mysql"]["master_host"] != '' && $conf["mysql"]["host"] != $conf["mysql"]["master_host"]) {
- $conf['mysql']['master_slave_setup'] = 'y';
-}
-
-// Resolve the IP address of the mysql hostname.
-if(!$conf['mysql']['ip'] = gethostbyname($conf['mysql']['host'])) die('Unable to resolve hostname'.$conf['mysql']['host']);
-
-$conf['server_id'] = intval($conf_old["server_id"]);
-$conf['ispconfig_log_priority'] = $conf_old["log_priority"];
-
-$inst = new installer();
-$inst->is_update = true;
-
-//** Detect the installed applications
-$inst->find_installed_apps();
-
-//** Initialize the MySQL server connection
-include_once('lib/mysql.lib.php');
-
-//** Database update is a bit brute force and should be rebuild later ;)
-
-/*
- * Try to read the DB-admin settings
- */
-$clientdb_host = '';
-$clientdb_user = '';
-$clientdb_password = '';
-include_once("/usr/local/ispconfig/server/lib/mysql_clientdb.conf");
-$conf["mysql"]["admin_user"] = $clientdb_user;
-$conf["mysql"]["admin_password"] = $clientdb_password;
-$clientdb_host = '';
-$clientdb_user = '';
-$clientdb_password = '';
-
-//** There is a error if user for mysql admin_password if empty
-if( empty($conf["mysql"]["admin_password"]) ) {
- die("internal error - MYSQL-Root passord not known");
-}
-
-/*
- * Prepare the dump of the database
-*/
-prepareDBDump();
-
-//* initialize the database
-$inst->db = new db();
-
-/*
- * The next line is a bit tricky!
- * At the automated update we have no connection to the master-db (we don't need it, because
- * there are only TWO points, where this is needed)
- * 1) update the rights --> the autoupdater sets the rights of all clients when the server is
- * autoupdated)
- * 2) update the server-settings (is web installed, is mail installed) --> the autoupdates
- * doesn't change any of this settings, so there ist no need to update this.
- * This means, the autoupdater did not need any connection to the master-db (only to the local bd
- * of the master-server). To avoid any problems, we set the master-db to the local one.
- */
-$inst->dbmaster = $inst->db;
-
-/*
- * If it is NOT a master-slave - Setup then we are at the Master-DB. So set all rights
-*/
-if($conf['mysql']['master_slave_setup'] != 'y') {
- $inst->grant_master_database_rights();
-}
-
-/*
- * dump the new Database and reconfigure the server.ini
- */
-updateDbAndIni();
-
-/*
- * Reconfigure all Services
- */
-if($conf['services']['mail'] == true) {
- //** Configure postfix
- swriteln('Configuring Postfix');
- $inst->configure_postfix('dont-create-certs');
-
- //** Configure mailman
- swriteln('Configuring Mailman');
- $inst->configure_mailman('update');
-
- //* Configure Jailkit
- swriteln('Configuring Jailkit');
- $inst->configure_jailkit();
-
- if($conf['dovecot']['installed'] == true) {
- //* Configure dovecot
- swriteln('Configuring Dovecot');
- $inst->configure_dovecot();
- } else {
- //** Configure saslauthd
- swriteln('Configuring SASL');
- $inst->configure_saslauthd();
-
- //** Configure PAM
- swriteln('Configuring PAM');
- $inst->configure_pam();
-
- //* Configure courier
- swriteln('Configuring Courier');
- $inst->configure_courier();
- }
-
- //** Configure Spamasassin
- swriteln('Configuring Spamassassin');
- $inst->configure_spamassassin();
-
- //** Configure Amavis
- swriteln('Configuring Amavisd');
- $inst->configure_amavis();
-
- //** Configure Getmail
- swriteln('Configuring Getmail');
- $inst->configure_getmail();
-}
-
-if($conf['services']['web'] == true) {
- //** Configure Pureftpd
- swriteln('Configuring Pureftpd');
- $inst->configure_pureftpd();
-}
-
-if($conf['services']['dns'] == true) {
- //* Configure DNS
- if($conf['powerdns']['installed'] == true) {
- swriteln('Configuring PowerDNS');
- $inst->configure_powerdns();
- } elseif($conf['bind']['installed'] == true) {
- swriteln('Configuring BIND');
- $inst->configure_bind();
- } else {
- swriteln('Configuring MyDNS');
- $inst->configure_mydns();
- }
-}
-
-if($conf['services']['web'] == true) {
- //** Configure Apache
- swriteln('Configuring Apache');
- $inst->configure_apache();
-
- //** Configure vlogger
- swriteln('Configuring vlogger');
- $inst->configure_vlogger();
-
- //** Configure apps vhost
- swriteln('Configuring Apps vhost');
- $inst->configure_apps_vhost();
-}
-
-
-//* Configure DBServer
-swriteln('Configuring Database');
-$inst->configure_dbserver();
-
-
-//if(@is_dir('/etc/Bastille')) {
-//* Configure Firewall
-swriteln('Configuring Firewall');
-$inst->configure_firewall();
-//}
-
-//** Configure ISPConfig
-swriteln('Updating ISPConfig');
-
-
-//** Customise the port ISPConfig runs on
-$conf['apache']['vhost_port'] = get_ispconfig_port_number();
-
-$inst->install_ispconfig();
-
-//** Configure Crontab
-swriteln('Updating Crontab');
-$inst->install_crontab();
-
-//** Restart services:
-swriteln('Restarting services ...');
-if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' reload');
-if($conf['services']['mail']) {
- if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
- if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
- if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
- if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
- if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
- if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
- if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
- if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
- if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
- if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
- if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
-}
-if($conf['services']['web']) {
- if($conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
- if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
-}
-if($conf['services']['dns']) {
- if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
- if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
- if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
-}
-
-echo "Update finished.\n";
-
-?>
+<?php
+/*
+Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ ISPConfig 3 updater.
+*/
+
+error_reporting(E_ALL|E_STRICT);
+
+/*
+ * If the auto-updater flag is not on (the file does not exist) then cancel the auto-update!
+*/
+if (!file_exists('autoupdate')) {
+
+ //** The banner on the command line
+ echo "\n\n".str_repeat('-',80)."\n";
+ echo " _____ ___________ _____ __ _ ____
+|_ _/ ___| ___ \ / __ \ / _(_) /__ \
+ | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
+ | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
+ _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
+ \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
+ __/ |
+ |___/ ";
+ echo "\n".str_repeat('-',80)."\n";
+ echo "\n\n>>This script is for internal use only! Please use update.php! \n\n";
+ exit;
+}
+
+//** Include the library with the basic installer functions
+require_once('lib/install.lib.php');
+
+//** Include the library with the basic updater functions
+require_once('lib/update.lib.php');
+
+//** Include the base class of the installer class
+require_once('lib/installer_base.lib.php');
+
+//** Ensure that current working directory is install directory
+$cur_dir = getcwd();
+if(realpath(dirname(__FILE__)) != $cur_dir) die("Please run installation/update from _inside_ the install directory!\n");
+
+//** Install logfile
+define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log');
+define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../'));
+
+//** Get distribution identifier
+$dist = get_distname();
+
+include_once("/usr/local/ispconfig/server/lib/config.inc.php");
+$conf_old = $conf;
+unset($conf);
+
+if($dist['id'] == '') die('Linux distribution or version not recognized.');
+
+//** Include the distribution-specific installer class library and configuration
+if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once('dist/lib/'.$dist['baseid'].'.lib.php');
+include_once('dist/lib/'.$dist['id'].'.lib.php');
+include_once('dist/conf/'.$dist['id'].'.conf.php');
+
+//** Get hostname
+exec('hostname -f', $tmp_out);
+$conf['hostname'] = $tmp_out[0];
+unset($tmp_out);
+
+//** Set the mysql login information
+$conf["mysql"]["host"] = $conf_old["db_host"];
+$conf["mysql"]["database"] = $conf_old["db_database"];
+$conf['mysql']['charset'] = 'utf8';
+$conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
+$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
+$conf['language'] = $conf_old['language'];
+if($conf['language'] == '{language}') $conf['language'] = 'en';
+
+if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
+if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"];
+if(isset($conf_old["dbmaster_user"])) $conf["mysql"]["master_ispconfig_user"] = $conf_old["dbmaster_user"];
+if(isset($conf_old["dbmaster_password"])) $conf["mysql"]["master_ispconfig_password"] = $conf_old["dbmaster_password"];
+
+//* Check if this is a master / slave setup
+$conf['mysql']['master_slave_setup'] = 'n';
+if($conf["mysql"]["master_host"] != '' && $conf["mysql"]["host"] != $conf["mysql"]["master_host"]) {
+ $conf['mysql']['master_slave_setup'] = 'y';
+}
+
+// Resolve the IP address of the mysql hostname.
+if(!$conf['mysql']['ip'] = gethostbyname($conf['mysql']['host'])) die('Unable to resolve hostname'.$conf['mysql']['host']);
+
+$conf['server_id'] = intval($conf_old["server_id"]);
+$conf['ispconfig_log_priority'] = $conf_old["log_priority"];
+
+$inst = new installer();
+$inst->is_update = true;
+
+//** Detect the installed applications
+$inst->find_installed_apps();
+
+//** Initialize the MySQL server connection
+include_once('lib/mysql.lib.php');
+
+//** Database update is a bit brute force and should be rebuild later ;)
+
+/*
+ * Try to read the DB-admin settings
+ */
+$clientdb_host = '';
+$clientdb_user = '';
+$clientdb_password = '';
+include_once("/usr/local/ispconfig/server/lib/mysql_clientdb.conf");
+$conf["mysql"]["admin_user"] = $clientdb_user;
+$conf["mysql"]["admin_password"] = $clientdb_password;
+$clientdb_host = '';
+$clientdb_user = '';
+$clientdb_password = '';
+
+//** There is a error if user for mysql admin_password if empty
+if( empty($conf["mysql"]["admin_password"]) ) {
+ die("internal error - MYSQL-Root passord not known");
+}
+
+/*
+ * Prepare the dump of the database
+*/
+prepareDBDump();
+
+//* initialize the database
+$inst->db = new db();
+
+/*
+ * The next line is a bit tricky!
+ * At the automated update we have no connection to the master-db (we don't need it, because
+ * there are only TWO points, where this is needed)
+ * 1) update the rights --> the autoupdater sets the rights of all clients when the server is
+ * autoupdated)
+ * 2) update the server-settings (is web installed, is mail installed) --> the autoupdates
+ * doesn't change any of this settings, so there ist no need to update this.
+ * This means, the autoupdater did not need any connection to the master-db (only to the local bd
+ * of the master-server). To avoid any problems, we set the master-db to the local one.
+ */
+$inst->dbmaster = $inst->db;
+
+/*
+ * If it is NOT a master-slave - Setup then we are at the Master-DB. So set all rights
+*/
+if($conf['mysql']['master_slave_setup'] != 'y') {
+ $inst->grant_master_database_rights();
+}
+
+/*
+ * dump the new Database and reconfigure the server.ini
+ */
+updateDbAndIni();
+
+/*
+ * Reconfigure all Services
+ */
+if($conf['services']['mail'] == true) {
+ //** Configure postfix
+ swriteln('Configuring Postfix');
+ $inst->configure_postfix('dont-create-certs');
+
+ //** Configure mailman
+ swriteln('Configuring Mailman');
+ $inst->configure_mailman('update');
+
+ //* Configure Jailkit
+ swriteln('Configuring Jailkit');
+ $inst->configure_jailkit();
+
+ if($conf['dovecot']['installed'] == true) {
+ //* Configure dovecot
+ swriteln('Configuring Dovecot');
+ $inst->configure_dovecot();
+ } else {
+ //** Configure saslauthd
+ swriteln('Configuring SASL');
+ $inst->configure_saslauthd();
+
+ //** Configure PAM
+ swriteln('Configuring PAM');
+ $inst->configure_pam();
+
+ //* Configure courier
+ swriteln('Configuring Courier');
+ $inst->configure_courier();
+ }
+
+ //** Configure Spamasassin
+ swriteln('Configuring Spamassassin');
+ $inst->configure_spamassassin();
+
+ //** Configure Amavis
+ swriteln('Configuring Amavisd');
+ $inst->configure_amavis();
+
+ //** Configure Getmail
+ swriteln('Configuring Getmail');
+ $inst->configure_getmail();
+}
+
+if($conf['services']['web'] == true) {
+ //** Configure Pureftpd
+ swriteln('Configuring Pureftpd');
+ $inst->configure_pureftpd();
+}
+
+if($conf['services']['dns'] == true) {
+ //* Configure DNS
+ if($conf['powerdns']['installed'] == true) {
+ swriteln('Configuring PowerDNS');
+ $inst->configure_powerdns();
+ } elseif($conf['bind']['installed'] == true) {
+ swriteln('Configuring BIND');
+ $inst->configure_bind();
+ } else {
+ swriteln('Configuring MyDNS');
+ $inst->configure_mydns();
+ }
+}
+
+if($conf['services']['web'] == true) {
+ //** Configure Apache
+ swriteln('Configuring Apache');
+ $inst->configure_apache();
+
+ //** Configure vlogger
+ swriteln('Configuring vlogger');
+ $inst->configure_vlogger();
+
+ //** Configure apps vhost
+ swriteln('Configuring Apps vhost');
+ $inst->configure_apps_vhost();
+}
+
+
+//* Configure DBServer
+swriteln('Configuring Database');
+$inst->configure_dbserver();
+
+
+//if(@is_dir('/etc/Bastille')) {
+//* Configure Firewall
+swriteln('Configuring Firewall');
+$inst->configure_firewall();
+//}
+
+//** Configure ISPConfig
+swriteln('Updating ISPConfig');
+
+
+//** Customise the port ISPConfig runs on
+$conf['apache']['vhost_port'] = get_ispconfig_port_number();
+
+$inst->install_ispconfig();
+
+//** Configure Crontab
+swriteln('Updating Crontab');
+$inst->install_crontab();
+
+//** Restart services:
+swriteln('Restarting services ...');
+if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' reload');
+if($conf['services']['mail']) {
+ if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
+ if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
+ if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
+ if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
+ if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
+ if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
+ if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
+ if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
+ if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
+ if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
+ if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
+}
+if($conf['services']['web']) {
+ if($conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
+ if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
+}
+if($conf['services']['dns']) {
+ if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
+ if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
+ if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
+}
+
+echo "Update finished.\n";
+
+?>
diff --git a/install/dist/conf/debian40.conf.php b/install/dist/conf/debian40.conf.php
index 35c4dea..a3db4dd 100644
--- a/install/dist/conf/debian40.conf.php
+++ b/install/dist/conf/debian40.conf.php
@@ -1,195 +1,195 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-//*** Debian 4.0 default settings
-
-//* Main
-$conf['language'] = 'en';
-$conf['distname'] = 'debian40';
-$conf['hostname'] = 'server1.domain.tld'; // Full hostname
-$conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
-$conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
-$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error
-$conf['ispconfig_log_dir'] = '/var/log/ispconfig';
-$conf['server_id'] = 1;
-$conf['init_scripts'] = '/etc/init.d';
-$conf['runlevel'] = '/etc';
-$conf['shells'] = '/etc/shells';
-$conf['pam'] = '/etc/pam.d';
-
-//* Services provided by this server, this selection will be overridden by the expert mode
-$conf['services']['mail'] = true;
-$conf['services']['web'] = true;
-$conf['services']['dns'] = true;
-$conf['services']['file'] = true;
-$conf['services']['db'] = true;
-$conf['services']['vserver'] = true;
-
-//* MySQL
-$conf['mysql']['installed'] = false; // will be detected automatically during installation
-$conf['mysql']['init_script'] = 'mysql';
-$conf['mysql']['host'] = 'localhost';
-$conf['mysql']['ip'] = '127.0.0.1';
-$conf['mysql']['port'] = '3306';
-$conf['mysql']['database'] = 'dbispconfig';
-$conf['mysql']['admin_user'] = 'root';
-$conf['mysql']['admin_password'] = '';
-$conf['mysql']['charset'] = 'utf8';
-$conf['mysql']['ispconfig_user'] = 'ispconfig';
-$conf['mysql']['ispconfig_password'] = md5 (uniqid (rand()));
-$conf['mysql']['master_slave_setup'] = 'n';
-$conf['mysql']['master_host'] = '';
-$conf['mysql']['master_database'] = 'dbispconfig';
-$conf['mysql']['master_admin_user'] = 'root';
-$conf['mysql']['master_admin_password'] = '';
-$conf['mysql']['master_ispconfig_user'] = '';
-$conf['mysql']['master_ispconfig_password'] = md5 (uniqid (rand()));
-
-//* Apache
-$conf['apache']['installed'] = false; // will be detected automatically during installation
-$conf['apache']['user'] = 'www-data';
-$conf['apache']['group'] = 'www-data';
-$conf['apache']['init_script'] = 'apache2';
-$conf['apache']['version'] = '2.2';
-$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available';
-$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled';
-$conf['apache']['vhost_port'] = '8080';
-$conf['apache']['php_ini_path_apache'] = '/etc/php5/apache2/php.ini';
-$conf['apache']['php_ini_path_cgi'] = '/etc/php5/cgi/php.ini';
-
-//* Website base settings
-$conf['web']['website_basedir'] = '/var/www';
-$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]';
-$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/';
-
-//* Apps base settings
-$conf['web']['apps_vhost_ip'] = '_default_';
-$conf['web']['apps_vhost_port'] = '8081';
-$conf['web']['apps_vhost_servername'] = '';
-$conf['web']['apps_vhost_user'] = 'ispapps';
-$conf['web']['apps_vhost_group'] = 'ispapps';
-
-//* Fastcgi
-$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php5/cgi/';
-$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/';
-
-//* Postfix
-$conf['postfix']['installed'] = false; // will be detected automatically during installation
-$conf['postfix']['config_dir'] = '/etc/postfix';
-$conf['postfix']['init_script'] = 'postfix';
-$conf['postfix']['user'] = 'postfix';
-$conf['postfix']['group'] = 'postfix';
-$conf['postfix']['vmail_userid'] = '5000';
-$conf['postfix']['vmail_username'] = 'vmail';
-$conf['postfix']['vmail_groupid'] = '5000';
-$conf['postfix']['vmail_groupname'] = 'vmail';
-$conf['postfix']['vmail_mailbox_base'] = '/var/vmail';
-
-//* Mailman
-$conf['mailman']['installed'] = false; // will be detected automatically during installation
-$conf['mailman']['config_dir'] = '/etc/mailman';
-$conf['mailman']['init_script'] = 'mailman';
-
-//* Getmail
-$conf['getmail']['installed'] = false; // will be detected automatically during installation
-$conf['getmail']['config_dir'] = '/etc/getmail';
-$conf['getmail']['program'] = '/usr/bin/getmail';
-
-//* Courier
-$conf['courier']['installed'] = false; // will be detected automatically during installation
-$conf['courier']['config_dir'] = '/etc/courier';
-$conf['courier']['courier-authdaemon'] = 'courier-authdaemon';
-$conf['courier']['courier-imap'] = 'courier-imap';
-$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl';
-$conf['courier']['courier-pop'] = 'courier-pop';
-$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl';
-
-//* Dovecot
-$conf['dovecot']['installed'] = false; // will be detected automatically during installation
-$conf['dovecot']['config_dir'] = '/etc/dovecot';
-$conf['dovecot']['init_script'] = 'dovecot';
-
-//* SASL
-$conf['saslauthd']['installed'] = false; // will be detected automatically during installation
-$conf['saslauthd']['config'] = '/etc/default/saslauthd';
-$conf['saslauthd']['init_script'] = 'saslauthd';
-
-//* Amavisd
-$conf['amavis']['installed'] = false; // will be detected automatically during installation
-$conf['amavis']['config_dir'] = '/etc/amavis';
-$conf['amavis']['init_script'] = 'amavis';
-
-//* ClamAV
-$conf['clamav']['installed'] = false; // will be detected automatically during installation
-$conf['clamav']['init_script'] = 'clamav-daemon';
-
-//* Pureftpd
-$conf['pureftpd']['installed'] = false; // will be detected automatically during installation
-$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd';
-$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql';
-
-//* MyDNS
-$conf['mydns']['installed'] = false; // will be detected automatically during installation
-$conf['mydns']['config_dir'] = '/etc';
-$conf['mydns']['init_script'] = 'mydns';
-
-//* PowerDNS
-$conf['powerdns']['installed'] = false; // will be detected automatically during installation
-$conf['powerdns']['database'] = 'powerdns';
-$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d';
-$conf['powerdns']['init_script'] = 'pdns';
-
-//* BIND DNS Server
-$conf['bind']['installed'] = false; // will be detected automatically during installation
-$conf['bind']['bind_user'] = 'root';
-$conf['bind']['bind_group'] = 'bind';
-$conf['bind']['bind_zonefiles_dir'] = '/etc/bind';
-$conf['bind']['named_conf_path'] = '/etc/bind/named.conf';
-$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local';
-$conf['bind']['init_script'] = 'bind9';
-
-//* Jailkit
-$conf['jailkit']['installed'] = false; // will be detected automatically during installation
-$conf['jailkit']['config_dir'] = '/etc/jailkit';
-$conf['jailkit']['jk_init'] = 'jk_init.ini';
-$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini';
-$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico';
-$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php';
-
-//* vlogger
-$conf['vlogger']['config_dir'] = '/etc';
-
-//* cron
-$conf['cron']['init_script'] = 'cron';
-$conf['cron']['crontab_dir'] = '/etc/cron.d';
-$conf['cron']['wget'] = '/usr/bin/wget';
+<?php
-
-?>
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+//*** Debian 4.0 default settings
+
+//* Main
+$conf['language'] = 'en';
+$conf['distname'] = 'debian40';
+$conf['hostname'] = 'server1.domain.tld'; // Full hostname
+$conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
+$conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
+$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error
+$conf['ispconfig_log_dir'] = '/var/log/ispconfig';
+$conf['server_id'] = 1;
+$conf['init_scripts'] = '/etc/init.d';
+$conf['runlevel'] = '/etc';
+$conf['shells'] = '/etc/shells';
+$conf['pam'] = '/etc/pam.d';
+
+//* Services provided by this server, this selection will be overridden by the expert mode
+$conf['services']['mail'] = true;
+$conf['services']['web'] = true;
+$conf['services']['dns'] = true;
+$conf['services']['file'] = true;
+$conf['services']['db'] = true;
+$conf['services']['vserver'] = true;
+
+//* MySQL
+$conf['mysql']['installed'] = false; // will be detected automatically during installation
+$conf['mysql']['init_script'] = 'mysql';
+$conf['mysql']['host'] = 'localhost';
+$conf['mysql']['ip'] = '127.0.0.1';
+$conf['mysql']['port'] = '3306';
+$conf['mysql']['database'] = 'dbispconfig';
+$conf['mysql']['admin_user'] = 'root';
+$conf['mysql']['admin_password'] = '';
+$conf['mysql']['charset'] = 'utf8';
+$conf['mysql']['ispconfig_user'] = 'ispconfig';
+$conf['mysql']['ispconfig_password'] = md5 (uniqid (rand()));
+$conf['mysql']['master_slave_setup'] = 'n';
+$conf['mysql']['master_host'] = '';
+$conf['mysql']['master_database'] = 'dbispconfig';
+$conf['mysql']['master_admin_user'] = 'root';
+$conf['mysql']['master_admin_password'] = '';
+$conf['mysql']['master_ispconfig_user'] = '';
+$conf['mysql']['master_ispconfig_password'] = md5 (uniqid (rand()));
+
+//* Apache
+$conf['apache']['installed'] = false; // will be detected automatically during installation
+$conf['apache']['user'] = 'www-data';
+$conf['apache']['group'] = 'www-data';
+$conf['apache']['init_script'] = 'apache2';
+$conf['apache']['version'] = '2.2';
+$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available';
+$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled';
+$conf['apache']['vhost_port'] = '8080';
+$conf['apache']['php_ini_path_apache'] = '/etc/php5/apache2/php.ini';
+$conf['apache']['php_ini_path_cgi'] = '/etc/php5/cgi/php.ini';
+
+//* Website base settings
+$conf['web']['website_basedir'] = '/var/www';
+$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]';
+$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/';
+
+//* Apps base settings
+$conf['web']['apps_vhost_ip'] = '_default_';
+$conf['web']['apps_vhost_port'] = '8081';
+$conf['web']['apps_vhost_servername'] = '';
+$conf['web']['apps_vhost_user'] = 'ispapps';
+$conf['web']['apps_vhost_group'] = 'ispapps';
+
+//* Fastcgi
+$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php5/cgi/';
+$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/';
+
+//* Postfix
+$conf['postfix']['installed'] = false; // will be detected automatically during installation
+$conf['postfix']['config_dir'] = '/etc/postfix';
+$conf['postfix']['init_script'] = 'postfix';
+$conf['postfix']['user'] = 'postfix';
+$conf['postfix']['group'] = 'postfix';
+$conf['postfix']['vmail_userid'] = '5000';
+$conf['postfix']['vmail_username'] = 'vmail';
+$conf['postfix']['vmail_groupid'] = '5000';
+$conf['postfix']['vmail_groupname'] = 'vmail';
+$conf['postfix']['vmail_mailbox_base'] = '/var/vmail';
+
+//* Mailman
+$conf['mailman']['installed'] = false; // will be detected automatically during installation
+$conf['mailman']['config_dir'] = '/etc/mailman';
+$conf['mailman']['init_script'] = 'mailman';
+
+//* Getmail
+$conf['getmail']['installed'] = false; // will be detected automatically during installation
+$conf['getmail']['config_dir'] = '/etc/getmail';
+$conf['getmail']['program'] = '/usr/bin/getmail';
+
+//* Courier
+$conf['courier']['installed'] = false; // will be detected automatically during installation
+$conf['courier']['config_dir'] = '/etc/courier';
+$conf['courier']['courier-authdaemon'] = 'courier-authdaemon';
+$conf['courier']['courier-imap'] = 'courier-imap';
+$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl';
+$conf['courier']['courier-pop'] = 'courier-pop';
+$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl';
+
+//* Dovecot
+$conf['dovecot']['installed'] = false; // will be detected automatically during installation
+$conf['dovecot']['config_dir'] = '/etc/dovecot';
+$conf['dovecot']['init_script'] = 'dovecot';
+
+//* SASL
+$conf['saslauthd']['installed'] = false; // will be detected automatically during installation
+$conf['saslauthd']['config'] = '/etc/default/saslauthd';
+$conf['saslauthd']['init_script'] = 'saslauthd';
+
+//* Amavisd
+$conf['amavis']['installed'] = false; // will be detected automatically during installation
+$conf['amavis']['config_dir'] = '/etc/amavis';
+$conf['amavis']['init_script'] = 'amavis';
+
+//* ClamAV
+$conf['clamav']['installed'] = false; // will be detected automatically during installation
+$conf['clamav']['init_script'] = 'clamav-daemon';
+
+//* Pureftpd
+$conf['pureftpd']['installed'] = false; // will be detected automatically during installation
+$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd';
+$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql';
+
+//* MyDNS
+$conf['mydns']['installed'] = false; // will be detected automatically during installation
+$conf['mydns']['config_dir'] = '/etc';
+$conf['mydns']['init_script'] = 'mydns';
+
+//* PowerDNS
+$conf['powerdns']['installed'] = false; // will be detected automatically during installation
+$conf['powerdns']['database'] = 'powerdns';
+$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d';
+$conf['powerdns']['init_script'] = 'pdns';
+
+//* BIND DNS Server
+$conf['bind']['installed'] = false; // will be detected automatically during installation
+$conf['bind']['bind_user'] = 'root';
+$conf['bind']['bind_group'] = 'bind';
+$conf['bind']['bind_zonefiles_dir'] = '/etc/bind';
+$conf['bind']['named_conf_path'] = '/etc/bind/named.conf';
+$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local';
+$conf['bind']['init_script'] = 'bind9';
+
+//* Jailkit
+$conf['jailkit']['installed'] = false; // will be detected automatically during installation
+$conf['jailkit']['config_dir'] = '/etc/jailkit';
+$conf['jailkit']['jk_init'] = 'jk_init.ini';
+$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini';
+$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico';
+$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php';
+
+//* vlogger
+$conf['vlogger']['config_dir'] = '/etc';
+
+//* cron
+$conf['cron']['init_script'] = 'cron';
+$conf['cron']['crontab_dir'] = '/etc/cron.d';
+$conf['cron']['wget'] = '/usr/bin/wget';
+
+
+?>
diff --git a/install/dist/conf/debian60.conf.php b/install/dist/conf/debian60.conf.php
index 6962adb..f4e8ba6 100644
--- a/install/dist/conf/debian60.conf.php
+++ b/install/dist/conf/debian60.conf.php
@@ -1,195 +1,195 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-//*** Debian 4.0 default settings
-
-//* Main
-$conf['language'] = 'en';
-$conf['distname'] = 'debian60';
-$conf['hostname'] = 'server1.domain.tld'; // Full hostname
-$conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
-$conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
-$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error
-$conf['ispconfig_log_dir'] = '/var/log/ispconfig';
-$conf['server_id'] = 1;
-$conf['init_scripts'] = '/etc/init.d';
-$conf['runlevel'] = '/etc';
-$conf['shells'] = '/etc/shells';
-$conf['pam'] = '/etc/pam.d';
-
-//* Services provided by this server, this selection will be overridden by the expert mode
-$conf['services']['mail'] = true;
-$conf['services']['web'] = true;
-$conf['services']['dns'] = true;
-$conf['services']['file'] = true;
-$conf['services']['db'] = true;
-$conf['services']['vserver'] = true;
-
-//* MySQL
-$conf['mysql']['installed'] = false; // will be detected automatically during installation
-$conf['mysql']['init_script'] = 'mysql';
-$conf['mysql']['host'] = 'localhost';
-$conf['mysql']['ip'] = '127.0.0.1';
-$conf['mysql']['port'] = '3306';
-$conf['mysql']['database'] = 'dbispconfig';
-$conf['mysql']['admin_user'] = 'root';
-$conf['mysql']['admin_password'] = '';
-$conf['mysql']['charset'] = 'utf8';
-$conf['mysql']['ispconfig_user'] = 'ispconfig';
-$conf['mysql']['ispconfig_password'] = md5 (uniqid (rand()));
-$conf['mysql']['master_slave_setup'] = 'n';
-$conf['mysql']['master_host'] = '';
-$conf['mysql']['master_database'] = 'dbispconfig';
-$conf['mysql']['master_admin_user'] = 'root';
-$conf['mysql']['master_admin_password'] = '';
-$conf['mysql']['master_ispconfig_user'] = '';
-$conf['mysql']['master_ispconfig_password'] = md5 (uniqid (rand()));
-
-//* Apache
-$conf['apache']['installed'] = false; // will be detected automatically during installation
-$conf['apache']['user'] = 'www-data';
-$conf['apache']['group'] = 'www-data';
-$conf['apache']['init_script'] = 'apache2';
-$conf['apache']['version'] = '2.2';
-$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available';
-$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled';
-$conf['apache']['vhost_port'] = '8080';
-$conf['apache']['php_ini_path_apache'] = '/etc/php5/apache2/php.ini';
-$conf['apache']['php_ini_path_cgi'] = '/etc/php5/cgi/php.ini';
-
-//* Website base settings
-$conf['web']['website_basedir'] = '/var/www';
-$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]';
-$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/';
-
-//* Apps base settings
-$conf['web']['apps_vhost_ip'] = '_default_';
-$conf['web']['apps_vhost_port'] = '8081';
-$conf['web']['apps_vhost_servername'] = '';
-$conf['web']['apps_vhost_user'] = 'ispapps';
-$conf['web']['apps_vhost_group'] = 'ispapps';
-
-//* Fastcgi
-$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php5/cgi/';
-$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/';
-
-//* Postfix
-$conf['postfix']['installed'] = false; // will be detected automatically during installation
-$conf['postfix']['config_dir'] = '/etc/postfix';
-$conf['postfix']['init_script'] = 'postfix';
-$conf['postfix']['user'] = 'postfix';
-$conf['postfix']['group'] = 'postfix';
-$conf['postfix']['vmail_userid'] = '5000';
-$conf['postfix']['vmail_username'] = 'vmail';
-$conf['postfix']['vmail_groupid'] = '5000';
-$conf['postfix']['vmail_groupname'] = 'vmail';
-$conf['postfix']['vmail_mailbox_base'] = '/var/vmail';
-
-//* Mailman
-$conf['mailman']['installed'] = false; // will be detected automatically during installation
-$conf['mailman']['config_dir'] = '/etc/mailman';
-$conf['mailman']['init_script'] = 'mailman';
-
-//* Getmail
-$conf['getmail']['installed'] = false; // will be detected automatically during installation
-$conf['getmail']['config_dir'] = '/etc/getmail';
-$conf['getmail']['program'] = '/usr/bin/getmail';
-
-//* Courier
-$conf['courier']['installed'] = false; // will be detected automatically during installation
-$conf['courier']['config_dir'] = '/etc/courier';
-$conf['courier']['courier-authdaemon'] = 'courier-authdaemon';
-$conf['courier']['courier-imap'] = 'courier-imap';
-$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl';
-$conf['courier']['courier-pop'] = 'courier-pop';
-$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl';
-
-//* Dovecot
-$conf['dovecot']['installed'] = false; // will be detected automatically during installation
-$conf['dovecot']['config_dir'] = '/etc/dovecot';
-$conf['dovecot']['init_script'] = 'dovecot';
-
-//* SASL
-$conf['saslauthd']['installed'] = false; // will be detected automatically during installation
-$conf['saslauthd']['config'] = '/etc/default/saslauthd';
-$conf['saslauthd']['init_script'] = 'saslauthd';
-
-//* Amavisd
-$conf['amavis']['installed'] = false; // will be detected automatically during installation
-$conf['amavis']['config_dir'] = '/etc/amavis';
-$conf['amavis']['init_script'] = 'amavis';
-
-//* ClamAV
-$conf['clamav']['installed'] = false; // will be detected automatically during installation
-$conf['clamav']['init_script'] = 'clamav-daemon';
-
-//* Pureftpd
-$conf['pureftpd']['installed'] = false; // will be detected automatically during installation
-$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd';
-$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql';
-
-//* MyDNS
-$conf['mydns']['installed'] = false; // will be detected automatically during installation
-$conf['mydns']['config_dir'] = '/etc';
-$conf['mydns']['init_script'] = 'mydns';
-
-//* PowerDNS
-$conf['powerdns']['installed'] = false; // will be detected automatically during installation
-$conf['powerdns']['database'] = 'powerdns';
-$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d';
-$conf['powerdns']['init_script'] = 'pdns';
-
-//* BIND DNS Server
-$conf['bind']['installed'] = false; // will be detected automatically during installation
-$conf['bind']['bind_user'] = 'root';
-$conf['bind']['bind_group'] = 'bind';
-$conf['bind']['bind_zonefiles_dir'] = '/etc/bind';
-$conf['bind']['named_conf_path'] = '/etc/bind/named.conf';
-$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local';
-$conf['bind']['init_script'] = 'bind9';
-
-//* Jailkit
-$conf['jailkit']['installed'] = false; // will be detected automatically during installation
-$conf['jailkit']['config_dir'] = '/etc/jailkit';
-$conf['jailkit']['jk_init'] = 'jk_init.ini';
-$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini';
-$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico';
-$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php';
-
-//* vlogger
-$conf['vlogger']['config_dir'] = '/etc';
-
-//* cron
-$conf['cron']['init_script'] = 'cron';
-$conf['cron']['crontab_dir'] = '/etc/cron.d';
-$conf['cron']['wget'] = '/usr/bin/wget';
+<?php
-
-?>
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+//*** Debian 4.0 default settings
+
+//* Main
+$conf['language'] = 'en';
+$conf['distname'] = 'debian60';
+$conf['hostname'] = 'server1.domain.tld'; // Full hostname
+$conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
+$conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
+$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error
+$conf['ispconfig_log_dir'] = '/var/log/ispconfig';
+$conf['server_id'] = 1;
+$conf['init_scripts'] = '/etc/init.d';
+$conf['runlevel'] = '/etc';
+$conf['shells'] = '/etc/shells';
+$conf['pam'] = '/etc/pam.d';
+
+//* Services provided by this server, this selection will be overridden by the expert mode
+$conf['services']['mail'] = true;
+$conf['services']['web'] = true;
+$conf['services']['dns'] = true;
+$conf['services']['file'] = true;
+$conf['services']['db'] = true;
+$conf['services']['vserver'] = true;
+
+//* MySQL
+$conf['mysql']['installed'] = false; // will be detected automatically during installation
+$conf['mysql']['init_script'] = 'mysql';
+$conf['mysql']['host'] = 'localhost';
+$conf['mysql']['ip'] = '127.0.0.1';
+$conf['mysql']['port'] = '3306';
+$conf['mysql']['database'] = 'dbispconfig';
+$conf['mysql']['admin_user'] = 'root';
+$conf['mysql']['admin_password'] = '';
+$conf['mysql']['charset'] = 'utf8';
+$conf['mysql']['ispconfig_user'] = 'ispconfig';
+$conf['mysql']['ispconfig_password'] = md5 (uniqid (rand()));
+$conf['mysql']['master_slave_setup'] = 'n';
+$conf['mysql']['master_host'] = '';
+$conf['mysql']['master_database'] = 'dbispconfig';
+$conf['mysql']['master_admin_user'] = 'root';
+$conf['mysql']['master_admin_password'] = '';
+$conf['mysql']['master_ispconfig_user'] = '';
+$conf['mysql']['master_ispconfig_password'] = md5 (uniqid (rand()));
+
+//* Apache
+$conf['apache']['installed'] = false; // will be detected automatically during installation
+$conf['apache']['user'] = 'www-data';
+$conf['apache']['group'] = 'www-data';
+$conf['apache']['init_script'] = 'apache2';
+$conf['apache']['version'] = '2.2';
+$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available';
+$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled';
+$conf['apache']['vhost_port'] = '8080';
+$conf['apache']['php_ini_path_apache'] = '/etc/php5/apache2/php.ini';
+$conf['apache']['php_ini_path_cgi'] = '/etc/php5/cgi/php.ini';
+
+//* Website base settings
+$conf['web']['website_basedir'] = '/var/www';
+$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]';
+$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/';
+
+//* Apps base settings
+$conf['web']['apps_vhost_ip'] = '_default_';
+$conf['web']['apps_vhost_port'] = '8081';
+$conf['web']['apps_vhost_servername'] = '';
+$conf['web']['apps_vhost_user'] = 'ispapps';
+$conf['web']['apps_vhost_group'] = 'ispapps';
+
+//* Fastcgi
+$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php5/cgi/';
+$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/';
+
+//* Postfix
+$conf['postfix']['installed'] = false; // will be detected automatically during installation
+$conf['postfix']['config_dir'] = '/etc/postfix';
+$conf['postfix']['init_script'] = 'postfix';
+$conf['postfix']['user'] = 'postfix';
+$conf['postfix']['group'] = 'postfix';
+$conf['postfix']['vmail_userid'] = '5000';
+$conf['postfix']['vmail_username'] = 'vmail';
+$conf['postfix']['vmail_groupid'] = '5000';
+$conf['postfix']['vmail_groupname'] = 'vmail';
+$conf['postfix']['vmail_mailbox_base'] = '/var/vmail';
+
+//* Mailman
+$conf['mailman']['installed'] = false; // will be detected automatically during installation
+$conf['mailman']['config_dir'] = '/etc/mailman';
+$conf['mailman']['init_script'] = 'mailman';
+
+//* Getmail
+$conf['getmail']['installed'] = false; // will be detected automatically during installation
+$conf['getmail']['config_dir'] = '/etc/getmail';
+$conf['getmail']['program'] = '/usr/bin/getmail';
+
+//* Courier
+$conf['courier']['installed'] = false; // will be detected automatically during installation
+$conf['courier']['config_dir'] = '/etc/courier';
+$conf['courier']['courier-authdaemon'] = 'courier-authdaemon';
+$conf['courier']['courier-imap'] = 'courier-imap';
+$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl';
+$conf['courier']['courier-pop'] = 'courier-pop';
+$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl';
+
+//* Dovecot
+$conf['dovecot']['installed'] = false; // will be detected automatically during installation
+$conf['dovecot']['config_dir'] = '/etc/dovecot';
+$conf['dovecot']['init_script'] = 'dovecot';
+
+//* SASL
+$conf['saslauthd']['installed'] = false; // will be detected automatically during installation
+$conf['saslauthd']['config'] = '/etc/default/saslauthd';
+$conf['saslauthd']['init_script'] = 'saslauthd';
+
+//* Amavisd
+$conf['amavis']['installed'] = false; // will be detected automatically during installation
+$conf['amavis']['config_dir'] = '/etc/amavis';
+$conf['amavis']['init_script'] = 'amavis';
+
+//* ClamAV
+$conf['clamav']['installed'] = false; // will be detected automatically during installation
+$conf['clamav']['init_script'] = 'clamav-daemon';
+
+//* Pureftpd
+$conf['pureftpd']['installed'] = false; // will be detected automatically during installation
+$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd';
+$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql';
+
+//* MyDNS
+$conf['mydns']['installed'] = false; // will be detected automatically during installation
+$conf['mydns']['config_dir'] = '/etc';
+$conf['mydns']['init_script'] = 'mydns';
+
+//* PowerDNS
+$conf['powerdns']['installed'] = false; // will be detected automatically during installation
+$conf['powerdns']['database'] = 'powerdns';
+$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d';
+$conf['powerdns']['init_script'] = 'pdns';
+
+//* BIND DNS Server
+$conf['bind']['installed'] = false; // will be detected automatically during installation
+$conf['bind']['bind_user'] = 'root';
+$conf['bind']['bind_group'] = 'bind';
+$conf['bind']['bind_zonefiles_dir'] = '/etc/bind';
+$conf['bind']['named_conf_path'] = '/etc/bind/named.conf';
+$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local';
+$conf['bind']['init_script'] = 'bind9';
+
+//* Jailkit
+$conf['jailkit']['installed'] = false; // will be detected automatically during installation
+$conf['jailkit']['config_dir'] = '/etc/jailkit';
+$conf['jailkit']['jk_init'] = 'jk_init.ini';
+$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini';
+$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico';
+$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php';
+
+//* vlogger
+$conf['vlogger']['config_dir'] = '/etc';
+
+//* cron
+$conf['cron']['init_script'] = 'cron';
+$conf['cron']['crontab_dir'] = '/etc/cron.d';
+$conf['cron']['wget'] = '/usr/bin/wget';
+
+
+?>
diff --git a/install/install.php b/install/install.php
index a17e039..d79450f 100644
--- a/install/install.php
+++ b/install/install.php
@@ -1,490 +1,490 @@
-<?php
-
-/*
-Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- ISPConfig 3 installer.
-*/
-
-error_reporting(E_ALL|E_STRICT);
-
-//** The banner on the command line
-echo "\n\n".str_repeat('-',80)."\n";
-echo " _____ ___________ _____ __ _ ____
-|_ _/ ___| ___ \ / __ \ / _(_) /__ \
- | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
- | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
- _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
- \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
- __/ |
- |___/ ";
-echo "\n".str_repeat('-',80)."\n";
-echo "\n\n>> Initial configuration \n\n";
-
-//** Include the library with the basic installer functions
-require_once('lib/install.lib.php');
-
-//** Include the base class of the installer class
-require_once('lib/installer_base.lib.php');
-
-//** Ensure that current working directory is install directory
-$cur_dir = getcwd();
-if(realpath(dirname(__FILE__)) != $cur_dir) {
- chdir( realpath(dirname(__FILE__)) );
-}
-
-//** Install logfile
-define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log');
-define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../'));
-
-//** Check for existing installation
-/*if(is_dir("/usr/local/ispconfig")) {
- die('We will stop here. There is already a ISPConfig installation, use the update script to update this installation.');
-}*/
-
-//** Get distribution identifier
-$dist = get_distname();
-
-if($dist['id'] == '') die('Linux distribution or version not recognized.');
-
-//** Include the distribution-specific installer class library and configuration
-if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once('dist/lib/'.$dist['baseid'].'.lib.php');
-include_once('dist/lib/'.$dist['id'].'.lib.php');
-include_once('dist/conf/'.$dist['id'].'.conf.php');
-
-//****************************************************************************************************
-//** Installer Interface
-//****************************************************************************************************
-$inst = new installer();
-swriteln($inst->lng(' Following will be a few questions for primary configuration so be careful.'));
-swriteln($inst->lng(' Default values are in [brackets] and can be accepted with <ENTER>.'));
-swriteln($inst->lng(' Tap in "quit" (without the quotes) to stop the installer.'."\n\n"));
-
-//** Check log file is writable (probably not root or sudo)
-if(!is_writable(dirname(ISPC_LOG_FILE))){
- die("ERROR: Cannot write to the ".dirname(ISPC_LOG_FILE)." directory. Are you root or sudo ?\n\n");
-}
-
-if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) {
- die('This software cannot be installed on a server wich runs ISPConfig 2.x.');
-}
-
-if(is_dir('/usr/local/ispconfig')) {
- die('ISPConfig 3 installation found. Please use update.php instead if install.php to update the installation.');
-}
-
-//** Detect the installed applications
-$inst->find_installed_apps();
-
-//** Select the language
-$conf['language'] = $inst->simple_query('Select language', array('en','de'), 'en');
-
-//** Select installation mode
-$install_mode = $inst->simple_query('Installation mode', array('standard','expert'), 'standard');
-
-
-//** Get the hostname
-$tmp_out = array();
-exec('hostname -f', $tmp_out);
-$conf['hostname'] = $inst->free_query('Full qualified hostname (FQDN) of the server, eg server1.domain.tld ', $tmp_out[0]);
-unset($tmp_out);
-
-// Check if the mysql functions are loaded in PHP
-if(!function_exists('mysql_connect')) die('No PHP MySQL functions available. Please ensure that the PHP MySQL module is loaded.');
-
-//** Get MySQL root credentials
-$finished = false;
-do {
- $tmp_mysql_server_host = $inst->free_query('MySQL server hostname', $conf['mysql']['host']);
- $tmp_mysql_server_admin_user = $inst->free_query('MySQL root username', $conf['mysql']['admin_user']);
- $tmp_mysql_server_admin_password = $inst->free_query('MySQL root password', $conf['mysql']['admin_password']);
- $tmp_mysql_server_database = $inst->free_query('MySQL database to create', $conf['mysql']['database']);
- $tmp_mysql_server_charset = $inst->free_query('MySQL charset', $conf['mysql']['charset']);
-
- //* Initialize the MySQL server connection
- if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
- $conf['mysql']['host'] = $tmp_mysql_server_host;
- $conf['mysql']['admin_user'] = $tmp_mysql_server_admin_user;
- $conf['mysql']['admin_password'] = $tmp_mysql_server_admin_password;
- $conf['mysql']['database'] = $tmp_mysql_server_database;
- $conf['mysql']['charset'] = $tmp_mysql_server_charset;
- $finished = true;
- } else {
- swriteln($inst->lng('Unable to connect to the specified MySQL server').' '.mysql_error());
- }
-} while ($finished == false);
-unset($finished);
-
-// Resolve the IP address of the MySQL hostname.
-$tmp = explode(':',$conf['mysql']['host']);
-if(!$conf['mysql']['ip'] = gethostbyname($tmp[0])) die('Unable to resolve hostname'.$tmp[0]);
-unset($tmp);
-
-
-//** Initializing database connection
-include_once('lib/mysql.lib.php');
-$inst->db = new db();
-
-//** Begin with standard or expert installation
-if($install_mode == 'standard') {
-
- //* Create the MySQL database
- $inst->configure_database();
-
- //* Insert the Server record into the database
- $inst->add_database_server_record();
-
- //* Configure Postfix
- $inst->configure_postfix();
-
- //* Configure Mailman
- $inst->configure_mailman('install');
-
- //* Configure jailkit
- swriteln('Configuring Jailkit');
- $inst->configure_jailkit();
-
- if($conf['dovecot']['installed'] == true) {
- //* Configure Dovecot
- swriteln('Configuring Dovecot');
- $inst->configure_dovecot();
- } else {
- //* Configure saslauthd
- swriteln('Configuring SASL');
- $inst->configure_saslauthd();
-
- //* Configure PAM
- swriteln('Configuring PAM');
- $inst->configure_pam();
-
- //* Configure Courier
- swriteln('Configuring Courier');
- $inst->configure_courier();
- }
-
- //* Configure Spamasassin
- swriteln('Configuring Spamassassin');
- $inst->configure_spamassassin();
-
- //* Configure Amavis
- swriteln('Configuring Amavisd');
- $inst->configure_amavis();
-
- //* Configure Getmail
- swriteln('Configuring Getmail');
- $inst->configure_getmail();
-
-
- //* Configure Pureftpd
- swriteln('Configuring Pureftpd');
- $inst->configure_pureftpd();
-
- //* Configure DNS
- if($conf['powerdns']['installed'] == true) {
- swriteln('Configuring PowerDNS');
- $inst->configure_powerdns();
- } elseif($conf['bind']['installed'] == true) {
- swriteln('Configuring BIND');
- $inst->configure_bind();
- } else {
- swriteln('Configuring MyDNS');
- $inst->configure_mydns();
- }
-
- //* Configure Apache
- swriteln('Configuring Apache');
- $inst->configure_apache();
-
- //** Configure Vlogger
- swriteln('Configuring Vlogger');
- $inst->configure_vlogger();
-
- //** Configure apps vhost
- swriteln('Configuring Apps vhost');
- $inst->configure_apps_vhost();
-
- //* Configure Firewall
- swriteln('Configuring Firewall');
- $inst->configure_firewall();
-
- //* Configure ISPConfig
- swriteln('Installing ISPConfig');
-
- //** Customize the port ISPConfig runs on
- $conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', '8080');
-
- $inst->install_ispconfig();
-
- //* Configure DBServer
- swriteln('Configuring DBServer');
- $inst->configure_dbserver();
-
- //* Configure ISPConfig
- swriteln('Installing ISPConfig crontab');
- $inst->install_crontab();
-
- swriteln('Restarting services ...');
- if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart');
- if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
- if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
- if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
- if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
- if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
- if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
- if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
- if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
- if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
- if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
- if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
- if($conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
- if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
- if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
- if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
- if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
-
-}else{
-
- //* In expert mode, we select the services in the following steps, only db is always available
- $conf['services']['mail'] = false;
- $conf['services']['web'] = false;
- $conf['services']['dns'] = false;
- $conf['services']['db'] = true;
-
-
- //** Get Server ID
- // $conf['server_id'] = $inst->free_query('Unique Numeric ID of the server','1');
- // Server ID is an autoInc value of the mysql database now
-
- if(strtolower($inst->simple_query('Shall this server join an existing ISPConfig multiserver setup',array('y','n'),'n')) == 'y') {
- $conf['mysql']['master_slave_setup'] = 'y';
-
- //** Get MySQL root credentials
- $finished = false;
- do {
- $tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host']);
- $tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user']);
- $tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password']);
- $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database']);
-
- //* Initialize the MySQL server connection
- if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
- $conf['mysql']['master_host'] = $tmp_mysql_server_host;
- $conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
- $conf['mysql']['master_admin_password'] = $tmp_mysql_server_admin_password;
- $conf['mysql']['master_database'] = $tmp_mysql_server_database;
- $finished = true;
- } else {
- swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
- }
- } while ($finished == false);
- unset($finished);
-
- // initialize the connection to the master database
- $inst->dbmaster = new db();
- if($inst->dbmaster->linkId) $inst->dbmaster->closeConn();
- $inst->dbmaster->dbHost = $conf['mysql']["master_host"];
- $inst->dbmaster->dbName = $conf['mysql']["master_database"];
- $inst->dbmaster->dbUser = $conf['mysql']["master_admin_user"];
- $inst->dbmaster->dbPass = $conf['mysql']["master_admin_password"];
-
- } else {
- // the master DB is the same then the slave DB
- $inst->dbmaster = $inst->db;
- }
-
- //* Create the mysql database
- $inst->configure_database();
-
- //* Insert the Server record into the database
- swriteln('Adding ISPConfig server record to database.');
- swriteln('');
- $inst->add_database_server_record();
-
-
- if(strtolower($inst->simple_query('Configure Mail', array('y','n') ,'y') ) == 'y') {
-
- $conf['services']['mail'] = true;
-
- //* Configure Postfix
- swriteln('Configuring Postfix');
- $inst->configure_postfix();
-
- //* Configure Mailman
- swriteln('Configuring Mailman');
- $inst->configure_mailman();
-
- if($conf['dovecot']['installed'] == true) {
- //* Configure dovecot
- swriteln('Configuring Dovecot');
- $inst->configure_dovecot();
- } else {
-
- //* Configure saslauthd
- swriteln('Configuring SASL');
- $inst->configure_saslauthd();
-
- //* Configure PAM
- swriteln('Configuring PAM');
- $inst->configure_pam();
-
- //* Configure courier
- swriteln('Configuring Courier');
- $inst->configure_courier();
- }
-
- //* Configure Spamasassin
- swriteln('Configuring Spamassassin');
- $inst->configure_spamassassin();
-
- //* Configure Amavis
- swriteln('Configuring Amavisd');
- $inst->configure_amavis();
-
- //* Configure Getmail
- swriteln('Configuring Getmail');
- $inst->configure_getmail();
-
- if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
- if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
- if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
- if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
- if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
- if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
- if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
- if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
- if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
- if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
- if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
- }
-
- //** Configure Jailkit
- if(strtolower($inst->simple_query('Configure Jailkit', array('y','n'),'y') ) == 'y') {
- swriteln('Configuring Jailkit');
- $inst->configure_jailkit();
- }
-
- //** Configure Pureftpd
- if(strtolower($inst->simple_query('Configure FTP Server', array('y','n'),'y') ) == 'y') {
- swriteln('Configuring Pureftpd');
- $inst->configure_pureftpd();
- if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
- }
-
- //** Configure DNS
- if(strtolower($inst->simple_query('Configure DNS Server',array('y','n'),'y')) == 'y') {
- $conf['services']['dns'] = true;
- //* Configure DNS
- if($conf['powerdns']['installed'] == true) {
- swriteln('Configuring PowerDNS');
- $inst->configure_powerdns();
- if($conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
- } elseif($conf['bind']['installed'] == true) {
- swriteln('Configuring BIND');
- $inst->configure_bind();
- if($conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
- } else {
- swriteln('Configuring MyDNS');
- $inst->configure_mydns();
- if($conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
- }
-
- }
-
- //** Configure Apache
- swriteln("\nHint: If this server shall run the ISPConfig interface, select 'y' in the 'Configure Apache Server' option.\n");
- if(strtolower($inst->simple_query('Configure Apache Server',array('y','n'),'y')) == 'y') {
- $conf['services']['web'] = true;
- swriteln('Configuring Apache');
- $inst->configure_apache();
-
- //** Configure Vlogger
- swriteln('Configuring Vlogger');
- $inst->configure_vlogger();
-
- //** Configure apps vhost
- swriteln('Configuring Apps vhost');
- $inst->configure_apps_vhost();
- }
-
- //** Configure Firewall
- if(strtolower($inst->simple_query('Configure Firewall Server',array('y','n'),'y')) == 'y') {
- swriteln('Configuring Firewall');
- $inst->configure_firewall();
- }
- //** Configure ISPConfig :-)
- if(strtolower($inst->simple_query('Install ISPConfig Web Interface',array('y','n'),'y')) == 'y') {
- swriteln('Installing ISPConfig');
-
- //** We want to check if the server is a module or cgi based php enabled server
- //** TODO: Don't always ask for this somehow ?
- /*
- $fast_cgi = $inst->simple_query('CGI PHP Enabled Server?', array('yes','no'),'no');
-
- if($fast_cgi == 'yes') {
- $alias = $inst->free_query('Script Alias', '/php/');
- $path = $inst->free_query('Script Alias Path', '/path/to/cgi/bin');
- $conf['apache']['vhost_cgi_alias'] = sprintf('ScriptAlias %s %s', $alias, $path);
- } else {
- $conf['apache']['vhost_cgi_alias'] = "";
- }
- */
-
- //** Customise the port ISPConfig runs on
- $conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', '8080');
-
- if(strtolower($inst->simple_query('Enable SSL for the ISPConfig web interface',array('y','n'),'y')) == 'y') {
- $inst->make_ispconfig_ssl_cert();
- }
-
- $inst->install_ispconfig_interface = true;
-
- } else {
- $inst->install_ispconfig_interface = false;
- }
-
- $inst->install_ispconfig();
-
- //* Configure DBServer
- swriteln('Configuring DBServer');
- $inst->configure_dbserver();
-
- //* Configure ISPConfig
- swriteln('Installing ISPConfig crontab');
- $inst->install_crontab();
- if($conf['apache']['init_script'] != '' && @is_file($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
-
-
-
-} //* << $install_mode / 'Standard' or Genius
-
-
-echo "Installation completed.\n";
-
-
-?>
+<?php
+
+/*
+Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ ISPConfig 3 installer.
+*/
+
+error_reporting(E_ALL|E_STRICT);
+
+//** The banner on the command line
+echo "\n\n".str_repeat('-',80)."\n";
+echo " _____ ___________ _____ __ _ ____
+|_ _/ ___| ___ \ / __ \ / _(_) /__ \
+ | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
+ | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
+ _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
+ \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
+ __/ |
+ |___/ ";
+echo "\n".str_repeat('-',80)."\n";
+echo "\n\n>> Initial configuration \n\n";
+
+//** Include the library with the basic installer functions
+require_once('lib/install.lib.php');
+
+//** Include the base class of the installer class
+require_once('lib/installer_base.lib.php');
+
+//** Ensure that current working directory is install directory
+$cur_dir = getcwd();
+if(realpath(dirname(__FILE__)) != $cur_dir) {
+ chdir( realpath(dirname(__FILE__)) );
+}
+
+//** Install logfile
+define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log');
+define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../'));
+
+//** Check for existing installation
+/*if(is_dir("/usr/local/ispconfig")) {
+ die('We will stop here. There is already a ISPConfig installation, use the update script to update this installation.');
+}*/
+
+//** Get distribution identifier
+$dist = get_distname();
+
+if($dist['id'] == '') die('Linux distribution or version not recognized.');
+
+//** Include the distribution-specific installer class library and configuration
+if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once('dist/lib/'.$dist['baseid'].'.lib.php');
+include_once('dist/lib/'.$dist['id'].'.lib.php');
+include_once('dist/conf/'.$dist['id'].'.conf.php');
+
+//****************************************************************************************************
+//** Installer Interface
+//****************************************************************************************************
+$inst = new installer();
+swriteln($inst->lng(' Following will be a few questions for primary configuration so be careful.'));
+swriteln($inst->lng(' Default values are in [brackets] and can be accepted with <ENTER>.'));
+swriteln($inst->lng(' Tap in "quit" (without the quotes) to stop the installer.'."\n\n"));
+
+//** Check log file is writable (probably not root or sudo)
+if(!is_writable(dirname(ISPC_LOG_FILE))){
+ die("ERROR: Cannot write to the ".dirname(ISPC_LOG_FILE)." directory. Are you root or sudo ?\n\n");
+}
+
+if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) {
+ die('This software cannot be installed on a server wich runs ISPConfig 2.x.');
+}
+
+if(is_dir('/usr/local/ispconfig')) {
+ die('ISPConfig 3 installation found. Please use update.php instead if install.php to update the installation.');
+}
+
+//** Detect the installed applications
+$inst->find_installed_apps();
+
+//** Select the language
+$conf['language'] = $inst->simple_query('Select language', array('en','de'), 'en');
+
+//** Select installation mode
+$install_mode = $inst->simple_query('Installation mode', array('standard','expert'), 'standard');
+
+
+//** Get the hostname
+$tmp_out = array();
+exec('hostname -f', $tmp_out);
+$conf['hostname'] = $inst->free_query('Full qualified hostname (FQDN) of the server, eg server1.domain.tld ', $tmp_out[0]);
+unset($tmp_out);
+
+// Check if the mysql functions are loaded in PHP
+if(!function_exists('mysql_connect')) die('No PHP MySQL functions available. Please ensure that the PHP MySQL module is loaded.');
+
+//** Get MySQL root credentials
+$finished = false;
+do {
+ $tmp_mysql_server_host = $inst->free_query('MySQL server hostname', $conf['mysql']['host']);
+ $tmp_mysql_server_admin_user = $inst->free_query('MySQL root username', $conf['mysql']['admin_user']);
+ $tmp_mysql_server_admin_password = $inst->free_query('MySQL root password', $conf['mysql']['admin_password']);
+ $tmp_mysql_server_database = $inst->free_query('MySQL database to create', $conf['mysql']['database']);
+ $tmp_mysql_server_charset = $inst->free_query('MySQL charset', $conf['mysql']['charset']);
+
+ //* Initialize the MySQL server connection
+ if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
+ $conf['mysql']['host'] = $tmp_mysql_server_host;
+ $conf['mysql']['admin_user'] = $tmp_mysql_server_admin_user;
+ $conf['mysql']['admin_password'] = $tmp_mysql_server_admin_password;
+ $conf['mysql']['database'] = $tmp_mysql_server_database;
+ $conf['mysql']['charset'] = $tmp_mysql_server_charset;
+ $finished = true;
+ } else {
+ swriteln($inst->lng('Unable to connect to the specified MySQL server').' '.mysql_error());
+ }
+} while ($finished == false);
+unset($finished);
+
+// Resolve the IP address of the MySQL hostname.
+$tmp = explode(':',$conf['mysql']['host']);
+if(!$conf['mysql']['ip'] = gethostbyname($tmp[0])) die('Unable to resolve hostname'.$tmp[0]);
+unset($tmp);
+
+
+//** Initializing database connection
+include_once('lib/mysql.lib.php');
+$inst->db = new db();
+
+//** Begin with standard or expert installation
+if($install_mode == 'standard') {
+
+ //* Create the MySQL database
+ $inst->configure_database();
+
+ //* Insert the Server record into the database
+ $inst->add_database_server_record();
+
+ //* Configure Postfix
+ $inst->configure_postfix();
+
+ //* Configure Mailman
+ $inst->configure_mailman('install');
+
+ //* Configure jailkit
+ swriteln('Configuring Jailkit');
+ $inst->configure_jailkit();
+
+ if($conf['dovecot']['installed'] == true) {
+ //* Configure Dovecot
+ swriteln('Configuring Dovecot');
+ $inst->configure_dovecot();
+ } else {
+ //* Configure saslauthd
+ swriteln('Configuring SASL');
+ $inst->configure_saslauthd();
+
+ //* Configure PAM
+ swriteln('Configuring PAM');
+ $inst->configure_pam();
+
+ //* Configure Courier
+ swriteln('Configuring Courier');
+ $inst->configure_courier();
+ }
+
+ //* Configure Spamasassin
+ swriteln('Configuring Spamassassin');
+ $inst->configure_spamassassin();
+
+ //* Configure Amavis
+ swriteln('Configuring Amavisd');
+ $inst->configure_amavis();
+
+ //* Configure Getmail
+ swriteln('Configuring Getmail');
+ $inst->configure_getmail();
+
+
+ //* Configure Pureftpd
+ swriteln('Configuring Pureftpd');
+ $inst->configure_pureftpd();
+
+ //* Configure DNS
+ if($conf['powerdns']['installed'] == true) {
+ swriteln('Configuring PowerDNS');
+ $inst->configure_powerdns();
+ } elseif($conf['bind']['installed'] == true) {
+ swriteln('Configuring BIND');
+ $inst->configure_bind();
+ } else {
+ swriteln('Configuring MyDNS');
+ $inst->configure_mydns();
+ }
+
+ //* Configure Apache
+ swriteln('Configuring Apache');
+ $inst->configure_apache();
+
+ //** Configure Vlogger
+ swriteln('Configuring Vlogger');
+ $inst->configure_vlogger();
+
+ //** Configure apps vhost
+ swriteln('Configuring Apps vhost');
+ $inst->configure_apps_vhost();
+
+ //* Configure Firewall
+ swriteln('Configuring Firewall');
+ $inst->configure_firewall();
+
+ //* Configure ISPConfig
+ swriteln('Installing ISPConfig');
+
+ //** Customize the port ISPConfig runs on
+ $conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', '8080');
+
+ $inst->install_ispconfig();
+
+ //* Configure DBServer
+ swriteln('Configuring DBServer');
+ $inst->configure_dbserver();
+
+ //* Configure ISPConfig
+ swriteln('Installing ISPConfig crontab');
+ $inst->install_crontab();
+
+ swriteln('Restarting services ...');
+ if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart');
+ if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
+ if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
+ if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
+ if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
+ if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
+ if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
+ if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
+ if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
+ if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
+ if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
+ if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
+ if($conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
+ if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
+ if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
+ if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
+ if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
+
+}else{
+
+ //* In expert mode, we select the services in the following steps, only db is always available
+ $conf['services']['mail'] = false;
+ $conf['services']['web'] = false;
+ $conf['services']['dns'] = false;
+ $conf['services']['db'] = true;
+
+
+ //** Get Server ID
+ // $conf['server_id'] = $inst->free_query('Unique Numeric ID of the server','1');
+ // Server ID is an autoInc value of the mysql database now
+
+ if(strtolower($inst->simple_query('Shall this server join an existing ISPConfig multiserver setup',array('y','n'),'n')) == 'y') {
+ $conf['mysql']['master_slave_setup'] = 'y';
+
+ //** Get MySQL root credentials
+ $finished = false;
+ do {
+ $tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host']);
+ $tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user']);
+ $tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password']);
+ $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database']);
+
+ //* Initialize the MySQL server connection
+ if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
+ $conf['mysql']['master_host'] = $tmp_mysql_server_host;
+ $conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
+ $conf['mysql']['master_admin_password'] = $tmp_mysql_server_admin_password;
+ $conf['mysql']['master_database'] = $tmp_mysql_server_database;
+ $finished = true;
+ } else {
+ swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
+ }
+ } while ($finished == false);
+ unset($finished);
+
+ // initialize the connection to the master database
+ $inst->dbmaster = new db();
+ if($inst->dbmaster->linkId) $inst->dbmaster->closeConn();
+ $inst->dbmaster->dbHost = $conf['mysql']["master_host"];
+ $inst->dbmaster->dbName = $conf['mysql']["master_database"];
+ $inst->dbmaster->dbUser = $conf['mysql']["master_admin_user"];
+ $inst->dbmaster->dbPass = $conf['mysql']["master_admin_password"];
+
+ } else {
+ // the master DB is the same then the slave DB
+ $inst->dbmaster = $inst->db;
+ }
+
+ //* Create the mysql database
+ $inst->configure_database();
+
+ //* Insert the Server record into the database
+ swriteln('Adding ISPConfig server record to database.');
+ swriteln('');
+ $inst->add_database_server_record();
+
+
+ if(strtolower($inst->simple_query('Configure Mail', array('y','n') ,'y') ) == 'y') {
+
+ $conf['services']['mail'] = true;
+
+ //* Configure Postfix
+ swriteln('Configuring Postfix');
+ $inst->configure_postfix();
+
+ //* Configure Mailman
+ swriteln('Configuring Mailman');
+ $inst->configure_mailman();
+
+ if($conf['dovecot']['installed'] == true) {
+ //* Configure dovecot
+ swriteln('Configuring Dovecot');
+ $inst->configure_dovecot();
+ } else {
+
+ //* Configure saslauthd
+ swriteln('Configuring SASL');
+ $inst->configure_saslauthd();
+
+ //* Configure PAM
+ swriteln('Configuring PAM');
+ $inst->configure_pam();
+
+ //* Configure courier
+ swriteln('Configuring Courier');
+ $inst->configure_courier();
+ }
+
+ //* Configure Spamasassin
+ swriteln('Configuring Spamassassin');
+ $inst->configure_spamassassin();
+
+ //* Configure Amavis
+ swriteln('Configuring Amavisd');
+ $inst->configure_amavis();
+
+ //* Configure Getmail
+ swriteln('Configuring Getmail');
+ $inst->configure_getmail();
+
+ if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
+ if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
+ if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
+ if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
+ if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
+ if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
+ if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
+ if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
+ if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
+ if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
+ if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
+ }
+
+ //** Configure Jailkit
+ if(strtolower($inst->simple_query('Configure Jailkit', array('y','n'),'y') ) == 'y') {
+ swriteln('Configuring Jailkit');
+ $inst->configure_jailkit();
+ }
+
+ //** Configure Pureftpd
+ if(strtolower($inst->simple_query('Configure FTP Server', array('y','n'),'y') ) == 'y') {
+ swriteln('Configuring Pureftpd');
+ $inst->configure_pureftpd();
+ if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
+ }
+
+ //** Configure DNS
+ if(strtolower($inst->simple_query('Configure DNS Server',array('y','n'),'y')) == 'y') {
+ $conf['services']['dns'] = true;
+ //* Configure DNS
+ if($conf['powerdns']['installed'] == true) {
+ swriteln('Configuring PowerDNS');
+ $inst->configure_powerdns();
+ if($conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
+ } elseif($conf['bind']['installed'] == true) {
+ swriteln('Configuring BIND');
+ $inst->configure_bind();
+ if($conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
+ } else {
+ swriteln('Configuring MyDNS');
+ $inst->configure_mydns();
+ if($conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
+ }
+
+ }
+
+ //** Configure Apache
+ swriteln("\nHint: If this server shall run the ISPConfig interface, select 'y' in the 'Configure Apache Server' option.\n");
+ if(strtolower($inst->simple_query('Configure Apache Server',array('y','n'),'y')) == 'y') {
+ $conf['services']['web'] = true;
+ swriteln('Configuring Apache');
+ $inst->configure_apache();
+
+ //** Configure Vlogger
+ swriteln('Configuring Vlogger');
+ $inst->configure_vlogger();
+
+ //** Configure apps vhost
+ swriteln('Configuring Apps vhost');
+ $inst->configure_apps_vhost();
+ }
+
+ //** Configure Firewall
+ if(strtolower($inst->simple_query('Configure Firewall Server',array('y','n'),'y')) == 'y') {
+ swriteln('Configuring Firewall');
+ $inst->configure_firewall();
+ }
+ //** Configure ISPConfig :-)
+ if(strtolower($inst->simple_query('Install ISPConfig Web Interface',array('y','n'),'y')) == 'y') {
+ swriteln('Installing ISPConfig');
+
+ //** We want to check if the server is a module or cgi based php enabled server
+ //** TODO: Don't always ask for this somehow ?
+ /*
+ $fast_cgi = $inst->simple_query('CGI PHP Enabled Server?', array('yes','no'),'no');
+
+ if($fast_cgi == 'yes') {
+ $alias = $inst->free_query('Script Alias', '/php/');
+ $path = $inst->free_query('Script Alias Path', '/path/to/cgi/bin');
+ $conf['apache']['vhost_cgi_alias'] = sprintf('ScriptAlias %s %s', $alias, $path);
+ } else {
+ $conf['apache']['vhost_cgi_alias'] = "";
+ }
+ */
+
+ //** Customise the port ISPConfig runs on
+ $conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', '8080');
+
+ if(strtolower($inst->simple_query('Enable SSL for the ISPConfig web interface',array('y','n'),'y')) == 'y') {
+ $inst->make_ispconfig_ssl_cert();
+ }
+
+ $inst->install_ispconfig_interface = true;
+
+ } else {
+ $inst->install_ispconfig_interface = false;
+ }
+
+ $inst->install_ispconfig();
+
+ //* Configure DBServer
+ swriteln('Configuring DBServer');
+ $inst->configure_dbserver();
+
+ //* Configure ISPConfig
+ swriteln('Installing ISPConfig crontab');
+ $inst->install_crontab();
+ if($conf['apache']['init_script'] != '' && @is_file($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
+
+
+
+} //* << $install_mode / 'Standard' or Genius
+
+
+echo "Installation completed.\n";
+
+
+?>
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index b941f45..2e74e2e 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -1,1788 +1,1788 @@
-<?php
-
-/*
-Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class installer_base {
-
- var $wb = array();
- var $language = 'en';
- var $db;
- public $conf;
- public $install_ispconfig_interface = true;
- public $is_update = false; // true if it is an update, falsi if it is a new install
-
-
- public function __construct() {
- global $conf; //TODO: maybe $conf should be passed to constructor
- //$this->conf = $conf;
- }
-
- //: TODO Implement the translation function and language files for the installer.
- public function lng($text) {
- return $text;
- }
-
- public function error($msg) {
- die('ERROR: '.$msg."\n");
- }
-
- public function warning($msg) {
- echo('WARNING: '.$msg."\n");
- }
-
- public function simple_query($query, $answers, $default) {
- $finished = false;
- do {
- $answers_str = implode(',', $answers);
- swrite($this->lng($query).' ('.$answers_str.') ['.$default.']: ');
- $input = sread();
-
- //* Stop the installation
- if($input == 'quit') {
- swriteln($this->lng("Installation terminated by user.\n"));
- die();
- }
-
- //* Select the default
- if($input == '') {
- $answer = $default;
- $finished = true;
- }
-
- //* Set answer id valid
- if(in_array($input, $answers)) {
- $answer = $input;
- $finished = true;
- }
-
- } while ($finished == false);
- swriteln();
- return $answer;
- }
-
- public function free_query($query,$default) {
- swrite($this->lng($query).' ['.$default.']: ');
- $input = sread();
-
- //* Stop the installation
- if($input == 'quit') {
- swriteln($this->lng("Installation terminated by user.\n"));
- die();
- }
-
- $answer = ($input == '') ? $default : $input;
- swriteln();
- return $answer;
- }
-
- /*
- // TODO: this function is not used atmo I think - pedro
- function request_language(){
-
- swriteln(lng('Enter your language'));
- swriteln(lng('de, en'));
-
- }
- */
-
- //** Detect installed applications
- public function find_installed_apps() {
- global $conf;
-
- if(is_installed('mysql') || is_installed('mysqld')) $conf['mysql']['installed'] = true;
- if(is_installed('postfix')) $conf['postfix']['installed'] = true;
- if(is_installed('mailman')) $conf['mailman']['installed'] = true;
- if(is_installed('apache') || is_installed('apache2') || is_installed('httpd')) $conf['apache']['installed'] = true;
- if(is_installed('getmail')) $conf['getmail']['installed'] = true;
+<?php
+
+/*
+Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class installer_base {
+
+ var $wb = array();
+ var $language = 'en';
+ var $db;
+ public $conf;
+ public $install_ispconfig_interface = true;
+ public $is_update = false; // true if it is an update, falsi if it is a new install
+
+
+ public function __construct() {
+ global $conf; //TODO: maybe $conf should be passed to constructor
+ //$this->conf = $conf;
+ }
+
+ //: TODO Implement the translation function and language files for the installer.
+ public function lng($text) {
+ return $text;
+ }
+
+ public function error($msg) {
+ die('ERROR: '.$msg."\n");
+ }
+
+ public function warning($msg) {
+ echo('WARNING: '.$msg."\n");
+ }
+
+ public function simple_query($query, $answers, $default) {
+ $finished = false;
+ do {
+ $answers_str = implode(',', $answers);
+ swrite($this->lng($query).' ('.$answers_str.') ['.$default.']: ');
+ $input = sread();
+
+ //* Stop the installation
+ if($input == 'quit') {
+ swriteln($this->lng("Installation terminated by user.\n"));
+ die();
+ }
+
+ //* Select the default
+ if($input == '') {
+ $answer = $default;
+ $finished = true;
+ }
+
+ //* Set answer id valid
+ if(in_array($input, $answers)) {
+ $answer = $input;
+ $finished = true;
+ }
+
+ } while ($finished == false);
+ swriteln();
+ return $answer;
+ }
+
+ public function free_query($query,$default) {
+ swrite($this->lng($query).' ['.$default.']: ');
+ $input = sread();
+
+ //* Stop the installation
+ if($input == 'quit') {
+ swriteln($this->lng("Installation terminated by user.\n"));
+ die();
+ }
+
+ $answer = ($input == '') ? $default : $input;
+ swriteln();
+ return $answer;
+ }
+
+ /*
+ // TODO: this function is not used atmo I think - pedro
+ function request_language(){
+
+ swriteln(lng('Enter your language'));
+ swriteln(lng('de, en'));
+
+ }
+ */
+
+ //** Detect installed applications
+ public function find_installed_apps() {
+ global $conf;
+
+ if(is_installed('mysql') || is_installed('mysqld')) $conf['mysql']['installed'] = true;
+ if(is_installed('postfix')) $conf['postfix']['installed'] = true;
+ if(is_installed('mailman')) $conf['mailman']['installed'] = true;
+ if(is_installed('apache') || is_installed('apache2') || is_installed('httpd')) $conf['apache']['installed'] = true;
+ if(is_installed('getmail')) $conf['getmail']['installed'] = true;
if(is_installed('courierlogger')) $conf['courier']['installed'] = true;
- if(is_installed('dovecot')) $conf['dovecot']['installed'] = true;
- if(is_installed('saslsauthd')) $conf['saslauthd']['installed'] = true;
- if(is_installed('amavisd-new')) $conf['amavis']['installed'] = true;
- if(is_installed('clamdscan')) $conf['clamav']['installed'] = true;
- if(is_installed('pure-ftpd') || is_installed('pure-ftpd-wrapper')) $conf['pureftpd']['installed'] = true;
- if(is_installed('mydns') || is_installed('mydns-ng')) $conf['mydns']['installed'] = true;
- if(is_installed('jk_chrootsh')) $conf['jailkit']['installed'] = true;
- if(is_installed('pdns_server') || is_installed('pdns_control')) $conf['powerdns']['installed'] = true;
- if(is_installed('named') || is_installed('bind') || is_installed('bind9')) $conf['bind']['installed'] = true;
-
- }
-
- /** Create the database for ISPConfig */
- public function configure_database() {
- global $conf;
-
- //** Create the database
- if(!$this->db->query('CREATE DATABASE IF NOT EXISTS '.$conf['mysql']['database'].' DEFAULT CHARACTER SET '.$conf['mysql']['charset'])) {
- $this->error('Unable to create MySQL database: '.$conf['mysql']['database'].'.');
- }
-
- //* Set the database name in the DB library
- $this->db->dbName = $conf['mysql']['database'];
-
- //* Load the database dump into the database, if database contains no tables
- $db_tables = $this->db->getTables();
- if(count($db_tables) > 0) {
- $this->error('Stopped: Database already contains some tables.');
- } else {
- if($conf['mysql']['admin_password'] == '') {
- caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['mysql']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null",
- __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in ispconfig3.sql');
- } else {
- caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['mysql']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null",
- __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in ispconfig3.sql');
- }
- $db_tables = $this->db->getTables();
- if(count($db_tables) == 0) {
- $this->error('Unable to load SQL-Dump into database table.');
- }
-
- //* Load system.ini into the sys_ini table
- $system_ini = $this->db->quote(rf('tpl/system.ini.master'));
- $this->db->query("UPDATE sys_ini SET config = '$system_ini' WHERE sysini_id = 1");
-
- }
- }
-
- //** Create the server record in the database
- public function add_database_server_record() {
-
- global $conf;
-
- if($conf['mysql']['host'] == 'localhost') {
- $from_host = 'localhost';
- } else {
- $from_host = $conf['hostname'];
- }
-
- // Delete ISPConfig user in the local database, in case that it exists
- $this->db->query("DELETE FROM mysql.user WHERE User = '".$conf['mysql']['ispconfig_user']."' AND Host = '".$from_host."';");
- $this->db->query("DELETE FROM mysql.db WHERE Db = '".$conf['mysql']['database']."' AND Host = '".$from_host."';");
- $this->db->query('FLUSH PRIVILEGES;');
-
- //* Create the ISPConfig database user in the local database
- $query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON '.$conf['mysql']['database'].".* "
- ."TO '".$conf['mysql']['ispconfig_user']."'@'".$from_host."' "
- ."IDENTIFIED BY '".$conf['mysql']['ispconfig_password']."';";
- if(!$this->db->query($query)) {
- $this->error('Unable to create database user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage);
- }
-
- //* Reload database privelages
- $this->db->query('FLUSH PRIVILEGES;');
-
- //* Set the database name in the DB library
- $this->db->dbName = $conf['mysql']['database'];
-
- $tpl_ini_array = ini_to_array(rf('tpl/server.ini.master'));
-
- //* Update further distribution specific parameters for server config here
- //* HINT: Every line added here has to be added in update.lib.php too!!
- $tpl_ini_array['web']['vhost_conf_dir'] = $conf['apache']['vhost_conf_dir'];
- $tpl_ini_array['web']['vhost_conf_enabled_dir'] = $conf['apache']['vhost_conf_enabled_dir'];
- $tpl_ini_array['jailkit']['jailkit_chroot_app_programs'] = $conf['jailkit']['jailkit_chroot_app_programs'];
- $tpl_ini_array['fastcgi']['fastcgi_phpini_path'] = $conf['fastcgi']['fastcgi_phpini_path'];
- $tpl_ini_array['fastcgi']['fastcgi_starter_path'] = $conf['fastcgi']['fastcgi_starter_path'];
- $tpl_ini_array['server']['hostname'] = $conf['hostname'];
- $tpl_ini_array['server']['ip_address'] = @gethostbyname($conf['hostname']);
- $tpl_ini_array['web']['website_basedir'] = $conf['web']['website_basedir'];
- $tpl_ini_array['web']['website_path'] = $conf['web']['website_path'];
- $tpl_ini_array['web']['website_symlinks'] = $conf['web']['website_symlinks'];
- $tpl_ini_array['cron']['crontab_dir'] = $conf['cron']['crontab_dir'];
- $tpl_ini_array['web']['security_level'] = 20;
- $tpl_ini_array['web']['user'] = $conf['apache']['user'];
- $tpl_ini_array['web']['group'] = $conf['apache']['group'];
- $tpl_ini_array['web']['php_ini_path_apache'] = $conf['apache']['php_ini_path_apache'];
- $tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi'];
- $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier';
- $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop';
- $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user'];
- $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group'];
- $tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir'];
- $tpl_ini_array['dns']['named_conf_path'] = $conf['bind']['named_conf_path'];
- $tpl_ini_array['dns']['named_conf_local_path'] = $conf['bind']['named_conf_local_path'];
-
- if (array_key_exists('awstats', $conf)) {
- foreach ($conf['awstats'] as $aw_sett => $aw_value) {
- $tpl_ini_array['web']['awstats_'.$aw_sett] = $aw_value;
- }
- }
-
- $server_ini_content = array_to_ini($tpl_ini_array);
- $server_ini_content = mysql_real_escape_string($server_ini_content);
-
- $mail_server_enabled = ($conf['services']['mail'])?1:0;
- $web_server_enabled = ($conf['services']['web'])?1:0;
- $dns_server_enabled = ($conf['services']['dns'])?1:0;
- $file_server_enabled = ($conf['services']['file'])?1:0;
- $db_server_enabled = ($conf['services']['db'])?1:0;
- $vserver_server_enabled = ($conf['services']['vserver'])?1:0;
-
- //** Get the database version number based on the patchfiles
- $found = true;
- $current_db_version = 1;
- while($found == true) {
- $next_db_version = intval($current_db_version + 1);
- $patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql';
- if(is_file($patch_filename)) {
- $current_db_version = $next_db_version;
- } else {
- $found = false;
- }
- }
- $current_db_version = intval($current_db_version);
-
-
- if($conf['mysql']['master_slave_setup'] == 'y') {
-
- //* Insert the server record in master DB
- $sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES (1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
- $this->dbmaster->query($sql);
- $conf['server_id'] = $this->dbmaster->insertID();
- $conf['server_id'] = $conf['server_id'];
-
- //* Insert the same record in the local DB
- $sql = "INSERT INTO `server` (`server_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES ('".$conf['server_id']."',1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
- $this->db->query($sql);
-
- //* username for the ispconfig user
- $conf['mysql']['master_ispconfig_user'] = 'ispcsrv'.$conf['server_id'];
-
- $this->grant_master_database_rights();
-
- } else {
- //* Insert the server, if its not a mster / slave setup
- $sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES (1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
- $this->db->query($sql);
- $conf['server_id'] = $this->db->insertID();
- $conf['server_id'] = $conf['server_id'];
- }
-
-
- }
-
- public function grant_master_database_rights() {
- global $conf;
-
- /*
- * The following code is a little bit tricky:
- * * If we HAVE a master-slave - Setup then the client has to grant the rights for himself
- * at the master.
- * * If we DO NOT have a master-slave - Setup then we have two possibilities
- * 1) it is a single server
- * 2) it is the MASTER of n clients
- */
- $hosts = array();
-
- if($conf['mysql']['master_slave_setup'] == 'y') {
- /*
- * it is a master-slave - Setup so the slave has to grant its rights in the master
- * database
- */
-
- //* insert the ispconfig user in the remote server
- $from_host = $conf['hostname'];
- $from_ip = gethostbyname($conf['hostname']);
-
- $hosts[$from_host]['user'] = $conf['mysql']['master_ispconfig_user'];
- $hosts[$from_host]['db'] = $conf['mysql']['master_database'];
- $hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password'];
-
- $hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user'];
- $hosts[$from_ip]['db'] = $conf['mysql']['master_database'];
- $hosts[$from_ip]['pwd'] = $conf['mysql']['master_ispconfig_password'];
- } else{
- /*
- * it is NOT a master-slave - Setup so we have to find out all clients and their
- * host
- */
- $query = "SELECT Host, User FROM mysql.user WHERE User like 'ispcsrv%' ORDER BY User, Host";
- $data = $this->dbmaster->queryAllRecords($query);
- if($data === false) {
- $this->error('Unable to get the user rights: '.$value['db'].' Error: '.$this->dbmaster->errorMessage);
- }
- foreach ($data as $item){
- $hosts[$item['Host']]['user'] = $item['User'];
- $hosts[$item['Host']]['db'] = $conf['mysql']['master_database'];
- $hosts[$item['Host']]['pwd'] = ''; // the user already exists, so we need no pwd!
- }
- }
-
- if(count($hosts) > 0) {
- foreach($hosts as $host => $value) {
- /*
- * If a pwd exists, this means, we have to add the new user (and his pwd).
- * if not, the user already exists and we do not need the pwd
- */
- if ($value['pwd'] != ''){
- $query = "CREATE USER '".$value['user']."'@'".$host."' IDENTIFIED BY '" . $value['pwd'] . "'";
- $this->dbmaster->query($query); // ignore the error
- }
-
- /*
- * Try to delete all rights of the user in case that it exists.
- * In Case that it will not exist, do nothing (ignore the error!)
- */
- $query = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '".$value['user']."'@'".$host."' ";
- $this->dbmaster->query($query); // ignore the error
-
- //* Create the ISPConfig database user in the remote database
- $query = "GRANT SELECT ON ".$value['db'].".`server` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
- }
-
- $query = "GRANT SELECT, INSERT ON ".$value['db'].".`sys_log` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $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."' ";
- if(!$this->dbmaster->query($query)) {
- $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'].".`software_update_inst` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $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(`updated`) ON ".$value['db'].".`server` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $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 (`ssl_request`, `ssl_cert`, `ssl_action`) ON ".$value['db'].".`web_domain` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
- }
-
- $query = "GRANT SELECT ON ".$value['db'].".`sys_group` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $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 (`action_state`, `response`) ON ".$value['db'].".`sys_remoteaction` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
- }
-
- $query = "GRANT SELECT, INSERT , DELETE ON ".$value['db'].".`monitor_data` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
- }
-
- $query = "GRANT SELECT, INSERT, UPDATE ON ".$value['db'].".`mail_traffic` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
- }
-
- $query = "GRANT SELECT, INSERT, UPDATE ON ".$value['db'].".`web_traffic` TO '".$value['user']."'@'".$host."' ";
- if(!$this->dbmaster->query($query)) {
- $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
- }
- }
-
- /*
- * It is all done. Relod the rights...
- */
- $this->dbmaster->query('FLUSH PRIVILEGES;');
- }
-
- }
-
- //** writes postfix configuration files
- public function process_postfix_config($configfile) {
- global $conf;
-
- $config_dir = $conf['postfix']['config_dir'].'/';
- $full_file_name = $config_dir.$configfile;
- //* Backup exiting file
- if(is_file($full_file_name)) {
- copy($full_file_name, $config_dir.$configfile.'~');
- }
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
- $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
- $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content);
- $content = str_replace('{server_id}', $conf['server_id'], $content);
- wf($full_file_name, $content);
- }
-
- public function configure_jailkit() {
- global $conf;
-
- $cf = $conf['jailkit'];
- $config_dir = $cf['config_dir'];
- $jk_init = $cf['jk_init'];
- $jk_chrootsh = $cf['jk_chrootsh'];
-
- if (is_dir($config_dir)) {
- if(is_file($config_dir.'/'.$jk_init)) copy($config_dir.'/'.$jk_init, $config_dir.'/'.$jk_init.'~');
- if(is_file($config_dir.'/'.$jk_chrootsh.'.master')) copy($config_dir.'/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh.'~');
-
- copy('tpl/'.$jk_init.'.master', $config_dir.'/'.$jk_init);
- copy('tpl/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh);
- }
-
- }
-
- public function configure_mailman($status = 'insert') {
- global $conf;
-
- $config_dir = $conf['mailman']['config_dir'].'/';
- $full_file_name = $config_dir.'mm_cfg.py';
- //* Backup exiting file
- if(is_file($full_file_name)) {
- copy($full_file_name, $config_dir.'mm_cfg.py~');
- }
-
- // load files
- $content = rf('tpl/mm_cfg.py.master');
- $old_file = rf($full_file_name);
-
- $old_options = array();
- $lines = explode("\n", $old_file);
- foreach ($lines as $line)
- {
- if (strlen($line) && substr($line, 0, 1) != '#')
- {
- list($key, $value) = explode("=", $line);
- if (!empty($value))
- {
- $key = rtrim($key);
- $old_options[$key] = trim($value);
- }
- }
- }
-
- $virtual_domains = '';
- if($status == 'update')
- {
- // create virtual_domains list
- $domainAll = $this->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain");
-
- foreach($domainAll as $domain)
- {
- if ($domainAll[0]['domain'] == $domain['domain'])
- $virtual_domains .= "'".$domain['domain']."'";
- else
- $virtual_domains .= ", '".$domain['domain']."'";
- }
- }
- else
- $virtual_domains = "' '";
-
- $content = str_replace('{hostname}', $conf['hostname'], $content);
- $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content);
- $content = str_replace('{virtual_domains}', $virtual_domains, $content);
-
- wf($full_file_name, $content);
- }
-
- public function configure_postfix($options = '') {
- global $conf;
- $cf = $conf['postfix'];
- $config_dir = $cf['config_dir'];
-
- if(!is_dir($config_dir)) {
- $this->error("The postfix configuration directory '$config_dir' does not exist.");
- }
-
- //* mysql-virtual_domains.cf
- $this->process_postfix_config('mysql-virtual_domains.cf');
-
- //* mysql-virtual_forwardings.cf
- $this->process_postfix_config('mysql-virtual_forwardings.cf');
-
- //* mysql-virtual_mailboxes.cf
- $this->process_postfix_config('mysql-virtual_mailboxes.cf');
-
- //* mysql-virtual_email2email.cf
- $this->process_postfix_config('mysql-virtual_email2email.cf');
-
- //* mysql-virtual_transports.cf
- $this->process_postfix_config('mysql-virtual_transports.cf');
-
- //* mysql-virtual_recipient.cf
- $this->process_postfix_config('mysql-virtual_recipient.cf');
-
- //* mysql-virtual_sender.cf
- $this->process_postfix_config('mysql-virtual_sender.cf');
-
- //* mysql-virtual_client.cf
- $this->process_postfix_config('mysql-virtual_client.cf');
-
- //* mysql-virtual_relaydomains.cf
- $this->process_postfix_config('mysql-virtual_relaydomains.cf');
-
- //* mysql-virtual_relayrecipientmaps.cf
- $this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf');
-
- //* Changing mode and group of the new created config files.
- caselog('chmod o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null',
- __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed');
- caselog('chgrp '.$cf['group'].' '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null',
- __FILE__, __LINE__, 'chgrp on mysql-virtual_*.cf*', 'chgrp on mysql-virtual_*.cf* failed');
-
- //* Creating virtual mail user and group
- $command = 'groupadd -g '.$cf['vmail_groupid'].' '.$cf['vmail_groupname'];
- 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");
-
- $postconf_commands = array (
- 'myhostname = '.$conf['hostname'],
- 'mydestination = '.$conf['hostname'].', localhost, localhost.localdomain',
- 'mynetworks = 127.0.0.0/8 [::1]/128',
- 'alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases',
- 'alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases',
- 'virtual_alias_domains =',
- 'virtual_alias_maps = proxy:mysql:'.$config_dir.'/mysql-virtual_forwardings.cf, proxy:mysql:'.$config_dir.'/mysql-virtual_email2email.cf, hash:/var/lib/mailman/data/virtual-mailman',
- 'virtual_mailbox_domains = proxy:mysql:'.$config_dir.'/mysql-virtual_domains.cf',
- 'virtual_mailbox_maps = proxy:mysql:'.$config_dir.'/mysql-virtual_mailboxes.cf',
- 'virtual_mailbox_base = '.$cf['vmail_mailbox_base'],
- 'virtual_uid_maps = static:'.$cf['vmail_userid'],
- 'virtual_gid_maps = static:'.$cf['vmail_groupid'],
- 'smtpd_sasl_auth_enable = yes',
- 'broken_sasl_auth_clients = yes',
- 'smtpd_sasl_authenticated_header = yes',
- 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:'.$config_dir.'/mysql-virtual_recipient.cf, reject_unauth_destination',
- 'smtpd_use_tls = yes',
- 'smtpd_tls_security_level = may',
- 'smtpd_tls_cert_file = '.$config_dir.'/smtpd.cert',
- 'smtpd_tls_key_file = '.$config_dir.'/smtpd.key',
- 'transport_maps = proxy:mysql:'.$config_dir.'/mysql-virtual_transports.cf',
- 'relay_domains = mysql:'.$config_dir.'/mysql-virtual_relaydomains.cf',
- 'relay_recipient_maps = mysql:'.$config_dir.'/mysql-virtual_relayrecipientmaps.cf',
- 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps',
- 'smtpd_sender_restrictions = check_sender_access mysql:'.$config_dir.'/mysql-virtual_sender.cf',
- 'smtpd_client_restrictions = check_client_access mysql:'.$config_dir.'/mysql-virtual_client.cf',
- 'maildrop_destination_concurrency_limit = 1',
- 'maildrop_destination_recipient_limit = 1',
- 'virtual_transport = maildrop',
- 'header_checks = regexp:'.$config_dir.'/header_checks',
- 'mime_header_checks = regexp:'.$config_dir.'/mime_header_checks',
- 'nested_header_checks = regexp:'.$config_dir.'/nested_header_checks',
- 'body_checks = regexp:'.$config_dir.'/body_checks',
- 'owner_request_special = no'
- );
-
- //* Create the header and body check files
- touch($config_dir.'/header_checks');
- touch($config_dir.'/mime_header_checks');
- touch($config_dir.'/nested_header_checks');
- touch($config_dir.'/body_checks');
-
- //* Create the mailman files
- exec('mkdir -p /var/lib/mailman/data');
- touch('/var/lib/mailman/data/aliases');
- exec('postmap /var/lib/mailman/data/aliases');
- touch('/var/lib/mailman/data/virtual-mailman');
- exec('postmap /var/lib/mailman/data/virtual-mailman');
-
- //* Make a backup copy of the main.cf file
- copy($config_dir.'/main.cf', $config_dir.'/main.cf~');
-
- //* Executing the postconf commands
- foreach($postconf_commands as $cmd) {
- $command = "postconf -e '$cmd'";
- caselog($command." &> /dev/null", __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command);
- }
-
- if(!stristr($options,'dont-create-certs')) {
- //* Create the SSL certificate
- $command = 'cd '.$config_dir.'; '
+ if(is_installed('dovecot')) $conf['dovecot']['installed'] = true;
+ if(is_installed('saslsauthd')) $conf['saslauthd']['installed'] = true;
+ if(is_installed('amavisd-new')) $conf['amavis']['installed'] = true;
+ if(is_installed('clamdscan')) $conf['clamav']['installed'] = true;
+ if(is_installed('pure-ftpd') || is_installed('pure-ftpd-wrapper')) $conf['pureftpd']['installed'] = true;
+ if(is_installed('mydns') || is_installed('mydns-ng')) $conf['mydns']['installed'] = true;
+ if(is_installed('jk_chrootsh')) $conf['jailkit']['installed'] = true;
+ if(is_installed('pdns_server') || is_installed('pdns_control')) $conf['powerdns']['installed'] = true;
+ if(is_installed('named') || is_installed('bind') || is_installed('bind9')) $conf['bind']['installed'] = true;
+
+ }
+
+ /** Create the database for ISPConfig */
+ public function configure_database() {
+ global $conf;
+
+ //** Create the database
+ if(!$this->db->query('CREATE DATABASE IF NOT EXISTS '.$conf['mysql']['database'].' DEFAULT CHARACTER SET '.$conf['mysql']['charset'])) {
+ $this->error('Unable to create MySQL database: '.$conf['mysql']['database'].'.');
+ }
+
+ //* Set the database name in the DB library
+ $this->db->dbName = $conf['mysql']['database'];
+
+ //* Load the database dump into the database, if database contains no tables
+ $db_tables = $this->db->getTables();
+ if(count($db_tables) > 0) {
+ $this->error('Stopped: Database already contains some tables.');
+ } else {
+ if($conf['mysql']['admin_password'] == '') {
+ caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['mysql']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null",
+ __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in ispconfig3.sql');
+ } else {
+ caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['mysql']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null",
+ __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in ispconfig3.sql');
+ }
+ $db_tables = $this->db->getTables();
+ if(count($db_tables) == 0) {
+ $this->error('Unable to load SQL-Dump into database table.');
+ }
+
+ //* Load system.ini into the sys_ini table
+ $system_ini = $this->db->quote(rf('tpl/system.ini.master'));
+ $this->db->query("UPDATE sys_ini SET config = '$system_ini' WHERE sysini_id = 1");
+
+ }
+ }
+
+ //** Create the server record in the database
+ public function add_database_server_record() {
+
+ global $conf;
+
+ if($conf['mysql']['host'] == 'localhost') {
+ $from_host = 'localhost';
+ } else {
+ $from_host = $conf['hostname'];
+ }
+
+ // Delete ISPConfig user in the local database, in case that it exists
+ $this->db->query("DELETE FROM mysql.user WHERE User = '".$conf['mysql']['ispconfig_user']."' AND Host = '".$from_host."';");
+ $this->db->query("DELETE FROM mysql.db WHERE Db = '".$conf['mysql']['database']."' AND Host = '".$from_host."';");
+ $this->db->query('FLUSH PRIVILEGES;');
+
+ //* Create the ISPConfig database user in the local database
+ $query = 'GRANT SELECT, INSERT, UPDATE, DELETE ON '.$conf['mysql']['database'].".* "
+ ."TO '".$conf['mysql']['ispconfig_user']."'@'".$from_host."' "
+ ."IDENTIFIED BY '".$conf['mysql']['ispconfig_password']."';";
+ if(!$this->db->query($query)) {
+ $this->error('Unable to create database user: '.$conf['mysql']['ispconfig_user'].' Error: '.$this->db->errorMessage);
+ }
+
+ //* Reload database privelages
+ $this->db->query('FLUSH PRIVILEGES;');
+
+ //* Set the database name in the DB library
+ $this->db->dbName = $conf['mysql']['database'];
+
+ $tpl_ini_array = ini_to_array(rf('tpl/server.ini.master'));
+
+ //* Update further distribution specific parameters for server config here
+ //* HINT: Every line added here has to be added in update.lib.php too!!
+ $tpl_ini_array['web']['vhost_conf_dir'] = $conf['apache']['vhost_conf_dir'];
+ $tpl_ini_array['web']['vhost_conf_enabled_dir'] = $conf['apache']['vhost_conf_enabled_dir'];
+ $tpl_ini_array['jailkit']['jailkit_chroot_app_programs'] = $conf['jailkit']['jailkit_chroot_app_programs'];
+ $tpl_ini_array['fastcgi']['fastcgi_phpini_path'] = $conf['fastcgi']['fastcgi_phpini_path'];
+ $tpl_ini_array['fastcgi']['fastcgi_starter_path'] = $conf['fastcgi']['fastcgi_starter_path'];
+ $tpl_ini_array['server']['hostname'] = $conf['hostname'];
+ $tpl_ini_array['server']['ip_address'] = @gethostbyname($conf['hostname']);
+ $tpl_ini_array['web']['website_basedir'] = $conf['web']['website_basedir'];
+ $tpl_ini_array['web']['website_path'] = $conf['web']['website_path'];
+ $tpl_ini_array['web']['website_symlinks'] = $conf['web']['website_symlinks'];
+ $tpl_ini_array['cron']['crontab_dir'] = $conf['cron']['crontab_dir'];
+ $tpl_ini_array['web']['security_level'] = 20;
+ $tpl_ini_array['web']['user'] = $conf['apache']['user'];
+ $tpl_ini_array['web']['group'] = $conf['apache']['group'];
+ $tpl_ini_array['web']['php_ini_path_apache'] = $conf['apache']['php_ini_path_apache'];
+ $tpl_ini_array['web']['php_ini_path_cgi'] = $conf['apache']['php_ini_path_cgi'];
+ $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier';
+ $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop';
+ $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user'];
+ $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group'];
+ $tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir'];
+ $tpl_ini_array['dns']['named_conf_path'] = $conf['bind']['named_conf_path'];
+ $tpl_ini_array['dns']['named_conf_local_path'] = $conf['bind']['named_conf_local_path'];
+
+ if (array_key_exists('awstats', $conf)) {
+ foreach ($conf['awstats'] as $aw_sett => $aw_value) {
+ $tpl_ini_array['web']['awstats_'.$aw_sett] = $aw_value;
+ }
+ }
+
+ $server_ini_content = array_to_ini($tpl_ini_array);
+ $server_ini_content = mysql_real_escape_string($server_ini_content);
+
+ $mail_server_enabled = ($conf['services']['mail'])?1:0;
+ $web_server_enabled = ($conf['services']['web'])?1:0;
+ $dns_server_enabled = ($conf['services']['dns'])?1:0;
+ $file_server_enabled = ($conf['services']['file'])?1:0;
+ $db_server_enabled = ($conf['services']['db'])?1:0;
+ $vserver_server_enabled = ($conf['services']['vserver'])?1:0;
+
+ //** Get the database version number based on the patchfiles
+ $found = true;
+ $current_db_version = 1;
+ while($found == true) {
+ $next_db_version = intval($current_db_version + 1);
+ $patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql';
+ if(is_file($patch_filename)) {
+ $current_db_version = $next_db_version;
+ } else {
+ $found = false;
+ }
+ }
+ $current_db_version = intval($current_db_version);
+
+
+ if($conf['mysql']['master_slave_setup'] == 'y') {
+
+ //* Insert the server record in master DB
+ $sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES (1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
+ $this->dbmaster->query($sql);
+ $conf['server_id'] = $this->dbmaster->insertID();
+ $conf['server_id'] = $conf['server_id'];
+
+ //* Insert the same record in the local DB
+ $sql = "INSERT INTO `server` (`server_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES ('".$conf['server_id']."',1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
+ $this->db->query($sql);
+
+ //* username for the ispconfig user
+ $conf['mysql']['master_ispconfig_user'] = 'ispcsrv'.$conf['server_id'];
+
+ $this->grant_master_database_rights();
+
+ } else {
+ //* Insert the server, if its not a mster / slave setup
+ $sql = "INSERT INTO `server` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_name`, `mail_server`, `web_server`, `dns_server`, `file_server`, `db_server`, `vserver_server`, `config`, `updated`, `active`, `dbversion`) VALUES (1, 1, 'riud', 'riud', 'r', '".$conf['hostname']."', '$mail_server_enabled', '$web_server_enabled', '$dns_server_enabled', '$file_server_enabled', '$db_server_enabled', '$vserver_server_enabled', '$server_ini_content', 0, 1, $current_db_version);";
+ $this->db->query($sql);
+ $conf['server_id'] = $this->db->insertID();
+ $conf['server_id'] = $conf['server_id'];
+ }
+
+
+ }
+
+ public function grant_master_database_rights() {
+ global $conf;
+
+ /*
+ * The following code is a little bit tricky:
+ * * If we HAVE a master-slave - Setup then the client has to grant the rights for himself
+ * at the master.
+ * * If we DO NOT have a master-slave - Setup then we have two possibilities
+ * 1) it is a single server
+ * 2) it is the MASTER of n clients
+ */
+ $hosts = array();
+
+ if($conf['mysql']['master_slave_setup'] == 'y') {
+ /*
+ * it is a master-slave - Setup so the slave has to grant its rights in the master
+ * database
+ */
+
+ //* insert the ispconfig user in the remote server
+ $from_host = $conf['hostname'];
+ $from_ip = gethostbyname($conf['hostname']);
+
+ $hosts[$from_host]['user'] = $conf['mysql']['master_ispconfig_user'];
+ $hosts[$from_host]['db'] = $conf['mysql']['master_database'];
+ $hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password'];
+
+ $hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user'];
+ $hosts[$from_ip]['db'] = $conf['mysql']['master_database'];
+ $hosts[$from_ip]['pwd'] = $conf['mysql']['master_ispconfig_password'];
+ } else{
+ /*
+ * it is NOT a master-slave - Setup so we have to find out all clients and their
+ * host
+ */
+ $query = "SELECT Host, User FROM mysql.user WHERE User like 'ispcsrv%' ORDER BY User, Host";
+ $data = $this->dbmaster->queryAllRecords($query);
+ if($data === false) {
+ $this->error('Unable to get the user rights: '.$value['db'].' Error: '.$this->dbmaster->errorMessage);
+ }
+ foreach ($data as $item){
+ $hosts[$item['Host']]['user'] = $item['User'];
+ $hosts[$item['Host']]['db'] = $conf['mysql']['master_database'];
+ $hosts[$item['Host']]['pwd'] = ''; // the user already exists, so we need no pwd!
+ }
+ }
+
+ if(count($hosts) > 0) {
+ foreach($hosts as $host => $value) {
+ /*
+ * If a pwd exists, this means, we have to add the new user (and his pwd).
+ * if not, the user already exists and we do not need the pwd
+ */
+ if ($value['pwd'] != ''){
+ $query = "CREATE USER '".$value['user']."'@'".$host."' IDENTIFIED BY '" . $value['pwd'] . "'";
+ $this->dbmaster->query($query); // ignore the error
+ }
+
+ /*
+ * Try to delete all rights of the user in case that it exists.
+ * In Case that it will not exist, do nothing (ignore the error!)
+ */
+ $query = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '".$value['user']."'@'".$host."' ";
+ $this->dbmaster->query($query); // ignore the error
+
+ //* Create the ISPConfig database user in the remote database
+ $query = "GRANT SELECT ON ".$value['db'].".`server` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
+ }
+
+ $query = "GRANT SELECT, INSERT ON ".$value['db'].".`sys_log` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $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."' ";
+ if(!$this->dbmaster->query($query)) {
+ $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'].".`software_update_inst` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $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(`updated`) ON ".$value['db'].".`server` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $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 (`ssl_request`, `ssl_cert`, `ssl_action`) ON ".$value['db'].".`web_domain` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
+ }
+
+ $query = "GRANT SELECT ON ".$value['db'].".`sys_group` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $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 (`action_state`, `response`) ON ".$value['db'].".`sys_remoteaction` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
+ }
+
+ $query = "GRANT SELECT, INSERT , DELETE ON ".$value['db'].".`monitor_data` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
+ }
+
+ $query = "GRANT SELECT, INSERT, UPDATE ON ".$value['db'].".`mail_traffic` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
+ }
+
+ $query = "GRANT SELECT, INSERT, UPDATE ON ".$value['db'].".`web_traffic` TO '".$value['user']."'@'".$host."' ";
+ if(!$this->dbmaster->query($query)) {
+ $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
+ }
+ }
+
+ /*
+ * It is all done. Relod the rights...
+ */
+ $this->dbmaster->query('FLUSH PRIVILEGES;');
+ }
+
+ }
+
+ //** writes postfix configuration files
+ public function process_postfix_config($configfile) {
+ global $conf;
+
+ $config_dir = $conf['postfix']['config_dir'].'/';
+ $full_file_name = $config_dir.$configfile;
+ //* Backup exiting file
+ if(is_file($full_file_name)) {
+ copy($full_file_name, $config_dir.$configfile.'~');
+ }
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
+ $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
+ $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content);
+ $content = str_replace('{server_id}', $conf['server_id'], $content);
+ wf($full_file_name, $content);
+ }
+
+ public function configure_jailkit() {
+ global $conf;
+
+ $cf = $conf['jailkit'];
+ $config_dir = $cf['config_dir'];
+ $jk_init = $cf['jk_init'];
+ $jk_chrootsh = $cf['jk_chrootsh'];
+
+ if (is_dir($config_dir)) {
+ if(is_file($config_dir.'/'.$jk_init)) copy($config_dir.'/'.$jk_init, $config_dir.'/'.$jk_init.'~');
+ if(is_file($config_dir.'/'.$jk_chrootsh.'.master')) copy($config_dir.'/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh.'~');
+
+ copy('tpl/'.$jk_init.'.master', $config_dir.'/'.$jk_init);
+ copy('tpl/'.$jk_chrootsh.'.master', $config_dir.'/'.$jk_chrootsh);
+ }
+
+ }
+
+ public function configure_mailman($status = 'insert') {
+ global $conf;
+
+ $config_dir = $conf['mailman']['config_dir'].'/';
+ $full_file_name = $config_dir.'mm_cfg.py';
+ //* Backup exiting file
+ if(is_file($full_file_name)) {
+ copy($full_file_name, $config_dir.'mm_cfg.py~');
+ }
+
+ // load files
+ $content = rf('tpl/mm_cfg.py.master');
+ $old_file = rf($full_file_name);
+
+ $old_options = array();
+ $lines = explode("\n", $old_file);
+ foreach ($lines as $line)
+ {
+ if (strlen($line) && substr($line, 0, 1) != '#')
+ {
+ list($key, $value) = explode("=", $line);
+ if (!empty($value))
+ {
+ $key = rtrim($key);
+ $old_options[$key] = trim($value);
+ }
+ }
+ }
+
+ $virtual_domains = '';
+ if($status == 'update')
+ {
+ // create virtual_domains list
+ $domainAll = $this->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain");
+
+ foreach($domainAll as $domain)
+ {
+ if ($domainAll[0]['domain'] == $domain['domain'])
+ $virtual_domains .= "'".$domain['domain']."'";
+ else
+ $virtual_domains .= ", '".$domain['domain']."'";
+ }
+ }
+ else
+ $virtual_domains = "' '";
+
+ $content = str_replace('{hostname}', $conf['hostname'], $content);
+ $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content);
+ $content = str_replace('{virtual_domains}', $virtual_domains, $content);
+
+ wf($full_file_name, $content);
+ }
+
+ public function configure_postfix($options = '') {
+ global $conf;
+ $cf = $conf['postfix'];
+ $config_dir = $cf['config_dir'];
+
+ if(!is_dir($config_dir)) {
+ $this->error("The postfix configuration directory '$config_dir' does not exist.");
+ }
+
+ //* mysql-virtual_domains.cf
+ $this->process_postfix_config('mysql-virtual_domains.cf');
+
+ //* mysql-virtual_forwardings.cf
+ $this->process_postfix_config('mysql-virtual_forwardings.cf');
+
+ //* mysql-virtual_mailboxes.cf
+ $this->process_postfix_config('mysql-virtual_mailboxes.cf');
+
+ //* mysql-virtual_email2email.cf
+ $this->process_postfix_config('mysql-virtual_email2email.cf');
+
+ //* mysql-virtual_transports.cf
+ $this->process_postfix_config('mysql-virtual_transports.cf');
+
+ //* mysql-virtual_recipient.cf
+ $this->process_postfix_config('mysql-virtual_recipient.cf');
+
+ //* mysql-virtual_sender.cf
+ $this->process_postfix_config('mysql-virtual_sender.cf');
+
+ //* mysql-virtual_client.cf
+ $this->process_postfix_config('mysql-virtual_client.cf');
+
+ //* mysql-virtual_relaydomains.cf
+ $this->process_postfix_config('mysql-virtual_relaydomains.cf');
+
+ //* mysql-virtual_relayrecipientmaps.cf
+ $this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf');
+
+ //* Changing mode and group of the new created config files.
+ caselog('chmod o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null',
+ __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed');
+ caselog('chgrp '.$cf['group'].' '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null',
+ __FILE__, __LINE__, 'chgrp on mysql-virtual_*.cf*', 'chgrp on mysql-virtual_*.cf* failed');
+
+ //* Creating virtual mail user and group
+ $command = 'groupadd -g '.$cf['vmail_groupid'].' '.$cf['vmail_groupname'];
+ 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");
+
+ $postconf_commands = array (
+ 'myhostname = '.$conf['hostname'],
+ 'mydestination = '.$conf['hostname'].', localhost, localhost.localdomain',
+ 'mynetworks = 127.0.0.0/8 [::1]/128',
+ 'alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases',
+ 'alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases',
+ 'virtual_alias_domains =',
+ 'virtual_alias_maps = proxy:mysql:'.$config_dir.'/mysql-virtual_forwardings.cf, proxy:mysql:'.$config_dir.'/mysql-virtual_email2email.cf, hash:/var/lib/mailman/data/virtual-mailman',
+ 'virtual_mailbox_domains = proxy:mysql:'.$config_dir.'/mysql-virtual_domains.cf',
+ 'virtual_mailbox_maps = proxy:mysql:'.$config_dir.'/mysql-virtual_mailboxes.cf',
+ 'virtual_mailbox_base = '.$cf['vmail_mailbox_base'],
+ 'virtual_uid_maps = static:'.$cf['vmail_userid'],
+ 'virtual_gid_maps = static:'.$cf['vmail_groupid'],
+ 'smtpd_sasl_auth_enable = yes',
+ 'broken_sasl_auth_clients = yes',
+ 'smtpd_sasl_authenticated_header = yes',
+ 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:'.$config_dir.'/mysql-virtual_recipient.cf, reject_unauth_destination',
+ 'smtpd_use_tls = yes',
+ 'smtpd_tls_security_level = may',
+ 'smtpd_tls_cert_file = '.$config_dir.'/smtpd.cert',
+ 'smtpd_tls_key_file = '.$config_dir.'/smtpd.key',
+ 'transport_maps = proxy:mysql:'.$config_dir.'/mysql-virtual_transports.cf',
+ 'relay_domains = mysql:'.$config_dir.'/mysql-virtual_relaydomains.cf',
+ 'relay_recipient_maps = mysql:'.$config_dir.'/mysql-virtual_relayrecipientmaps.cf',
+ 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps',
+ 'smtpd_sender_restrictions = check_sender_access mysql:'.$config_dir.'/mysql-virtual_sender.cf',
+ 'smtpd_client_restrictions = check_client_access mysql:'.$config_dir.'/mysql-virtual_client.cf',
+ 'maildrop_destination_concurrency_limit = 1',
+ 'maildrop_destination_recipient_limit = 1',
+ 'virtual_transport = maildrop',
+ 'header_checks = regexp:'.$config_dir.'/header_checks',
+ 'mime_header_checks = regexp:'.$config_dir.'/mime_header_checks',
+ 'nested_header_checks = regexp:'.$config_dir.'/nested_header_checks',
+ 'body_checks = regexp:'.$config_dir.'/body_checks',
+ 'owner_request_special = no'
+ );
+
+ //* Create the header and body check files
+ touch($config_dir.'/header_checks');
+ touch($config_dir.'/mime_header_checks');
+ touch($config_dir.'/nested_header_checks');
+ touch($config_dir.'/body_checks');
+
+ //* Create the mailman files
+ exec('mkdir -p /var/lib/mailman/data');
+ touch('/var/lib/mailman/data/aliases');
+ exec('postmap /var/lib/mailman/data/aliases');
+ touch('/var/lib/mailman/data/virtual-mailman');
+ exec('postmap /var/lib/mailman/data/virtual-mailman');
+
+ //* Make a backup copy of the main.cf file
+ copy($config_dir.'/main.cf', $config_dir.'/main.cf~');
+
+ //* Executing the postconf commands
+ foreach($postconf_commands as $cmd) {
+ $command = "postconf -e '$cmd'";
+ caselog($command." &> /dev/null", __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command);
+ }
+
+ if(!stristr($options,'dont-create-certs')) {
+ //* Create the SSL certificate
+ $command = 'cd '.$config_dir.'; '
.'openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509';
- exec($command);
-
- $command = 'chmod o= '.$config_dir.'/smtpd.key';
- caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command);
- }
-
- //** We have to change the permissions of the courier authdaemon directory to make it accessible for maildrop.
- $command = 'chmod 755 /var/run/courier/authdaemon/';
- if(is_file('/var/run/courier/authdaemon/')) caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command);
-
- //* Changing maildrop lines in posfix master.cf
- if(is_file($config_dir.'/master.cf')) {
- copy($config_dir.'/master.cf', $config_dir.'/master.cf~');
- }
- if(is_file($config_dir.'/master.cf~')) {
- chmod($config_dir.'/master.cf~', 0400);
- }
- $configfile = $config_dir.'/master.cf';
- $content = rf($configfile);
- $content = str_replace('flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}',
- 'flags=DRhu user='.$cf['vmail_username'].' argv=/usr/bin/maildrop -d '.$cf['vmail_username'].' ${extension} ${recipient} ${user} ${nexthop} ${sender}',
- $content);
- wf($configfile, $content);
-
- //* Writing the Maildrop mailfilter file
- $configfile = 'mailfilter';
- if(is_file($cf['vmail_mailbox_base'].'/.'.$configfile)) {
- copy($cf['vmail_mailbox_base'].'/.'.$configfile, $cf['vmail_mailbox_base'].'/.'.$configfile.'~');
- }
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{dist_postfix_vmail_mailbox_base}', $cf['vmail_mailbox_base'], $content);
- wf($cf['vmail_mailbox_base'].'/.'.$configfile, $content);
-
- //* Create the directory for the custom mailfilters
- if(!is_dir($cf['vmail_mailbox_base'].'/mailfilters')) {
- $command = 'mkdir '.$cf['vmail_mailbox_base'].'/mailfilters';
- caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
- }
-
- //* Chmod and chown the .mailfilter file
- $command = 'chown -R '.$cf['vmail_username'].':'.$cf['vmail_groupname'].' '.$cf['vmail_mailbox_base'].'/.mailfilter';
- caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- $command = 'chmod -R 600 '.$cf['vmail_mailbox_base'].'/.mailfilter';
- caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- }
-
- public function configure_saslauthd() {
- global $conf;
-
-
- $configfile = 'sasl_smtpd.conf';
- if(is_file($conf['postfix']['config_dir'].'/sasl/smtpd.conf')) copy($conf['postfix']['config_dir'].'/sasl/smtpd.conf',$conf['postfix']['config_dir'].'/sasl/smtpd.conf~');
- if(is_file($conf['postfix']['config_dir'].'/sasl/smtpd.conf~')) chmod($conf['postfix']['config_dir'].'/sasl/smtpd.conf~', 0400);
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
- $content = str_replace('{mysql_server_ip}',$conf['mysql']['ip'],$content);
- wf($conf['postfix']['config_dir'].'/sasl/smtpd.conf',$content);
-
- // TODO: Chmod and chown on the config file
-
-
- // Recursively create the spool directory
- if(!@is_dir('/var/spool/postfix/var/run/saslauthd')) mkdir('/var/spool/postfix/var/run/saslauthd', 0755, true);
-
- // Edit the file /etc/default/saslauthd
- $configfile = $conf['saslauthd']['config'];
- if(is_file($configfile)) copy($configfile,$configfile.'~');
- if(is_file($configfile.'~')) chmod($configfile.'~', 0400);
- $content = rf($configfile);
- $content = str_replace('START=no','START=yes',$content);
- // Debian
- $content = str_replace('OPTIONS="-c"','OPTIONS="-m /var/spool/postfix/var/run/saslauthd -r"',$content);
- // Ubuntu
- $content = str_replace('OPTIONS="-c -m /var/run/saslauthd"','OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"',$content);
- wf($configfile,$content);
-
- // Edit the file /etc/init.d/saslauthd
- $configfile = $conf['init_scripts'].'/'.$conf['saslauthd']['init_script'];
- $content = rf($configfile);
- $content = str_replace('PIDFILE=$RUN_DIR/saslauthd.pid','PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"',$content);
- wf($configfile,$content);
-
- // add the postfix user to the sasl group (at least necessary for Ubuntu 8.04 and most likely Debian Lenny as well.
- exec('adduser postfix sasl');
-
-
- }
-
- public function configure_pam() {
- global $conf;
- $pam = $conf['pam'];
- //* configure pam for SMTP authentication agains the ispconfig database
- $configfile = 'pamd_smtp';
- if(is_file($pam.'/smtp')) copy($pam.'/smtp', $pam.'/smtp~');
- if(is_file($pam.'/smtp~')) chmod($pam.'/smtp~', 0400);
-
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
- $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
- $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content);
- wf($pam.'/smtp', $content);
- // On some OSes smtp is world readable which allows for reading database information. Removing world readable rights should have no effect.
- if(is_file($pam.'/smtp')) exec("chmod o= $pam/smtp");
- chmod($pam.'/smtp', 0660);
- chown($pam.'/smtp', 'daemon');
- chgrp($pam.'/smtp', 'daemon');
-
- }
-
- public function configure_courier() {
- global $conf;
- $config_dir = $conf['courier']['config_dir'];
- //* authmysqlrc
- $configfile = 'authmysqlrc';
- if(is_file($config_dir.'/'.$configfile)) {
- copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~');
- }
- chmod($config_dir.'/'.$configfile.'~', 0400);
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
- $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content);
- wf($config_dir.'/'.$configfile, $content);
-
- chmod($config_dir.'/'.$configfile, 0660);
- chown($config_dir.'/'.$configfile, 'daemon');
- chgrp($config_dir.'/'.$configfile, 'daemon');
-
- //* authdaemonrc
- $configfile = $config_dir.'/authdaemonrc';
- if(is_file($configfile)) {
- copy($configfile, $configfile.'~');
- }
- if(is_file($configfile.'~')) {
- chmod($configfile.'~', 0400);
- }
- $content = rf($configfile);
- $content = str_replace('authmodulelist="authpam"', 'authmodulelist="authmysql"', $content);
- wf($configfile, $content);
- }
-
- public function configure_dovecot() {
- global $conf;
-
- $config_dir = $conf['dovecot']['config_dir'];
-
- //* Configure master.cf and add a line for deliver
- if(is_file($conf['postfix']['config_dir'].'/master.cf')) {
- copy($conf['postfix']['config_dir'].'/master.cf', $conf['postfix']['config_dir'].'/master.cf~2');
- }
- if(is_file($conf['postfix']['config_dir'].'/master.cf~')) {
- chmod($conf['postfix']['config_dir'].'/master.cf~2', 0400);
- }
- $content = rf($conf['postfix']['config_dir'].'/master.cf');
- // Only add the content if we had not addded it before
- if(!stristr($content,'dovecot/deliver')) {
- $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}';
- af($conf['postfix']['config_dir'].'/master.cf',$deliver_content);
- }
- unset($content);
- unset($deliver_content);
-
-
- //* Reconfigure postfix to use dovecot authentication
- // Adding the amavisd commands to the postfix configuration
- $postconf_commands = array (
- 'dovecot_destination_recipient_limit = 1',
- 'virtual_transport = dovecot',
- 'smtpd_sasl_type = dovecot',
- 'smtpd_sasl_path = private/auth'
- );
-
- // Make a backup copy of the main.cf file
- copy($conf['postfix']['config_dir'].'/main.cf',$conf['postfix']['config_dir'].'/main.cf~3');
-
- // Executing the postconf commands
- foreach($postconf_commands as $cmd) {
- $command = "postconf -e '$cmd'";
- caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
- }
-
- //* copy dovecot.conf
- $configfile = 'dovecot.conf';
- if(is_file($config_dir.'/'.$configfile)) {
- copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~');
- }
- copy('tpl/debian_dovecot.conf.master',$config_dir.'/'.$configfile);
-
- //* dovecot-sql.conf
- $configfile = 'dovecot-sql.conf';
- if(is_file($config_dir.'/'.$configfile)) {
- copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~');
- }
- chmod($config_dir.'/'.$configfile.'~', 0400);
- $content = rf('tpl/debian_dovecot-sql.conf.master');
- $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
- $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content);
- wf($config_dir.'/'.$configfile, $content);
-
- chmod($config_dir.'/'.$configfile, 0600);
- chown($config_dir.'/'.$configfile, 'root');
- chgrp($config_dir.'/'.$configfile, 'root');
-
- }
-
- public function configure_amavis() {
- global $conf;
-
- // amavisd user config file
- $configfile = 'amavisd_user_config';
- if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user')) copy($conf['amavis']['config_dir'].'/conf.d/50-user',$conf['amavis']['config_dir'].'/50-user~');
- if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user~')) chmod($conf['amavis']['config_dir'].'/conf.d/50-user~', 0400);
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
- $content = str_replace('{mysql_server_port}',$conf['mysql']['port'],$content);
- $content = str_replace('{mysql_server_ip}',$conf['mysql']['ip'],$content);
- wf($conf['amavis']['config_dir'].'/conf.d/50-user',$content);
-
- // TODO: chmod and chown on the config file
-
-
- // Adding the amavisd commands to the postfix configuration
- $postconf_commands = array (
- 'content_filter = amavis:[127.0.0.1]:10024',
- 'receive_override_options = no_address_mappings'
- );
-
- // Make a backup copy of the main.cf file
- copy($conf['postfix']['config_dir'].'/main.cf',$conf['postfix']['config_dir'].'/main.cf~2');
-
- // Executing the postconf commands
- foreach($postconf_commands as $cmd) {
- $command = "postconf -e '$cmd'";
- caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
- }
-
- // Append the configuration for amavisd to the master.cf file
- if(is_file($conf['postfix']['config_dir'].'/master.cf')) copy($conf['postfix']['config_dir'].'/master.cf',$conf['postfix']['config_dir'].'/master.cf~');
- $content = rf($conf['postfix']['config_dir'].'/master.cf');
- // Only add the content if we had not addded it before
- if(!stristr($content,'127.0.0.1:10025')) {
- unset($content);
- $content = rf('tpl/master_cf_amavis.master');
- af($conf['postfix']['config_dir'].'/master.cf',$content);
- }
- unset($content);
-
- // Add the clamav user to the amavis group
- exec('adduser clamav amavis');
-
-
- }
-
- public function configure_spamassassin() {
- global $conf;
-
- //* Enable spamasasssin on debian and ubuntu
- $configfile = '/etc/default/spamassassin';
- if(is_file($configfile)) {
- copy($configfile, $configfile.'~');
- }
- $content = rf($configfile);
- $content = str_replace('ENABLED=0', 'ENABLED=1', $content);
- wf($configfile, $content);
- }
-
- public function configure_getmail() {
- global $conf;
-
- $config_dir = $conf['getmail']['config_dir'];
-
- if(!@is_dir($config_dir)) mkdir(escapeshellcmd($config_dir), 0700, true);
-
- $command = 'useradd -d '.$config_dir.' getmail';
- if(!is_user('getmail')) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- $command = "chown -R getmail $config_dir";
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- $command = "chmod -R 700 $config_dir";
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
- }
-
-
- public function configure_pureftpd() {
- global $conf;
-
- $config_dir = $conf['pureftpd']['config_dir'];
-
- //* configure pure-ftpd for MySQL authentication against the ispconfig database
- $configfile = 'db/mysql.conf';
- if(is_file($config_dir.'/'.$configfile)) {
- copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~');
- }
- if(is_file($config_dir.'/'.$configfile.'~')) {
- chmod($config_dir.'/'.$configfile.'~', 0400);
- }
- $content = rf('tpl/pureftpd_mysql.conf.master');
- $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
- $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
- $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content);
- $content = str_replace('{server_id}', $conf['server_id'], $content);
- wf($config_dir.'/'.$configfile, $content);
- chmod($config_dir.'/'.$configfile, 0600);
- chown($config_dir.'/'.$configfile, 'root');
- chgrp($config_dir.'/'.$configfile, 'root');
- // **enable chrooting
- //exec('mkdir -p '.$config_dir.'/conf/ChrootEveryone');
- exec('echo "yes" > '.$config_dir.'/conf/ChrootEveryone');
- exec('echo "yes" > '.$config_dir.'/conf/BrokenClientsCompatibility');
- exec('echo "yes" > '.$config_dir.'/conf/DisplayDotFiles');
-
- if(is_file('/etc/default/pure-ftpd-common')) {
- replaceLine('/etc/default/pure-ftpd-common','STANDALONE_OR_INETD=inetd','STANDALONE_OR_INETD=standalone',1,0);
- replaceLine('/etc/default/pure-ftpd-common','VIRTUALCHROOT=false','VIRTUALCHROOT=true',1,0);
- }
-
- if(is_file('/etc/inetd.conf')) {
- replaceLine('/etc/inetd.conf','/usr/sbin/pure-ftpd-wrapper','#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper',0,0);
- if(is_file($conf['init_scripts'].'/'.'openbsd-inetd')) exec($conf['init_scripts'].'/'.'openbsd-inetd restart');
- }
-
- if(!is_file('/etc/pure-ftpd/conf/DontResolve')) exec('echo "yes" > /etc/pure-ftpd/conf/DontResolve');
- }
-
- public function configure_mydns() {
- global $conf;
-
- // configure pam for SMTP authentication agains the ispconfig database
- $configfile = 'mydns.conf';
- if(is_file($conf['mydns']['config_dir'].'/'.$configfile)) copy($conf['mydns']['config_dir'].'/'.$configfile,$conf['mydns']['config_dir'].'/'.$configfile.'~');
- if(is_file($conf['mydns']['config_dir'].'/'.$configfile.'~')) chmod($conf['mydns']['config_dir'].'/'.$configfile.'~', 0400);
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
- $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content);
- $content = str_replace('{server_id}',$conf['server_id'],$content);
- wf($conf['mydns']['config_dir'].'/'.$configfile,$content);
- chmod($conf['mydns']['config_dir'].'/'.$configfile, 0600);
- chown($conf['mydns']['config_dir'].'/'.$configfile, 'root');
- chgrp($conf['mydns']['config_dir'].'/'.$configfile, 'root');
-
- }
-
- public function configure_powerdns() {
- global $conf;
-
- //* Create the database
- if(!$this->db->query('CREATE DATABASE IF NOT EXISTS '.$conf['powerdns']['database'].' DEFAULT CHARACTER SET '.$conf['mysql']['charset'])) {
- $this->error('Unable to create MySQL database: '.$conf['powerdns']['database'].'.');
- }
-
- //* Create the ISPConfig database user in the local database
- $query = "GRANT ALL ON `".$conf['powerdns']['database']."` . * TO '".$conf['mysql']['ispconfig_user']."'@'localhost';";
- if(!$this->db->query($query)) {
- $this->error('Unable to create user for powerdns database Error: '.$this->db->errorMessage);
- }
-
- //* Reload database privelages
- $this->db->query('FLUSH PRIVILEGES;');
-
- //* load the powerdns databse dump
- if($conf['mysql']['admin_password'] == '') {
- caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null",
- __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql');
- } else {
- caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null",
- __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql');
- }
-
- //* Create the powerdns config file
- $configfile = 'pdns.local';
- if(is_file($conf['powerdns']['config_dir'].'/'.$configfile)) copy($conf['powerdns']['config_dir'].'/'.$configfile,$conf['powerdns']['config_dir'].'/'.$configfile.'~');
- if(is_file($conf['powerdns']['config_dir'].'/'.$configfile.'~')) chmod($conf['powerdns']['config_dir'].'/'.$configfile.'~', 0400);
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{powerdns_database}',$conf['powerdns']['database'],$content);
- $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content);
- wf($conf['powerdns']['config_dir'].'/'.$configfile,$content);
- chmod($conf['powerdns']['config_dir'].'/'.$configfile, 0600);
- chown($conf['powerdns']['config_dir'].'/'.$configfile, 'root');
- chgrp($conf['powerdns']['config_dir'].'/'.$configfile, 'root');
-
-
- }
-
- public function configure_bind() {
- global $conf;
-
- //* Check if the zonefile directory has a slash at the end
- $content=$conf['bind']['bind_zonefiles_dir'];
- if(substr($content,-1,1) != '/') {
- $content .= '/';
- }
-
- //* Create the slave subdirectory
- $content .= 'slave';
- if(!@is_dir($content)) mkdir($content, 0770, true);
-
- //* Chown the slave subdirectory to $conf['bind']['bind_user']
- chown($content, $conf['bind']['bind_user']);
- chgrp($content, $conf['bind']['bind_group']);
-
- }
-
-
-
- public function configure_apache() {
- global $conf;
-
- //* Create the logging directory for the vhost logfiles
- if(!@is_dir($conf['ispconfig_log_dir'].'/httpd')) mkdir($conf['ispconfig_log_dir'].'/httpd', 0755, true);
-
- if(is_file('/etc/suphp/suphp.conf')) {
- replaceLine('/etc/suphp/suphp.conf','php=php:/usr/bin','x-httpd-suphp="php:/usr/bin/php-cgi"',0);
- //replaceLine('/etc/suphp/suphp.conf','docroot=','docroot=/var/clients',0);
- replaceLine('/etc/suphp/suphp.conf','umask=0077','umask=0022',0);
- }
-
- if(is_file('/etc/apache2/sites-enabled/000-default')) {
- replaceLine('/etc/apache2/sites-available/000-default','NameVirtualHost *','NameVirtualHost *:80',1,0);
- replaceLine('/etc/apache2/sites-available/000-default','<VirtualHost *>','<VirtualHost *:80>',1,0);
- }
-
- if(is_file('/etc/apache2/ports.conf')) {
- // add a line "Listen 443" to ports conf if line does not exist
- replaceLine('/etc/apache2/ports.conf','Listen 443','Listen 443',1);
- }
-
-
- //* Copy the ISPConfig configuration include
- $vhost_conf_dir = $conf['apache']['vhost_conf_dir'];
- $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir'];
-
- // copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf');
-
- $content = rf('tpl/apache_ispconfig.conf.master');
- $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'");
- if(is_array($records) && count($records) > 0) {
- foreach($records as $rec) {
- $content .= 'NameVirtualHost '.$rec['ip_address'].":80\n";
- $content .= 'NameVirtualHost '.$rec['ip_address'].":443\n";
- }
- }
- $content .= "\n";
- wf($vhost_conf_dir.'/ispconfig.conf',$content);
-
- if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.conf')) {
- symlink($vhost_conf_dir.'/ispconfig.conf',$vhost_conf_enabled_dir.'/000-ispconfig.conf');
- }
-
- //* make sure that webalizer finds its config file when it is directly in /etc
- if(@is_file('/etc/webalizer.conf') && !@is_dir('/etc/webalizer')) {
- mkdir('/etc/webalizer');
- symlink('/etc/webalizer.conf','/etc/webalizer/webalizer.conf');
- }
-
- if(is_file('/etc/webalizer/webalizer.conf')) {
- // Change webalizer mode to incremental
- replaceLine('/etc/webalizer/webalizer.conf','#IncrementalName','IncrementalName webalizer.current',0,0);
- replaceLine('/etc/webalizer/webalizer.conf','#Incremental','Incremental yes',0,0);
- replaceLine('/etc/webalizer/webalizer.conf','#HistoryName','HistoryName webalizer.hist',0,0);
- }
-
- // Check the awsatst script
- if(!is_dir('/usr/share/awstats/tools')) exec('mkdir -p /usr/share/awstats/tools');
- if(!file_exists('/usr/share/awstats/tools/awstats_buildstaticpages.pl') && file_exists('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl')) symlink('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl','/usr/share/awstats/tools/awstats_buildstaticpages.pl');
+ exec($command);
+
+ $command = 'chmod o= '.$config_dir.'/smtpd.key';
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command);
+ }
+
+ //** We have to change the permissions of the courier authdaemon directory to make it accessible for maildrop.
+ $command = 'chmod 755 /var/run/courier/authdaemon/';
+ if(is_file('/var/run/courier/authdaemon/')) caselog($command.' &> /dev/null', __FILE__, __LINE__, 'EXECUTED: '.$command, 'Failed to execute the command '.$command);
+
+ //* Changing maildrop lines in posfix master.cf
+ if(is_file($config_dir.'/master.cf')) {
+ copy($config_dir.'/master.cf', $config_dir.'/master.cf~');
+ }
+ if(is_file($config_dir.'/master.cf~')) {
+ chmod($config_dir.'/master.cf~', 0400);
+ }
+ $configfile = $config_dir.'/master.cf';
+ $content = rf($configfile);
+ $content = str_replace('flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}',
+ 'flags=DRhu user='.$cf['vmail_username'].' argv=/usr/bin/maildrop -d '.$cf['vmail_username'].' ${extension} ${recipient} ${user} ${nexthop} ${sender}',
+ $content);
+ wf($configfile, $content);
+
+ //* Writing the Maildrop mailfilter file
+ $configfile = 'mailfilter';
+ if(is_file($cf['vmail_mailbox_base'].'/.'.$configfile)) {
+ copy($cf['vmail_mailbox_base'].'/.'.$configfile, $cf['vmail_mailbox_base'].'/.'.$configfile.'~');
+ }
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{dist_postfix_vmail_mailbox_base}', $cf['vmail_mailbox_base'], $content);
+ wf($cf['vmail_mailbox_base'].'/.'.$configfile, $content);
+
+ //* Create the directory for the custom mailfilters
+ if(!is_dir($cf['vmail_mailbox_base'].'/mailfilters')) {
+ $command = 'mkdir '.$cf['vmail_mailbox_base'].'/mailfilters';
+ caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+ }
+
+ //* Chmod and chown the .mailfilter file
+ $command = 'chown -R '.$cf['vmail_username'].':'.$cf['vmail_groupname'].' '.$cf['vmail_mailbox_base'].'/.mailfilter';
+ caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ $command = 'chmod -R 600 '.$cf['vmail_mailbox_base'].'/.mailfilter';
+ caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ }
+
+ public function configure_saslauthd() {
+ global $conf;
+
+
+ $configfile = 'sasl_smtpd.conf';
+ if(is_file($conf['postfix']['config_dir'].'/sasl/smtpd.conf')) copy($conf['postfix']['config_dir'].'/sasl/smtpd.conf',$conf['postfix']['config_dir'].'/sasl/smtpd.conf~');
+ if(is_file($conf['postfix']['config_dir'].'/sasl/smtpd.conf~')) chmod($conf['postfix']['config_dir'].'/sasl/smtpd.conf~', 0400);
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
+ $content = str_replace('{mysql_server_ip}',$conf['mysql']['ip'],$content);
+ wf($conf['postfix']['config_dir'].'/sasl/smtpd.conf',$content);
+
+ // TODO: Chmod and chown on the config file
+
+
+ // Recursively create the spool directory
+ if(!@is_dir('/var/spool/postfix/var/run/saslauthd')) mkdir('/var/spool/postfix/var/run/saslauthd', 0755, true);
+
+ // Edit the file /etc/default/saslauthd
+ $configfile = $conf['saslauthd']['config'];
+ if(is_file($configfile)) copy($configfile,$configfile.'~');
+ if(is_file($configfile.'~')) chmod($configfile.'~', 0400);
+ $content = rf($configfile);
+ $content = str_replace('START=no','START=yes',$content);
+ // Debian
+ $content = str_replace('OPTIONS="-c"','OPTIONS="-m /var/spool/postfix/var/run/saslauthd -r"',$content);
+ // Ubuntu
+ $content = str_replace('OPTIONS="-c -m /var/run/saslauthd"','OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"',$content);
+ wf($configfile,$content);
+
+ // Edit the file /etc/init.d/saslauthd
+ $configfile = $conf['init_scripts'].'/'.$conf['saslauthd']['init_script'];
+ $content = rf($configfile);
+ $content = str_replace('PIDFILE=$RUN_DIR/saslauthd.pid','PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"',$content);
+ wf($configfile,$content);
+
+ // add the postfix user to the sasl group (at least necessary for Ubuntu 8.04 and most likely Debian Lenny as well.
+ exec('adduser postfix sasl');
+
+
+ }
+
+ public function configure_pam() {
+ global $conf;
+ $pam = $conf['pam'];
+ //* configure pam for SMTP authentication agains the ispconfig database
+ $configfile = 'pamd_smtp';
+ if(is_file($pam.'/smtp')) copy($pam.'/smtp', $pam.'/smtp~');
+ if(is_file($pam.'/smtp~')) chmod($pam.'/smtp~', 0400);
+
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
+ $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
+ $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content);
+ wf($pam.'/smtp', $content);
+ // On some OSes smtp is world readable which allows for reading database information. Removing world readable rights should have no effect.
+ if(is_file($pam.'/smtp')) exec("chmod o= $pam/smtp");
+ chmod($pam.'/smtp', 0660);
+ chown($pam.'/smtp', 'daemon');
+ chgrp($pam.'/smtp', 'daemon');
+
+ }
+
+ public function configure_courier() {
+ global $conf;
+ $config_dir = $conf['courier']['config_dir'];
+ //* authmysqlrc
+ $configfile = 'authmysqlrc';
+ if(is_file($config_dir.'/'.$configfile)) {
+ copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~');
+ }
+ chmod($config_dir.'/'.$configfile.'~', 0400);
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
+ $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content);
+ wf($config_dir.'/'.$configfile, $content);
+
+ chmod($config_dir.'/'.$configfile, 0660);
+ chown($config_dir.'/'.$configfile, 'daemon');
+ chgrp($config_dir.'/'.$configfile, 'daemon');
+
+ //* authdaemonrc
+ $configfile = $config_dir.'/authdaemonrc';
+ if(is_file($configfile)) {
+ copy($configfile, $configfile.'~');
+ }
+ if(is_file($configfile.'~')) {
+ chmod($configfile.'~', 0400);
+ }
+ $content = rf($configfile);
+ $content = str_replace('authmodulelist="authpam"', 'authmodulelist="authmysql"', $content);
+ wf($configfile, $content);
+ }
+
+ public function configure_dovecot() {
+ global $conf;
+
+ $config_dir = $conf['dovecot']['config_dir'];
+
+ //* Configure master.cf and add a line for deliver
+ if(is_file($conf['postfix']['config_dir'].'/master.cf')) {
+ copy($conf['postfix']['config_dir'].'/master.cf', $conf['postfix']['config_dir'].'/master.cf~2');
+ }
+ if(is_file($conf['postfix']['config_dir'].'/master.cf~')) {
+ chmod($conf['postfix']['config_dir'].'/master.cf~2', 0400);
+ }
+ $content = rf($conf['postfix']['config_dir'].'/master.cf');
+ // Only add the content if we had not addded it before
+ if(!stristr($content,'dovecot/deliver')) {
+ $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}';
+ af($conf['postfix']['config_dir'].'/master.cf',$deliver_content);
+ }
+ unset($content);
+ unset($deliver_content);
+
+
+ //* Reconfigure postfix to use dovecot authentication
+ // Adding the amavisd commands to the postfix configuration
+ $postconf_commands = array (
+ 'dovecot_destination_recipient_limit = 1',
+ 'virtual_transport = dovecot',
+ 'smtpd_sasl_type = dovecot',
+ 'smtpd_sasl_path = private/auth'
+ );
+
+ // Make a backup copy of the main.cf file
+ copy($conf['postfix']['config_dir'].'/main.cf',$conf['postfix']['config_dir'].'/main.cf~3');
+
+ // Executing the postconf commands
+ foreach($postconf_commands as $cmd) {
+ $command = "postconf -e '$cmd'";
+ caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+ }
+
+ //* copy dovecot.conf
+ $configfile = 'dovecot.conf';
+ if(is_file($config_dir.'/'.$configfile)) {
+ copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~');
+ }
+ copy('tpl/debian_dovecot.conf.master',$config_dir.'/'.$configfile);
+
+ //* dovecot-sql.conf
+ $configfile = 'dovecot-sql.conf';
+ if(is_file($config_dir.'/'.$configfile)) {
+ copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~');
+ }
+ chmod($config_dir.'/'.$configfile.'~', 0400);
+ $content = rf('tpl/debian_dovecot-sql.conf.master');
+ $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
+ $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content);
+ wf($config_dir.'/'.$configfile, $content);
+
+ chmod($config_dir.'/'.$configfile, 0600);
+ chown($config_dir.'/'.$configfile, 'root');
+ chgrp($config_dir.'/'.$configfile, 'root');
+
+ }
+
+ public function configure_amavis() {
+ global $conf;
+
+ // amavisd user config file
+ $configfile = 'amavisd_user_config';
+ if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user')) copy($conf['amavis']['config_dir'].'/conf.d/50-user',$conf['amavis']['config_dir'].'/50-user~');
+ if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user~')) chmod($conf['amavis']['config_dir'].'/conf.d/50-user~', 0400);
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
+ $content = str_replace('{mysql_server_port}',$conf['mysql']['port'],$content);
+ $content = str_replace('{mysql_server_ip}',$conf['mysql']['ip'],$content);
+ wf($conf['amavis']['config_dir'].'/conf.d/50-user',$content);
+
+ // TODO: chmod and chown on the config file
+
+
+ // Adding the amavisd commands to the postfix configuration
+ $postconf_commands = array (
+ 'content_filter = amavis:[127.0.0.1]:10024',
+ 'receive_override_options = no_address_mappings'
+ );
+
+ // Make a backup copy of the main.cf file
+ copy($conf['postfix']['config_dir'].'/main.cf',$conf['postfix']['config_dir'].'/main.cf~2');
+
+ // Executing the postconf commands
+ foreach($postconf_commands as $cmd) {
+ $command = "postconf -e '$cmd'";
+ caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+ }
+
+ // Append the configuration for amavisd to the master.cf file
+ if(is_file($conf['postfix']['config_dir'].'/master.cf')) copy($conf['postfix']['config_dir'].'/master.cf',$conf['postfix']['config_dir'].'/master.cf~');
+ $content = rf($conf['postfix']['config_dir'].'/master.cf');
+ // Only add the content if we had not addded it before
+ if(!stristr($content,'127.0.0.1:10025')) {
+ unset($content);
+ $content = rf('tpl/master_cf_amavis.master');
+ af($conf['postfix']['config_dir'].'/master.cf',$content);
+ }
+ unset($content);
+
+ // Add the clamav user to the amavis group
+ exec('adduser clamav amavis');
+
+
+ }
+
+ public function configure_spamassassin() {
+ global $conf;
+
+ //* Enable spamasasssin on debian and ubuntu
+ $configfile = '/etc/default/spamassassin';
+ if(is_file($configfile)) {
+ copy($configfile, $configfile.'~');
+ }
+ $content = rf($configfile);
+ $content = str_replace('ENABLED=0', 'ENABLED=1', $content);
+ wf($configfile, $content);
+ }
+
+ public function configure_getmail() {
+ global $conf;
+
+ $config_dir = $conf['getmail']['config_dir'];
+
+ if(!@is_dir($config_dir)) mkdir(escapeshellcmd($config_dir), 0700, true);
+
+ $command = 'useradd -d '.$config_dir.' getmail';
+ if(!is_user('getmail')) caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ $command = "chown -R getmail $config_dir";
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ $command = "chmod -R 700 $config_dir";
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+ }
+
+
+ public function configure_pureftpd() {
+ global $conf;
+
+ $config_dir = $conf['pureftpd']['config_dir'];
+
+ //* configure pure-ftpd for MySQL authentication against the ispconfig database
+ $configfile = 'db/mysql.conf';
+ if(is_file($config_dir.'/'.$configfile)) {
+ copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~');
+ }
+ if(is_file($config_dir.'/'.$configfile.'~')) {
+ chmod($config_dir.'/'.$configfile.'~', 0400);
+ }
+ $content = rf('tpl/pureftpd_mysql.conf.master');
+ $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
+ $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
+ $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content);
+ $content = str_replace('{server_id}', $conf['server_id'], $content);
+ wf($config_dir.'/'.$configfile, $content);
+ chmod($config_dir.'/'.$configfile, 0600);
+ chown($config_dir.'/'.$configfile, 'root');
+ chgrp($config_dir.'/'.$configfile, 'root');
+ // **enable chrooting
+ //exec('mkdir -p '.$config_dir.'/conf/ChrootEveryone');
+ exec('echo "yes" > '.$config_dir.'/conf/ChrootEveryone');
+ exec('echo "yes" > '.$config_dir.'/conf/BrokenClientsCompatibility');
+ exec('echo "yes" > '.$config_dir.'/conf/DisplayDotFiles');
+
+ if(is_file('/etc/default/pure-ftpd-common')) {
+ replaceLine('/etc/default/pure-ftpd-common','STANDALONE_OR_INETD=inetd','STANDALONE_OR_INETD=standalone',1,0);
+ replaceLine('/etc/default/pure-ftpd-common','VIRTUALCHROOT=false','VIRTUALCHROOT=true',1,0);
+ }
+
+ if(is_file('/etc/inetd.conf')) {
+ replaceLine('/etc/inetd.conf','/usr/sbin/pure-ftpd-wrapper','#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper',0,0);
+ if(is_file($conf['init_scripts'].'/'.'openbsd-inetd')) exec($conf['init_scripts'].'/'.'openbsd-inetd restart');
+ }
+
+ if(!is_file('/etc/pure-ftpd/conf/DontResolve')) exec('echo "yes" > /etc/pure-ftpd/conf/DontResolve');
+ }
+
+ public function configure_mydns() {
+ global $conf;
+
+ // configure pam for SMTP authentication agains the ispconfig database
+ $configfile = 'mydns.conf';
+ if(is_file($conf['mydns']['config_dir'].'/'.$configfile)) copy($conf['mydns']['config_dir'].'/'.$configfile,$conf['mydns']['config_dir'].'/'.$configfile.'~');
+ if(is_file($conf['mydns']['config_dir'].'/'.$configfile.'~')) chmod($conf['mydns']['config_dir'].'/'.$configfile.'~', 0400);
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
+ $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content);
+ $content = str_replace('{server_id}',$conf['server_id'],$content);
+ wf($conf['mydns']['config_dir'].'/'.$configfile,$content);
+ chmod($conf['mydns']['config_dir'].'/'.$configfile, 0600);
+ chown($conf['mydns']['config_dir'].'/'.$configfile, 'root');
+ chgrp($conf['mydns']['config_dir'].'/'.$configfile, 'root');
+
+ }
+
+ public function configure_powerdns() {
+ global $conf;
+
+ //* Create the database
+ if(!$this->db->query('CREATE DATABASE IF NOT EXISTS '.$conf['powerdns']['database'].' DEFAULT CHARACTER SET '.$conf['mysql']['charset'])) {
+ $this->error('Unable to create MySQL database: '.$conf['powerdns']['database'].'.');
+ }
+
+ //* Create the ISPConfig database user in the local database
+ $query = "GRANT ALL ON `".$conf['powerdns']['database']."` . * TO '".$conf['mysql']['ispconfig_user']."'@'localhost';";
+ if(!$this->db->query($query)) {
+ $this->error('Unable to create user for powerdns database Error: '.$this->db->errorMessage);
+ }
+
+ //* Reload database privelages
+ $this->db->query('FLUSH PRIVILEGES;');
+
+ //* load the powerdns databse dump
+ if($conf['mysql']['admin_password'] == '') {
+ caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null",
+ __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql');
+ } else {
+ caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['powerdns']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/powerdns.sql' &> /dev/null",
+ __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in powerdns.sql');
+ }
+
+ //* Create the powerdns config file
+ $configfile = 'pdns.local';
+ if(is_file($conf['powerdns']['config_dir'].'/'.$configfile)) copy($conf['powerdns']['config_dir'].'/'.$configfile,$conf['powerdns']['config_dir'].'/'.$configfile.'~');
+ if(is_file($conf['powerdns']['config_dir'].'/'.$configfile.'~')) chmod($conf['powerdns']['config_dir'].'/'.$configfile.'~', 0400);
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{powerdns_database}',$conf['powerdns']['database'],$content);
+ $content = str_replace('{mysql_server_host}',$conf['mysql']['host'],$content);
+ wf($conf['powerdns']['config_dir'].'/'.$configfile,$content);
+ chmod($conf['powerdns']['config_dir'].'/'.$configfile, 0600);
+ chown($conf['powerdns']['config_dir'].'/'.$configfile, 'root');
+ chgrp($conf['powerdns']['config_dir'].'/'.$configfile, 'root');
+
+
+ }
+
+ public function configure_bind() {
+ global $conf;
+
+ //* Check if the zonefile directory has a slash at the end
+ $content=$conf['bind']['bind_zonefiles_dir'];
+ if(substr($content,-1,1) != '/') {
+ $content .= '/';
+ }
+
+ //* Create the slave subdirectory
+ $content .= 'slave';
+ if(!@is_dir($content)) mkdir($content, 0770, true);
+
+ //* Chown the slave subdirectory to $conf['bind']['bind_user']
+ chown($content, $conf['bind']['bind_user']);
+ chgrp($content, $conf['bind']['bind_group']);
+
+ }
+
+
+
+ public function configure_apache() {
+ global $conf;
+
+ //* Create the logging directory for the vhost logfiles
+ if(!@is_dir($conf['ispconfig_log_dir'].'/httpd')) mkdir($conf['ispconfig_log_dir'].'/httpd', 0755, true);
+
+ if(is_file('/etc/suphp/suphp.conf')) {
+ replaceLine('/etc/suphp/suphp.conf','php=php:/usr/bin','x-httpd-suphp="php:/usr/bin/php-cgi"',0);
+ //replaceLine('/etc/suphp/suphp.conf','docroot=','docroot=/var/clients',0);
+ replaceLine('/etc/suphp/suphp.conf','umask=0077','umask=0022',0);
+ }
+
+ if(is_file('/etc/apache2/sites-enabled/000-default')) {
+ replaceLine('/etc/apache2/sites-available/000-default','NameVirtualHost *','NameVirtualHost *:80',1,0);
+ replaceLine('/etc/apache2/sites-available/000-default','<VirtualHost *>','<VirtualHost *:80>',1,0);
+ }
+
+ if(is_file('/etc/apache2/ports.conf')) {
+ // add a line "Listen 443" to ports conf if line does not exist
+ replaceLine('/etc/apache2/ports.conf','Listen 443','Listen 443',1);
+ }
+
+
+ //* Copy the ISPConfig configuration include
+ $vhost_conf_dir = $conf['apache']['vhost_conf_dir'];
+ $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir'];
+
+ // copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf');
+
+ $content = rf('tpl/apache_ispconfig.conf.master');
+ $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'");
+ if(is_array($records) && count($records) > 0) {
+ foreach($records as $rec) {
+ $content .= 'NameVirtualHost '.$rec['ip_address'].":80\n";
+ $content .= 'NameVirtualHost '.$rec['ip_address'].":443\n";
+ }
+ }
+ $content .= "\n";
+ wf($vhost_conf_dir.'/ispconfig.conf',$content);
+
+ if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.conf')) {
+ symlink($vhost_conf_dir.'/ispconfig.conf',$vhost_conf_enabled_dir.'/000-ispconfig.conf');
+ }
+
+ //* make sure that webalizer finds its config file when it is directly in /etc
+ if(@is_file('/etc/webalizer.conf') && !@is_dir('/etc/webalizer')) {
+ mkdir('/etc/webalizer');
+ symlink('/etc/webalizer.conf','/etc/webalizer/webalizer.conf');
+ }
+
+ if(is_file('/etc/webalizer/webalizer.conf')) {
+ // Change webalizer mode to incremental
+ replaceLine('/etc/webalizer/webalizer.conf','#IncrementalName','IncrementalName webalizer.current',0,0);
+ replaceLine('/etc/webalizer/webalizer.conf','#Incremental','Incremental yes',0,0);
+ replaceLine('/etc/webalizer/webalizer.conf','#HistoryName','HistoryName webalizer.hist',0,0);
+ }
+
+ // Check the awsatst script
+ if(!is_dir('/usr/share/awstats/tools')) exec('mkdir -p /usr/share/awstats/tools');
+ if(!file_exists('/usr/share/awstats/tools/awstats_buildstaticpages.pl') && file_exists('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl')) symlink('/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl','/usr/share/awstats/tools/awstats_buildstaticpages.pl');
if(file_exists('/etc/awstats/awstats.conf.local')) replaceLine('/etc/awstats/awstats.conf.local','LogFormat=4','LogFormat=1',0,1);
- //* add a sshusers group
- $command = 'groupadd sshusers';
- if(!is_group('sshusers')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- }
-
- public function configure_firewall() {
- global $conf;
-
- $dist_init_scripts = $conf['init_scripts'];
-
- if(is_dir('/etc/Bastille.backup')) caselog('rm -rf /etc/Bastille.backup', __FILE__, __LINE__);
- if(is_dir('/etc/Bastille')) caselog('mv -f /etc/Bastille /etc/Bastille.backup', __FILE__, __LINE__);
- @mkdir('/etc/Bastille', 0700);
- if(is_dir('/etc/Bastille.backup/firewall.d')) caselog('cp -pfr /etc/Bastille.backup/firewall.d /etc/Bastille/', __FILE__, __LINE__);
- caselog('cp -f tpl/bastille-firewall.cfg.master /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__);
- caselog('chmod 644 /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__);
- $content = rf('/etc/Bastille/bastille-firewall.cfg');
- $content = str_replace('{DNS_SERVERS}', '', $content);
-
- $tcp_public_services = '';
- $udp_public_services = '';
-
- $row = $this->db->queryOneRecord('SELECT * FROM '.$conf["mysql"]["database"].'.firewall WHERE server_id = '.intval($conf['server_id']));
-
- if(trim($row['tcp_port']) != '' || trim($row['udp_port']) != '') {
- $tcp_public_services = trim(str_replace(',',' ',$row['tcp_port']));
- $udp_public_services = trim(str_replace(',',' ',$row['udp_port']));
- } else {
- $tcp_public_services = '21 22 25 53 80 110 143 443 3306 8080 10000';
- $udp_public_services = '53';
- }
-
- if(!stristr($tcp_public_services, $conf['apache']['vhost_port'])) {
- $tcp_public_services .= ' '.intval($conf['apache']['vhost_port']);
- if($row['tcp_port'] != '') $this->db->query("UPDATE firewall SET tcp_port = tcp_port + ',".intval($conf['apache']['vhost_port'])."' WHERE server_id = ".intval($conf['server_id']));
- }
-
- $content = str_replace('{TCP_PUBLIC_SERVICES}', $tcp_public_services, $content);
- $content = str_replace('{UDP_PUBLIC_SERVICES}', $udp_public_services, $content);
-
- wf('/etc/Bastille/bastille-firewall.cfg', $content);
-
- if(is_file($dist_init_scripts.'/bastille-firewall')) caselog('mv -f '.$dist_init_scripts.'/bastille-firewall '.$dist_init_scripts.'/bastille-firewall.backup', __FILE__, __LINE__);
- caselog('cp -f apps/bastille-firewall '.$dist_init_scripts, __FILE__, __LINE__);
- caselog('chmod 700 '.$dist_init_scripts.'/bastille-firewall', __FILE__, __LINE__);
-
- if(is_file('/sbin/bastille-ipchains')) caselog('mv -f /sbin/bastille-ipchains /sbin/bastille-ipchains.backup', __FILE__, __LINE__);
- caselog('cp -f apps/bastille-ipchains /sbin', __FILE__, __LINE__);
- caselog('chmod 700 /sbin/bastille-ipchains', __FILE__, __LINE__);
-
- if(is_file('/sbin/bastille-netfilter')) caselog('mv -f /sbin/bastille-netfilter /sbin/bastille-netfilter.backup', __FILE__, __LINE__);
- caselog('cp -f apps/bastille-netfilter /sbin', __FILE__, __LINE__);
- caselog('chmod 700 /sbin/bastille-netfilter', __FILE__, __LINE__);
-
- if(!@is_dir('/var/lock/subsys')) caselog('mkdir /var/lock/subsys', __FILE__, __LINE__);
-
- exec('which ipchains &> /dev/null', $ipchains_location, $ret_val);
- if(!is_file('/sbin/ipchains') && !is_link('/sbin/ipchains') && $ret_val == 0) phpcaselog(@symlink(shell_exec('which ipchains'), '/sbin/ipchains'), 'create symlink', __FILE__, __LINE__);
- unset($ipchains_location);
- exec('which iptables &> /dev/null', $iptables_location, $ret_val);
- if(!is_file('/sbin/iptables') && !is_link('/sbin/iptables') && $ret_val == 0) phpcaselog(@symlink(trim(shell_exec('which iptables')), '/sbin/iptables'), 'create symlink', __FILE__, __LINE__);
- unset($iptables_location);
-
- }
-
- public function configure_vlogger() {
- global $conf;
-
- //** Configure vlogger to use traffic logging to mysql (master) db
- $configfile = 'vlogger-dbi.conf';
- if(is_file($conf['vlogger']['config_dir'].'/'.$configfile)) copy($conf['vlogger']['config_dir'].'/'.$configfile,$conf['vlogger']['config_dir'].'/'.$configfile.'~');
- if(is_file($conf['vlogger']['config_dir'].'/'.$configfile.'~')) chmod($conf['vlogger']['config_dir'].'/'.$configfile.'~', 0400);
- $content = rf('tpl/'.$configfile.'.master');
- if($conf['mysql']['master_slave_setup'] == 'y') {
- $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['master_ispconfig_user'],$content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['master_ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}',$conf['mysql']['master_database'],$content);
- $content = str_replace('{mysql_server_ip}',$conf['mysql']['master_host'],$content);
- } else {
- $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
- $content = str_replace('{mysql_server_ip}',$conf['mysql']['host'],$content);
- }
- wf($conf['vlogger']['config_dir'].'/'.$configfile,$content);
- chmod($conf['vlogger']['config_dir'].'/'.$configfile, 0600);
- chown($conf['vlogger']['config_dir'].'/'.$configfile, 'root');
- chgrp($conf['vlogger']['config_dir'].'/'.$configfile, 'root');
-
- }
-
- public function configure_apps_vhost() {
- global $conf;
-
- //* Create the ispconfig apps vhost user and group
-
- $apps_vhost_user = escapeshellcmd($conf['web']['apps_vhost_user']);
- $apps_vhost_group = escapeshellcmd($conf['web']['apps_vhost_group']);
- $install_dir = escapeshellcmd($conf['web']['website_basedir'].'/apps');
-
- $command = 'groupadd '.$apps_vhost_user;
- if(!is_group($apps_vhost_group)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- $command = 'useradd -g '.$apps_vhost_group.' -d '.$install_dir.' '.$apps_vhost_group;
- if(!is_user($apps_vhost_user)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
-
- $command = 'adduser '.$conf['apache']['user'].' '.$apps_vhost_group;
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- if(!@is_dir($install_dir)) mkdir($install_dir, 0755, true);
- chown($install_dir, $apps_vhost_user);
- chgrp($install_dir, $apps_vhost_group);
-
- //* Copy the apps vhost file
- $vhost_conf_dir = $conf['apache']['vhost_conf_dir'];
- $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir'];
- $apps_vhost_servername = ($conf['web']['apps_vhost_servername'] == '')?'':'ServerName '.$conf['web']['apps_vhost_servername'];
-
- // Dont just copy over the virtualhost template but add some custom settings
- $content = rf('tpl/apache_apps.vhost.master');
-
- $content = str_replace('{apps_vhost_ip}', $conf['web']['apps_vhost_ip'], $content);
- $content = str_replace('{apps_vhost_port}', $conf['web']['apps_vhost_port'], $content);
- $content = str_replace('{apps_vhost_dir}', $conf['web']['website_basedir'].'/apps', $content);
- $content = str_replace('{website_basedir}', $conf['web']['website_basedir'], $content);
- $content = str_replace('{apps_vhost_servername}', $apps_vhost_servername, $content);
-
-
- // comment out the listen directive if port is 80 or 443
- if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) {
- $content = str_replace('{vhost_port_listen}', '#', $content);
- } else {
- $content = str_replace('{vhost_port_listen}', '', $content);
- }
-
- wf($vhost_conf_dir.'/apps.vhost', $content);
-
- //copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost");
- //* and create the symlink
- if($this->install_ispconfig_interface == true) {
- if(@is_link($vhost_conf_enabled_dir.'/apps.vhost')) unlink($vhost_conf_enabled_dir.'/apps.vhost');
- if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost')) {
- symlink($vhost_conf_dir.'/apps.vhost',$vhost_conf_enabled_dir.'/000-apps.vhost');
- }
- }
- if(!is_file($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter')) {
- mkdir($conf['web']['website_basedir'].'/php-fcgi-scripts/apps', 0755, true);
- copy('tpl/apache_apps_fcgi_starter.master',$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter');
- exec('chmod +x '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter');
- exec('chown -R ispapps:ispapps '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps');
-
- }
-
- }
-
- public function make_ispconfig_ssl_cert() {
- global $conf;
-
- $install_dir = $conf['ispconfig_install_dir'];
-
- $ssl_crt_file = $install_dir.'/interface/ssl/ispserver.crt';
- $ssl_csr_file = $install_dir.'/interface/ssl/ispserver.csr';
- $ssl_key_file = $install_dir.'/interface/ssl/ispserver.key';
-
- if(!@is_dir($install_dir.'/interface/ssl')) mkdir($install_dir.'/interface/ssl', 0755, true);
-
- $ssl_pw = substr(md5(mt_rand()),0,6);
- exec("openssl genrsa -des3 -passout pass:$ssl_pw -out $ssl_key_file 4096");
- exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -out $ssl_csr_file");
- exec("openssl req -x509 -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -in $ssl_csr_file -out $ssl_crt_file -days 3650");
- exec("openssl rsa -passin pass:$ssl_pw -in $ssl_key_file -out $ssl_key_file.insecure");
- rename($ssl_key_file,$ssl_key_file.'.secure');
- rename($ssl_key_file.'.insecure',$ssl_key_file);
-
- }
-
- public function install_ispconfig() {
- global $conf;
-
- $install_dir = $conf['ispconfig_install_dir'];
-
- //* Create the ISPConfig installation directory
- if(!@is_dir($install_dir)) {
- $command = "mkdir $install_dir";
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
- }
-
- //* Create a ISPConfig user and group
- $command = 'groupadd ispconfig';
- if(!is_group('ispconfig')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- $command = 'useradd -g ispconfig -d '.$install_dir.' ispconfig';
- if(!is_user('ispconfig')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- //* copy the ISPConfig interface part
- $command = 'cp -rf ../interface '.$install_dir;
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- //* copy the ISPConfig server part
- $command = 'cp -rf ../server '.$install_dir;
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- //* Create a symlink, so ISPConfig is accessible via web
- // Replaced by a separate vhost definition for port 8080
- // $command = "ln -s $install_dir/interface/web/ /var/www/ispconfig";
- // caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- //* Create the config file for ISPConfig interface
- $configfile = 'config.inc.php';
- if(is_file($install_dir.'/interface/lib/'.$configfile)) {
- copy($install_dir.'/interface/lib/'.$configfile, $install_dir.'/interface/lib/'.$configfile.'~');
- }
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
- $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
- $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content);
-
- $content = str_replace('{mysql_master_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content);
- $content = str_replace('{mysql_master_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content);
- $content = str_replace('{mysql_master_server_database}', $conf['mysql']['master_database'], $content);
- $content = str_replace('{mysql_master_server_host}', $conf['mysql']['master_host'], $content);
-
- $content = str_replace('{server_id}', $conf['server_id'], $content);
- $content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content);
- $content = str_replace('{language}', $conf['language'], $content);
-
- wf($install_dir.'/interface/lib/'.$configfile, $content);
-
- //* Create the config file for ISPConfig server
- $configfile = 'config.inc.php';
- if(is_file($install_dir.'/server/lib/'.$configfile)) {
- copy($install_dir.'/server/lib/'.$configfile, $install_dir.'/interface/lib/'.$configfile.'~');
- }
- $content = rf('tpl/'.$configfile.'.master');
- $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
- $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
- $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
- $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content);
-
- $content = str_replace('{mysql_master_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content);
- $content = str_replace('{mysql_master_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content);
- $content = str_replace('{mysql_master_server_database}', $conf['mysql']['master_database'], $content);
- $content = str_replace('{mysql_master_server_host}', $conf['mysql']['master_host'], $content);
-
- $content = str_replace('{server_id}', $conf['server_id'], $content);
- $content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content);
+ //* add a sshusers group
+ $command = 'groupadd sshusers';
+ if(!is_group('sshusers')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ }
+
+ public function configure_firewall() {
+ global $conf;
+
+ $dist_init_scripts = $conf['init_scripts'];
+
+ if(is_dir('/etc/Bastille.backup')) caselog('rm -rf /etc/Bastille.backup', __FILE__, __LINE__);
+ if(is_dir('/etc/Bastille')) caselog('mv -f /etc/Bastille /etc/Bastille.backup', __FILE__, __LINE__);
+ @mkdir('/etc/Bastille', 0700);
+ if(is_dir('/etc/Bastille.backup/firewall.d')) caselog('cp -pfr /etc/Bastille.backup/firewall.d /etc/Bastille/', __FILE__, __LINE__);
+ caselog('cp -f tpl/bastille-firewall.cfg.master /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__);
+ caselog('chmod 644 /etc/Bastille/bastille-firewall.cfg', __FILE__, __LINE__);
+ $content = rf('/etc/Bastille/bastille-firewall.cfg');
+ $content = str_replace('{DNS_SERVERS}', '', $content);
+
+ $tcp_public_services = '';
+ $udp_public_services = '';
+
+ $row = $this->db->queryOneRecord('SELECT * FROM '.$conf["mysql"]["database"].'.firewall WHERE server_id = '.intval($conf['server_id']));
+
+ if(trim($row['tcp_port']) != '' || trim($row['udp_port']) != '') {
+ $tcp_public_services = trim(str_replace(',',' ',$row['tcp_port']));
+ $udp_public_services = trim(str_replace(',',' ',$row['udp_port']));
+ } else {
+ $tcp_public_services = '21 22 25 53 80 110 143 443 3306 8080 10000';
+ $udp_public_services = '53';
+ }
+
+ if(!stristr($tcp_public_services, $conf['apache']['vhost_port'])) {
+ $tcp_public_services .= ' '.intval($conf['apache']['vhost_port']);
+ if($row['tcp_port'] != '') $this->db->query("UPDATE firewall SET tcp_port = tcp_port + ',".intval($conf['apache']['vhost_port'])."' WHERE server_id = ".intval($conf['server_id']));
+ }
+
+ $content = str_replace('{TCP_PUBLIC_SERVICES}', $tcp_public_services, $content);
+ $content = str_replace('{UDP_PUBLIC_SERVICES}', $udp_public_services, $content);
+
+ wf('/etc/Bastille/bastille-firewall.cfg', $content);
+
+ if(is_file($dist_init_scripts.'/bastille-firewall')) caselog('mv -f '.$dist_init_scripts.'/bastille-firewall '.$dist_init_scripts.'/bastille-firewall.backup', __FILE__, __LINE__);
+ caselog('cp -f apps/bastille-firewall '.$dist_init_scripts, __FILE__, __LINE__);
+ caselog('chmod 700 '.$dist_init_scripts.'/bastille-firewall', __FILE__, __LINE__);
+
+ if(is_file('/sbin/bastille-ipchains')) caselog('mv -f /sbin/bastille-ipchains /sbin/bastille-ipchains.backup', __FILE__, __LINE__);
+ caselog('cp -f apps/bastille-ipchains /sbin', __FILE__, __LINE__);
+ caselog('chmod 700 /sbin/bastille-ipchains', __FILE__, __LINE__);
+
+ if(is_file('/sbin/bastille-netfilter')) caselog('mv -f /sbin/bastille-netfilter /sbin/bastille-netfilter.backup', __FILE__, __LINE__);
+ caselog('cp -f apps/bastille-netfilter /sbin', __FILE__, __LINE__);
+ caselog('chmod 700 /sbin/bastille-netfilter', __FILE__, __LINE__);
+
+ if(!@is_dir('/var/lock/subsys')) caselog('mkdir /var/lock/subsys', __FILE__, __LINE__);
+
+ exec('which ipchains &> /dev/null', $ipchains_location, $ret_val);
+ if(!is_file('/sbin/ipchains') && !is_link('/sbin/ipchains') && $ret_val == 0) phpcaselog(@symlink(shell_exec('which ipchains'), '/sbin/ipchains'), 'create symlink', __FILE__, __LINE__);
+ unset($ipchains_location);
+ exec('which iptables &> /dev/null', $iptables_location, $ret_val);
+ if(!is_file('/sbin/iptables') && !is_link('/sbin/iptables') && $ret_val == 0) phpcaselog(@symlink(trim(shell_exec('which iptables')), '/sbin/iptables'), 'create symlink', __FILE__, __LINE__);
+ unset($iptables_location);
+
+ }
+
+ public function configure_vlogger() {
+ global $conf;
+
+ //** Configure vlogger to use traffic logging to mysql (master) db
+ $configfile = 'vlogger-dbi.conf';
+ if(is_file($conf['vlogger']['config_dir'].'/'.$configfile)) copy($conf['vlogger']['config_dir'].'/'.$configfile,$conf['vlogger']['config_dir'].'/'.$configfile.'~');
+ if(is_file($conf['vlogger']['config_dir'].'/'.$configfile.'~')) chmod($conf['vlogger']['config_dir'].'/'.$configfile.'~', 0400);
+ $content = rf('tpl/'.$configfile.'.master');
+ if($conf['mysql']['master_slave_setup'] == 'y') {
+ $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['master_ispconfig_user'],$content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['master_ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}',$conf['mysql']['master_database'],$content);
+ $content = str_replace('{mysql_server_ip}',$conf['mysql']['master_host'],$content);
+ } else {
+ $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
+ $content = str_replace('{mysql_server_ip}',$conf['mysql']['host'],$content);
+ }
+ wf($conf['vlogger']['config_dir'].'/'.$configfile,$content);
+ chmod($conf['vlogger']['config_dir'].'/'.$configfile, 0600);
+ chown($conf['vlogger']['config_dir'].'/'.$configfile, 'root');
+ chgrp($conf['vlogger']['config_dir'].'/'.$configfile, 'root');
+
+ }
+
+ public function configure_apps_vhost() {
+ global $conf;
+
+ //* Create the ispconfig apps vhost user and group
+
+ $apps_vhost_user = escapeshellcmd($conf['web']['apps_vhost_user']);
+ $apps_vhost_group = escapeshellcmd($conf['web']['apps_vhost_group']);
+ $install_dir = escapeshellcmd($conf['web']['website_basedir'].'/apps');
+
+ $command = 'groupadd '.$apps_vhost_user;
+ if(!is_group($apps_vhost_group)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ $command = 'useradd -g '.$apps_vhost_group.' -d '.$install_dir.' '.$apps_vhost_group;
+ if(!is_user($apps_vhost_user)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+
+ $command = 'adduser '.$conf['apache']['user'].' '.$apps_vhost_group;
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ if(!@is_dir($install_dir)) mkdir($install_dir, 0755, true);
+ chown($install_dir, $apps_vhost_user);
+ chgrp($install_dir, $apps_vhost_group);
+
+ //* Copy the apps vhost file
+ $vhost_conf_dir = $conf['apache']['vhost_conf_dir'];
+ $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir'];
+ $apps_vhost_servername = ($conf['web']['apps_vhost_servername'] == '')?'':'ServerName '.$conf['web']['apps_vhost_servername'];
+
+ // Dont just copy over the virtualhost template but add some custom settings
+ $content = rf('tpl/apache_apps.vhost.master');
+
+ $content = str_replace('{apps_vhost_ip}', $conf['web']['apps_vhost_ip'], $content);
+ $content = str_replace('{apps_vhost_port}', $conf['web']['apps_vhost_port'], $content);
+ $content = str_replace('{apps_vhost_dir}', $conf['web']['website_basedir'].'/apps', $content);
+ $content = str_replace('{website_basedir}', $conf['web']['website_basedir'], $content);
+ $content = str_replace('{apps_vhost_servername}', $apps_vhost_servername, $content);
+
+
+ // comment out the listen directive if port is 80 or 443
+ if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) {
+ $content = str_replace('{vhost_port_listen}', '#', $content);
+ } else {
+ $content = str_replace('{vhost_port_listen}', '', $content);
+ }
+
+ wf($vhost_conf_dir.'/apps.vhost', $content);
+
+ //copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost");
+ //* and create the symlink
+ if($this->install_ispconfig_interface == true) {
+ if(@is_link($vhost_conf_enabled_dir.'/apps.vhost')) unlink($vhost_conf_enabled_dir.'/apps.vhost');
+ if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost')) {
+ symlink($vhost_conf_dir.'/apps.vhost',$vhost_conf_enabled_dir.'/000-apps.vhost');
+ }
+ }
+ if(!is_file($conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter')) {
+ mkdir($conf['web']['website_basedir'].'/php-fcgi-scripts/apps', 0755, true);
+ copy('tpl/apache_apps_fcgi_starter.master',$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter');
+ exec('chmod +x '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps/.php-fcgi-starter');
+ exec('chown -R ispapps:ispapps '.$conf['web']['website_basedir'].'/php-fcgi-scripts/apps');
+
+ }
+
+ }
+
+ public function make_ispconfig_ssl_cert() {
+ global $conf;
+
+ $install_dir = $conf['ispconfig_install_dir'];
+
+ $ssl_crt_file = $install_dir.'/interface/ssl/ispserver.crt';
+ $ssl_csr_file = $install_dir.'/interface/ssl/ispserver.csr';
+ $ssl_key_file = $install_dir.'/interface/ssl/ispserver.key';
+
+ if(!@is_dir($install_dir.'/interface/ssl')) mkdir($install_dir.'/interface/ssl', 0755, true);
+
+ $ssl_pw = substr(md5(mt_rand()),0,6);
+ exec("openssl genrsa -des3 -passout pass:$ssl_pw -out $ssl_key_file 4096");
+ exec("openssl req -new -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -out $ssl_csr_file");
+ exec("openssl req -x509 -passin pass:$ssl_pw -passout pass:$ssl_pw -key $ssl_key_file -in $ssl_csr_file -out $ssl_crt_file -days 3650");
+ exec("openssl rsa -passin pass:$ssl_pw -in $ssl_key_file -out $ssl_key_file.insecure");
+ rename($ssl_key_file,$ssl_key_file.'.secure');
+ rename($ssl_key_file.'.insecure',$ssl_key_file);
+
+ }
+
+ public function install_ispconfig() {
+ global $conf;
+
+ $install_dir = $conf['ispconfig_install_dir'];
+
+ //* Create the ISPConfig installation directory
+ if(!@is_dir($install_dir)) {
+ $command = "mkdir $install_dir";
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+ }
+
+ //* Create a ISPConfig user and group
+ $command = 'groupadd ispconfig';
+ if(!is_group('ispconfig')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ $command = 'useradd -g ispconfig -d '.$install_dir.' ispconfig';
+ if(!is_user('ispconfig')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ //* copy the ISPConfig interface part
+ $command = 'cp -rf ../interface '.$install_dir;
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ //* copy the ISPConfig server part
+ $command = 'cp -rf ../server '.$install_dir;
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ //* Create a symlink, so ISPConfig is accessible via web
+ // Replaced by a separate vhost definition for port 8080
+ // $command = "ln -s $install_dir/interface/web/ /var/www/ispconfig";
+ // caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ //* Create the config file for ISPConfig interface
+ $configfile = 'config.inc.php';
+ if(is_file($install_dir.'/interface/lib/'.$configfile)) {
+ copy($install_dir.'/interface/lib/'.$configfile, $install_dir.'/interface/lib/'.$configfile.'~');
+ }
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
+ $content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
+ $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content);
+
+ $content = str_replace('{mysql_master_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content);
+ $content = str_replace('{mysql_master_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content);
+ $content = str_replace('{mysql_master_server_database}', $conf['mysql']['master_database'], $content);
+ $content = str_replace('{mysql_master_server_host}', $conf['mysql']['master_host'], $content);
+
+ $content = str_replace('{server_id}', $conf['server_id'], $content);
+ $content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content);
$content = str_replace('{language}', $conf['language'], $content);
- wf($install_dir.'/server/lib/'.$configfile, $content);
-
- //* Create the config file for remote-actions (but only, if it does not exist, because
- // the value is a autoinc-value and so changed by the remoteaction_core_module
- if (!file_exists($install_dir.'/server/lib/remote_action.inc.php')) {
- $content = '<?php' . "\n" . '$maxid_remote_action = 0;' . "\n" . '?>';
- wf($install_dir.'/server/lib/remote_action.inc.php', $content);
- }
-
- //* Enable the server modules and plugins.
- // TODO: Implement a selector which modules and plugins shall be enabled.
- $dir = $install_dir.'/server/mods-available/';
- if (is_dir($dir)) {
- if ($dh = opendir($dir)) {
- while (($file = readdir($dh)) !== false) {
- if($file != '.' && $file != '..' && substr($file,-8,8) == '.inc.php') {
- include_once($install_dir.'/server/mods-available/'.$file);
- $module_name = substr($file,0,-8);
- $tmp = new $module_name;
- if($tmp->onInstall()) {
- if(!@is_link($install_dir.'/server/mods-enabled/'.$file)) {
- @symlink($install_dir.'/server/mods-available/'.$file, $install_dir.'/server/mods-enabled/'.$file);
- // @symlink($install_dir.'/server/mods-available/'.$file, '../mods-enabled/'.$file);
- }
- if (strpos($file, '_core_module') !== false) {
- if(!@is_link($install_dir.'/server/mods-core/'.$file)) {
- @symlink($install_dir.'/server/mods-available/'.$file, $install_dir.'/server/mods-core/'.$file);
- // @symlink($install_dir.'/server/mods-available/'.$file, '../mods-core/'.$file);
- }
- }
- }
- unset($tmp);
- }
- }
- closedir($dh);
- }
- }
-
- $dir = $install_dir.'/server/plugins-available/';
- if (is_dir($dir)) {
- if ($dh = opendir($dir)) {
- while (($file = readdir($dh)) !== false) {
- if($file != '.' && $file != '..' && substr($file,-8,8) == '.inc.php') {
- include_once($install_dir.'/server/plugins-available/'.$file);
- $plugin_name = substr($file,0,-8);
- $tmp = new $plugin_name;
- if(method_exists($tmp,'onInstall') && $tmp->onInstall()) {
- if(!@is_link($install_dir.'/server/plugins-enabled/'.$file)) {
- @symlink($install_dir.'/server/plugins-available/'.$file, $install_dir.'/server/plugins-enabled/'.$file);
- //@symlink($install_dir.'/server/plugins-available/'.$file, '../plugins-enabled/'.$file);
- }
- if (strpos($file, '_core_plugin') !== false) {
- if(!@is_link($install_dir.'/server/plugins-core/'.$file)) {
- @symlink($install_dir.'/server/plugins-available/'.$file, $install_dir.'/server/plugins-core/'.$file);
- //@symlink($install_dir.'/server/plugins-available/'.$file, '../plugins-core/'.$file);
- }
- }
- }
- unset($tmp);
- }
- }
- closedir($dh);
- }
- }
-
- // Update the server config
- $mail_server_enabled = ($conf['services']['mail'])?1:0;
- $web_server_enabled = ($conf['services']['web'])?1:0;
- $dns_server_enabled = ($conf['services']['dns'])?1:0;
- $file_server_enabled = ($conf['services']['file'])?1:0;
- $db_server_enabled = ($conf['services']['db'])?1:0;
- $vserver_server_enabled = ($conf['services']['vserver'])?1:0;
-
-
-
-
-
-
- $sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled' WHERE server_id = ".intval($conf['server_id']);
-
- if($conf['mysql']['master_slave_setup'] == 'y') {
- $this->dbmaster->query($sql);
- $this->db->query($sql);
- } else {
- $this->db->query($sql);
- }
-
-
- //* Chmod the files
- $command = 'chmod -R 750 '.$install_dir;
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- //* chown the files to the ispconfig user and group
- $command = 'chown -R ispconfig:ispconfig '.$install_dir;
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- //* Make the global language file directory group writable
- exec("chmod -R 770 $install_dir/interface/lib/lang");
-
- //* Make the temp directory for language file exports writable
- if(is_dir($install_dir.'/interface/web/temp')) exec("chmod -R 770 $install_dir/interface/web/temp");
-
- //* Make all interface language file directories group writable
- $handle = @opendir($install_dir.'/interface/web');
- while ($file = @readdir ($handle)) {
- if ($file != '.' && $file != '..') {
- if(@is_dir($install_dir.'/interface/web'.'/'.$file.'/lib/lang')) {
- $handle2 = opendir($install_dir.'/interface/web'.'/'.$file.'/lib/lang');
- chmod($install_dir.'/interface/web'.'/'.$file.'/lib/lang',0770);
- while ($lang_file = @readdir ($handle2)) {
- if ($lang_file != '.' && $lang_file != '..') {
- chmod($install_dir.'/interface/web'.'/'.$file.'/lib/lang/'.$lang_file,0770);
- }
- }
- }
- }
- }
-
- //* make sure that the server config file (not the interface one) is only readable by the root user
- chmod($install_dir.'/server/lib/'.$configfile, 0600);
- chown($install_dir.'/server/lib/'.$configfile, 'root');
- chgrp($install_dir.'/server/lib/'.$configfile, 'root');
-
- chmod($install_dir.'/server/lib/remote_action.inc.php', 0600);
- chown($install_dir.'/server/lib/remote_action.inc.php', 'root');
- chgrp($install_dir.'/server/lib/remote_action.inc.php', 'root');
-
- if(@is_file($install_dir.'/server/lib/mysql_clientdb.conf')) {
- chmod($install_dir.'/server/lib/mysql_clientdb.conf', 0600);
- chown($install_dir.'/server/lib/mysql_clientdb.conf', 'root');
- chgrp($install_dir.'/server/lib/mysql_clientdb.conf', 'root');
- }
-
- // TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing
- // and must be fixed as this will allow the apache user to read the ispconfig files.
- // Later this must run as own apache server or via suexec!
- $command = 'adduser www-data ispconfig';
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- //* Make the shell scripts executable
- $command = "chmod +x $install_dir/server/scripts/*.sh";
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
-
- //* Copy the ISPConfig vhost for the controlpanel
- $vhost_conf_dir = $conf['apache']['vhost_conf_dir'];
- $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir'];
-
-
- // Dont just copy over the virtualhost template but add some custom settings
- $content = rf('tpl/apache_ispconfig.vhost.master');
- $content = str_replace('{vhost_port}', $conf['apache']['vhost_port'], $content);
-
- // comment out the listen directive if port is 80 or 443
- if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) {
- $content = str_replace('{vhost_port_listen}', '#', $content);
- } else {
- $content = str_replace('{vhost_port_listen}', '', $content);
- }
-
- if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) {
- $content = str_replace('{ssl_comment}', '', $content);
- } else {
- $content = str_replace('{ssl_comment}', '#', $content);
- }
-
- wf($vhost_conf_dir.'/ispconfig.vhost', $content);
-
- //copy('tpl/apache_ispconfig.vhost.master', $vhost_conf_dir.'/ispconfig.vhost');
- //* and create the symlink
- if($this->install_ispconfig_interface == true && $this->is_update == false) {
- if(@is_link($vhost_conf_enabled_dir.'/ispconfig.vhost')) unlink($vhost_conf_enabled_dir.'/ispconfig.vhost');
- if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.vhost')) {
- symlink($vhost_conf_dir.'/ispconfig.vhost',$vhost_conf_enabled_dir.'/000-ispconfig.vhost');
- }
- }
- if(!is_file('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) {
- mkdir('/var/www/php-fcgi-scripts/ispconfig', 0755, true);
- copy('tpl/apache_ispconfig_fcgi_starter.master','/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
- exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
- symlink($install_dir.'/interface/web','/var/www/ispconfig');
- exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig');
-
- }
-
- //* Install the update script
- if(is_file('/usr/local/bin/ispconfig_update_from_svn.sh')) unlink('/usr/local/bin/ispconfig_update_from_svn.sh');
- chown($install_dir.'/server/scripts/update_from_svn.sh', 'root');
- chmod($install_dir.'/server/scripts/update_from_svn.sh', 0700);
- chown($install_dir.'/server/scripts/update_from_tgz.sh', 'root');
- chmod($install_dir.'/server/scripts/update_from_tgz.sh', 0700);
- chown($install_dir.'/server/scripts/ispconfig_update.sh', 'root');
- chmod($install_dir.'/server/scripts/ispconfig_update.sh', 0700);
- if(!is_link('/usr/local/bin/ispconfig_update_from_svn.sh')) symlink($install_dir.'/server/scripts/ispconfig_update.sh','/usr/local/bin/ispconfig_update_from_svn.sh');
- if(!is_link('/usr/local/bin/ispconfig_update.sh')) symlink($install_dir.'/server/scripts/ispconfig_update.sh','/usr/local/bin/ispconfig_update.sh');
-
- //* Make the logs readable for the ispconfig user
- if(@is_file('/var/log/mail.log')) exec('chmod +r /var/log/mail.log');
- if(@is_file('/var/log/mail.warn')) exec('chmod +r /var/log/mail.warn');
- if(@is_file('/var/log/mail.err')) exec('chmod +r /var/log/mail.err');
- if(@is_file('/var/log/messages')) exec('chmod +r /var/log/messages');
- if(@is_file('/var/log/clamav/clamav.log')) exec('chmod +r /var/log/clamav/clamav.log');
- if(@is_file('/var/log/clamav/freshclam.log')) exec('chmod +r /var/log/clamav/freshclam.log');
-
- //* Create the ispconfig log file and directory
- if(!is_file($conf['ispconfig_log_dir'].'/ispconfig.log')) {
- if(!is_dir($conf['ispconfig_log_dir'])) mkdir($conf['ispconfig_log_dir'], 0755);
- touch($conf['ispconfig_log_dir'].'/ispconfig.log');
- }
-
- rename($install_dir.'/server/scripts/run-getmail.sh','/usr/local/bin/run-getmail.sh');
- if(is_user('getmail')) chown('/usr/local/bin/run-getmail.sh', 'getmail');
- chmod('/usr/local/bin/run-getmail.sh', 0744);
-
- //* Add Log-Rotation
- if (is_dir('/etc/logrotate.d')) {
- @unlink('/etc/logrotate.d/logispc3'); // ignore, if the file is not there
- /* We rotate these logs in cron_daily.php
- $fh = fopen('/etc/logrotate.d/logispc3', 'w');
- fwrite($fh,
- "$conf['ispconfig_log_dir']/ispconfig.log { \n" .
- " weekly \n" .
- " missingok \n" .
- " rotate 4 \n" .
- " compress \n" .
- " delaycompress \n" .
- "} \n" .
- "$conf['ispconfig_log_dir']/cron.log { \n" .
- " weekly \n" .
- " missingok \n" .
- " rotate 4 \n" .
- " compress \n" .
- " delaycompress \n" .
- "}");
- fclose($fh);
- */
- }
- }
-
- public function configure_dbserver() {
- global $conf;
-
- //* If this server shall act as database server for client DB's, we configure this here
- $install_dir = $conf['ispconfig_install_dir'];
-
- // Create a file with the database login details which
- // are used to create the client databases.
-
- if(!is_dir($install_dir.'/server/lib')) {
- $command = "mkdir $install_dir/server/lib";
- caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
- }
-
- $content = rf('tpl/mysql_clientdb.conf.master');
- $content = str_replace('{username}',$conf['mysql']['admin_user'],$content);
- $content = str_replace('{password}',$conf['mysql']['admin_password'], $content);
- wf($install_dir.'/server/lib/mysql_clientdb.conf',$content);
- chmod($install_dir.'/server/lib/mysql_clientdb.conf', 0600);
- chown($install_dir.'/server/lib/mysql_clientdb.conf', 'root');
- chgrp($install_dir.'/server/lib/mysql_clientdb.conf', 'root');
-
- }
-
- public function install_crontab() {
- global $conf;
-
- $install_dir = $conf['ispconfig_install_dir'];
-
- //* Root Crontab
- exec('crontab -u root -l > crontab.txt');
- $existing_root_cron_jobs = file('crontab.txt');
-
- // remove existing ispconfig cronjobs, in case the syntax has changed
- foreach($existing_root_cron_jobs as $key => $val) {
- if(stristr($val,$install_dir)) unset($existing_root_cron_jobs[$key]);
- }
-
- $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"
- );
- foreach($root_cron_jobs as $cron_job) {
- if(!in_array($cron_job."\n", $existing_root_cron_jobs)) {
- $existing_root_cron_jobs[] = $cron_job."\n";
- }
- }
- file_put_contents('crontab.txt', $existing_root_cron_jobs);
- exec('crontab -u root crontab.txt &> /dev/null');
- unlink('crontab.txt');
-
- //* Getmail crontab
- if(is_user('getmail')) {
- $cf = $conf['getmail'];
- exec('crontab -u getmail -l > crontab.txt');
- $existing_cron_jobs = file('crontab.txt');
-
- $cron_jobs = array(
- '*/5 * * * * /usr/local/bin/run-getmail.sh > /dev/null 2>> '.$conf['ispconfig_log_dir'].'/cron.log'
- );
-
- // remove existing ispconfig cronjobs, in case the syntax has changed
- foreach($existing_cron_jobs as $key => $val) {
- if(stristr($val,'getmail')) unset($existing_cron_jobs[$key]);
- }
-
- foreach($cron_jobs as $cron_job) {
- if(!in_array($cron_job."\n", $existing_cron_jobs)) {
- $existing_cron_jobs[] = $cron_job."\n";
- }
- }
- file_put_contents('crontab.txt', $existing_cron_jobs);
- exec('crontab -u getmail crontab.txt &> /dev/null');
- unlink('crontab.txt');
- }
-
- touch($conf['ispconfig_log_dir'].'/cron.log');
- chmod($conf['ispconfig_log_dir'].'/cron.log', 0666);
-
- }
-
- /**
- * Helper function - get the path to a template file based on
- * the local part of the filename. Checks first for the existence
- * of a distribution specific file and if not found looks in the
- * base template folder. Optionally the behaviour can be changed
- * by setting the 2nd parameter which will fetch the contents
- * of the template file and return it instead of the path. The 3rd
- * parameter further extends this behaviour by filtering the contents
- * by inserting the ispconfig database credentials using the {} placeholders.
- *
- * @param string $tLocal local part of filename
- * @param bool $tRf
- * @param bool $tDBCred
- * @return string Relative path to the chosen template file
- */
- protected function get_template_file($tLocal, $tRf=false, $tDBCred=false) {
- global $conf, $dist;
-
- $final_path = '';
- $dist_template = 'dist/tpl/'.strtolower($dist['name'])."/$tLocal.master";
- if (file_exists($dist_template)) {
- $final_path = $dist_template;
- } else {
- $final_path = "tpl/$tLocal.master";
- }
-
- if (!$tRf) {
- return $final_path;
- } else {
- return (!$tDBCred) ? rf($final_path) : $this->insert_db_credentials(rf($final_path));
- }
- }
-
- /**
- * Helper function - writes the contents to a config file
- * and performs a backup if the file exist. Additionally
- * if the file exists the new file will be given the
- * same rights and ownership as the original. Optionally the
- * rights and/or ownership can be overriden by appending umask,
- * user and group to the parameters. Providing only uid and gid
- * values will result in only a chown.
- *
- * @param $tConf
- * @param $tContents
- * @return bool
- */
- protected function write_config_file($tConf, $tContents) {
- // Backup config file before writing new contents and stat file
- if ( is_file($tConf) ) {
- $stat = exec('stat -c \'%a %U %G\' '.escapeshellarg($tConf), $output, $res);
- if ($res == 0) { // stat successfull
- list($access, $user, $group) = split(" ", $stat);
- }
-
- if ( copy($tConf, $tConf.'~') ) {
- chmod($tConf.'~', 0400);
- }
- }
-
- wf($tConf, $tContents); // write file
-
- if (func_num_args() >= 4) // override rights and/or ownership
- {
- $args = func_get_args();
- $output = array_slice($args, 2);
-
- switch (sizeof($output)) {
- case 3:
- $umask = array_shift($output);
- if (is_numeric($umask) && preg_match('/^0?[0-7]{3}$/', $umask)) {
- $access = $umask;
- }
- case 2:
- if (is_user($output[0]) && is_group($output[1])) {
- list($user,$group) = $output;
- }
- break;
- }
- }
-
- if (!empty($user) && !empty($group)) {
- chown($tConf, $user);
- chgrp($tConf, $group);
- }
-
- if (!empty($access)) {
- exec("chmod $access $tConf");
- }
- }
-
- /**
- * Helper function - filter the contents of a config
- * file by inserting the common ispconfig database
- * credentials.
- *
- * @param $tContents
- * @return string
- */
- protected function insert_db_credentials($tContents) {
- global $conf;
-
- $tContents = str_replace('{mysql_server_ispconfig_user}', $conf["mysql"]["ispconfig_user"], $tContents);
- $tContents = str_replace('{mysql_server_ispconfig_password}', $conf["mysql"]["ispconfig_password"], $tContents);
- $tContents = str_replace('{mysql_server_database}', $conf["mysql"]["database"], $tContents);
- $tContents = str_replace('{mysql_server_ip}', $conf["mysql"]["ip"], $tContents);
- $tContents = str_replace('{mysql_server_host}',$conf['mysql']['host'], $tContents);
- $tContents = str_replace('{mysql_server_port}',$conf["mysql"]["port"], $tContents);
-
- return $tContents;
- }
-}
-
-?>
+ wf($install_dir.'/interface/lib/'.$configfile, $content);
+
+ //* Create the config file for ISPConfig server
+ $configfile = 'config.inc.php';
+ if(is_file($install_dir.'/server/lib/'.$configfile)) {
+ copy($install_dir.'/server/lib/'.$configfile, $install_dir.'/interface/lib/'.$configfile.'~');
+ }
+ $content = rf('tpl/'.$configfile.'.master');
+ $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
+ $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content);
+ $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content);
+ $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content);
+
+ $content = str_replace('{mysql_master_server_ispconfig_user}', $conf['mysql']['master_ispconfig_user'], $content);
+ $content = str_replace('{mysql_master_server_ispconfig_password}', $conf['mysql']['master_ispconfig_password'], $content);
+ $content = str_replace('{mysql_master_server_database}', $conf['mysql']['master_database'], $content);
+ $content = str_replace('{mysql_master_server_host}', $conf['mysql']['master_host'], $content);
+
+ $content = str_replace('{server_id}', $conf['server_id'], $content);
+ $content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content);
+ $content = str_replace('{language}', $conf['language'], $content);
+
+ wf($install_dir.'/server/lib/'.$configfile, $content);
+
+ //* Create the config file for remote-actions (but only, if it does not exist, because
+ // the value is a autoinc-value and so changed by the remoteaction_core_module
+ if (!file_exists($install_dir.'/server/lib/remote_action.inc.php')) {
+ $content = '<?php' . "\n" . '$maxid_remote_action = 0;' . "\n" . '?>';
+ wf($install_dir.'/server/lib/remote_action.inc.php', $content);
+ }
+
+ //* Enable the server modules and plugins.
+ // TODO: Implement a selector which modules and plugins shall be enabled.
+ $dir = $install_dir.'/server/mods-available/';
+ if (is_dir($dir)) {
+ if ($dh = opendir($dir)) {
+ while (($file = readdir($dh)) !== false) {
+ if($file != '.' && $file != '..' && substr($file,-8,8) == '.inc.php') {
+ include_once($install_dir.'/server/mods-available/'.$file);
+ $module_name = substr($file,0,-8);
+ $tmp = new $module_name;
+ if($tmp->onInstall()) {
+ if(!@is_link($install_dir.'/server/mods-enabled/'.$file)) {
+ @symlink($install_dir.'/server/mods-available/'.$file, $install_dir.'/server/mods-enabled/'.$file);
+ // @symlink($install_dir.'/server/mods-available/'.$file, '../mods-enabled/'.$file);
+ }
+ if (strpos($file, '_core_module') !== false) {
+ if(!@is_link($install_dir.'/server/mods-core/'.$file)) {
+ @symlink($install_dir.'/server/mods-available/'.$file, $install_dir.'/server/mods-core/'.$file);
+ // @symlink($install_dir.'/server/mods-available/'.$file, '../mods-core/'.$file);
+ }
+ }
+ }
+ unset($tmp);
+ }
+ }
+ closedir($dh);
+ }
+ }
+
+ $dir = $install_dir.'/server/plugins-available/';
+ if (is_dir($dir)) {
+ if ($dh = opendir($dir)) {
+ while (($file = readdir($dh)) !== false) {
+ if($file != '.' && $file != '..' && substr($file,-8,8) == '.inc.php') {
+ include_once($install_dir.'/server/plugins-available/'.$file);
+ $plugin_name = substr($file,0,-8);
+ $tmp = new $plugin_name;
+ if(method_exists($tmp,'onInstall') && $tmp->onInstall()) {
+ if(!@is_link($install_dir.'/server/plugins-enabled/'.$file)) {
+ @symlink($install_dir.'/server/plugins-available/'.$file, $install_dir.'/server/plugins-enabled/'.$file);
+ //@symlink($install_dir.'/server/plugins-available/'.$file, '../plugins-enabled/'.$file);
+ }
+ if (strpos($file, '_core_plugin') !== false) {
+ if(!@is_link($install_dir.'/server/plugins-core/'.$file)) {
+ @symlink($install_dir.'/server/plugins-available/'.$file, $install_dir.'/server/plugins-core/'.$file);
+ //@symlink($install_dir.'/server/plugins-available/'.$file, '../plugins-core/'.$file);
+ }
+ }
+ }
+ unset($tmp);
+ }
+ }
+ closedir($dh);
+ }
+ }
+
+ // Update the server config
+ $mail_server_enabled = ($conf['services']['mail'])?1:0;
+ $web_server_enabled = ($conf['services']['web'])?1:0;
+ $dns_server_enabled = ($conf['services']['dns'])?1:0;
+ $file_server_enabled = ($conf['services']['file'])?1:0;
+ $db_server_enabled = ($conf['services']['db'])?1:0;
+ $vserver_server_enabled = ($conf['services']['vserver'])?1:0;
+
+
+
+
+
+
+ $sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled' WHERE server_id = ".intval($conf['server_id']);
+
+ if($conf['mysql']['master_slave_setup'] == 'y') {
+ $this->dbmaster->query($sql);
+ $this->db->query($sql);
+ } else {
+ $this->db->query($sql);
+ }
+
+
+ //* Chmod the files
+ $command = 'chmod -R 750 '.$install_dir;
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ //* chown the files to the ispconfig user and group
+ $command = 'chown -R ispconfig:ispconfig '.$install_dir;
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ //* Make the global language file directory group writable
+ exec("chmod -R 770 $install_dir/interface/lib/lang");
+
+ //* Make the temp directory for language file exports writable
+ if(is_dir($install_dir.'/interface/web/temp')) exec("chmod -R 770 $install_dir/interface/web/temp");
+
+ //* Make all interface language file directories group writable
+ $handle = @opendir($install_dir.'/interface/web');
+ while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_dir($install_dir.'/interface/web'.'/'.$file.'/lib/lang')) {
+ $handle2 = opendir($install_dir.'/interface/web'.'/'.$file.'/lib/lang');
+ chmod($install_dir.'/interface/web'.'/'.$file.'/lib/lang',0770);
+ while ($lang_file = @readdir ($handle2)) {
+ if ($lang_file != '.' && $lang_file != '..') {
+ chmod($install_dir.'/interface/web'.'/'.$file.'/lib/lang/'.$lang_file,0770);
+ }
+ }
+ }
+ }
+ }
+
+ //* make sure that the server config file (not the interface one) is only readable by the root user
+ chmod($install_dir.'/server/lib/'.$configfile, 0600);
+ chown($install_dir.'/server/lib/'.$configfile, 'root');
+ chgrp($install_dir.'/server/lib/'.$configfile, 'root');
+
+ chmod($install_dir.'/server/lib/remote_action.inc.php', 0600);
+ chown($install_dir.'/server/lib/remote_action.inc.php', 'root');
+ chgrp($install_dir.'/server/lib/remote_action.inc.php', 'root');
+
+ if(@is_file($install_dir.'/server/lib/mysql_clientdb.conf')) {
+ chmod($install_dir.'/server/lib/mysql_clientdb.conf', 0600);
+ chown($install_dir.'/server/lib/mysql_clientdb.conf', 'root');
+ chgrp($install_dir.'/server/lib/mysql_clientdb.conf', 'root');
+ }
+
+ // TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing
+ // and must be fixed as this will allow the apache user to read the ispconfig files.
+ // Later this must run as own apache server or via suexec!
+ $command = 'adduser www-data ispconfig';
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ //* Make the shell scripts executable
+ $command = "chmod +x $install_dir/server/scripts/*.sh";
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ //* Copy the ISPConfig vhost for the controlpanel
+ $vhost_conf_dir = $conf['apache']['vhost_conf_dir'];
+ $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir'];
+
+
+ // Dont just copy over the virtualhost template but add some custom settings
+ $content = rf('tpl/apache_ispconfig.vhost.master');
+ $content = str_replace('{vhost_port}', $conf['apache']['vhost_port'], $content);
+
+ // comment out the listen directive if port is 80 or 443
+ if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) {
+ $content = str_replace('{vhost_port_listen}', '#', $content);
+ } else {
+ $content = str_replace('{vhost_port_listen}', '', $content);
+ }
+
+ if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) {
+ $content = str_replace('{ssl_comment}', '', $content);
+ } else {
+ $content = str_replace('{ssl_comment}', '#', $content);
+ }
+
+ wf($vhost_conf_dir.'/ispconfig.vhost', $content);
+
+ //copy('tpl/apache_ispconfig.vhost.master', $vhost_conf_dir.'/ispconfig.vhost');
+ //* and create the symlink
+ if($this->install_ispconfig_interface == true && $this->is_update == false) {
+ if(@is_link($vhost_conf_enabled_dir.'/ispconfig.vhost')) unlink($vhost_conf_enabled_dir.'/ispconfig.vhost');
+ if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.vhost')) {
+ symlink($vhost_conf_dir.'/ispconfig.vhost',$vhost_conf_enabled_dir.'/000-ispconfig.vhost');
+ }
+ }
+ if(!is_file('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) {
+ mkdir('/var/www/php-fcgi-scripts/ispconfig', 0755, true);
+ copy('tpl/apache_ispconfig_fcgi_starter.master','/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
+ exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
+ symlink($install_dir.'/interface/web','/var/www/ispconfig');
+ exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig');
+
+ }
+
+ //* Install the update script
+ if(is_file('/usr/local/bin/ispconfig_update_from_svn.sh')) unlink('/usr/local/bin/ispconfig_update_from_svn.sh');
+ chown($install_dir.'/server/scripts/update_from_svn.sh', 'root');
+ chmod($install_dir.'/server/scripts/update_from_svn.sh', 0700);
+ chown($install_dir.'/server/scripts/update_from_tgz.sh', 'root');
+ chmod($install_dir.'/server/scripts/update_from_tgz.sh', 0700);
+ chown($install_dir.'/server/scripts/ispconfig_update.sh', 'root');
+ chmod($install_dir.'/server/scripts/ispconfig_update.sh', 0700);
+ if(!is_link('/usr/local/bin/ispconfig_update_from_svn.sh')) symlink($install_dir.'/server/scripts/ispconfig_update.sh','/usr/local/bin/ispconfig_update_from_svn.sh');
+ if(!is_link('/usr/local/bin/ispconfig_update.sh')) symlink($install_dir.'/server/scripts/ispconfig_update.sh','/usr/local/bin/ispconfig_update.sh');
+
+ //* Make the logs readable for the ispconfig user
+ if(@is_file('/var/log/mail.log')) exec('chmod +r /var/log/mail.log');
+ if(@is_file('/var/log/mail.warn')) exec('chmod +r /var/log/mail.warn');
+ if(@is_file('/var/log/mail.err')) exec('chmod +r /var/log/mail.err');
+ if(@is_file('/var/log/messages')) exec('chmod +r /var/log/messages');
+ if(@is_file('/var/log/clamav/clamav.log')) exec('chmod +r /var/log/clamav/clamav.log');
+ if(@is_file('/var/log/clamav/freshclam.log')) exec('chmod +r /var/log/clamav/freshclam.log');
+
+ //* Create the ispconfig log file and directory
+ if(!is_file($conf['ispconfig_log_dir'].'/ispconfig.log')) {
+ if(!is_dir($conf['ispconfig_log_dir'])) mkdir($conf['ispconfig_log_dir'], 0755);
+ touch($conf['ispconfig_log_dir'].'/ispconfig.log');
+ }
+
+ rename($install_dir.'/server/scripts/run-getmail.sh','/usr/local/bin/run-getmail.sh');
+ if(is_user('getmail')) chown('/usr/local/bin/run-getmail.sh', 'getmail');
+ chmod('/usr/local/bin/run-getmail.sh', 0744);
+
+ //* Add Log-Rotation
+ if (is_dir('/etc/logrotate.d')) {
+ @unlink('/etc/logrotate.d/logispc3'); // ignore, if the file is not there
+ /* We rotate these logs in cron_daily.php
+ $fh = fopen('/etc/logrotate.d/logispc3', 'w');
+ fwrite($fh,
+ "$conf['ispconfig_log_dir']/ispconfig.log { \n" .
+ " weekly \n" .
+ " missingok \n" .
+ " rotate 4 \n" .
+ " compress \n" .
+ " delaycompress \n" .
+ "} \n" .
+ "$conf['ispconfig_log_dir']/cron.log { \n" .
+ " weekly \n" .
+ " missingok \n" .
+ " rotate 4 \n" .
+ " compress \n" .
+ " delaycompress \n" .
+ "}");
+ fclose($fh);
+ */
+ }
+ }
+
+ public function configure_dbserver() {
+ global $conf;
+
+ //* If this server shall act as database server for client DB's, we configure this here
+ $install_dir = $conf['ispconfig_install_dir'];
+
+ // Create a file with the database login details which
+ // are used to create the client databases.
+
+ if(!is_dir($install_dir.'/server/lib')) {
+ $command = "mkdir $install_dir/server/lib";
+ caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+ }
+
+ $content = rf('tpl/mysql_clientdb.conf.master');
+ $content = str_replace('{username}',$conf['mysql']['admin_user'],$content);
+ $content = str_replace('{password}',$conf['mysql']['admin_password'], $content);
+ wf($install_dir.'/server/lib/mysql_clientdb.conf',$content);
+ chmod($install_dir.'/server/lib/mysql_clientdb.conf', 0600);
+ chown($install_dir.'/server/lib/mysql_clientdb.conf', 'root');
+ chgrp($install_dir.'/server/lib/mysql_clientdb.conf', 'root');
+
+ }
+
+ public function install_crontab() {
+ global $conf;
+
+ $install_dir = $conf['ispconfig_install_dir'];
+
+ //* Root Crontab
+ exec('crontab -u root -l > crontab.txt');
+ $existing_root_cron_jobs = file('crontab.txt');
+
+ // remove existing ispconfig cronjobs, in case the syntax has changed
+ foreach($existing_root_cron_jobs as $key => $val) {
+ if(stristr($val,$install_dir)) unset($existing_root_cron_jobs[$key]);
+ }
+
+ $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"
+ );
+ foreach($root_cron_jobs as $cron_job) {
+ if(!in_array($cron_job."\n", $existing_root_cron_jobs)) {
+ $existing_root_cron_jobs[] = $cron_job."\n";
+ }
+ }
+ file_put_contents('crontab.txt', $existing_root_cron_jobs);
+ exec('crontab -u root crontab.txt &> /dev/null');
+ unlink('crontab.txt');
+
+ //* Getmail crontab
+ if(is_user('getmail')) {
+ $cf = $conf['getmail'];
+ exec('crontab -u getmail -l > crontab.txt');
+ $existing_cron_jobs = file('crontab.txt');
+
+ $cron_jobs = array(
+ '*/5 * * * * /usr/local/bin/run-getmail.sh > /dev/null 2>> '.$conf['ispconfig_log_dir'].'/cron.log'
+ );
+
+ // remove existing ispconfig cronjobs, in case the syntax has changed
+ foreach($existing_cron_jobs as $key => $val) {
+ if(stristr($val,'getmail')) unset($existing_cron_jobs[$key]);
+ }
+
+ foreach($cron_jobs as $cron_job) {
+ if(!in_array($cron_job."\n", $existing_cron_jobs)) {
+ $existing_cron_jobs[] = $cron_job."\n";
+ }
+ }
+ file_put_contents('crontab.txt', $existing_cron_jobs);
+ exec('crontab -u getmail crontab.txt &> /dev/null');
+ unlink('crontab.txt');
+ }
+
+ touch($conf['ispconfig_log_dir'].'/cron.log');
+ chmod($conf['ispconfig_log_dir'].'/cron.log', 0666);
+
+ }
+
+ /**
+ * Helper function - get the path to a template file based on
+ * the local part of the filename. Checks first for the existence
+ * of a distribution specific file and if not found looks in the
+ * base template folder. Optionally the behaviour can be changed
+ * by setting the 2nd parameter which will fetch the contents
+ * of the template file and return it instead of the path. The 3rd
+ * parameter further extends this behaviour by filtering the contents
+ * by inserting the ispconfig database credentials using the {} placeholders.
+ *
+ * @param string $tLocal local part of filename
+ * @param bool $tRf
+ * @param bool $tDBCred
+ * @return string Relative path to the chosen template file
+ */
+ protected function get_template_file($tLocal, $tRf=false, $tDBCred=false) {
+ global $conf, $dist;
+
+ $final_path = '';
+ $dist_template = 'dist/tpl/'.strtolower($dist['name'])."/$tLocal.master";
+ if (file_exists($dist_template)) {
+ $final_path = $dist_template;
+ } else {
+ $final_path = "tpl/$tLocal.master";
+ }
+
+ if (!$tRf) {
+ return $final_path;
+ } else {
+ return (!$tDBCred) ? rf($final_path) : $this->insert_db_credentials(rf($final_path));
+ }
+ }
+
+ /**
+ * Helper function - writes the contents to a config file
+ * and performs a backup if the file exist. Additionally
+ * if the file exists the new file will be given the
+ * same rights and ownership as the original. Optionally the
+ * rights and/or ownership can be overriden by appending umask,
+ * user and group to the parameters. Providing only uid and gid
+ * values will result in only a chown.
+ *
+ * @param $tConf
+ * @param $tContents
+ * @return bool
+ */
+ protected function write_config_file($tConf, $tContents) {
+ // Backup config file before writing new contents and stat file
+ if ( is_file($tConf) ) {
+ $stat = exec('stat -c \'%a %U %G\' '.escapeshellarg($tConf), $output, $res);
+ if ($res == 0) { // stat successfull
+ list($access, $user, $group) = split(" ", $stat);
+ }
+
+ if ( copy($tConf, $tConf.'~') ) {
+ chmod($tConf.'~', 0400);
+ }
+ }
+
+ wf($tConf, $tContents); // write file
+
+ if (func_num_args() >= 4) // override rights and/or ownership
+ {
+ $args = func_get_args();
+ $output = array_slice($args, 2);
+
+ switch (sizeof($output)) {
+ case 3:
+ $umask = array_shift($output);
+ if (is_numeric($umask) && preg_match('/^0?[0-7]{3}$/', $umask)) {
+ $access = $umask;
+ }
+ case 2:
+ if (is_user($output[0]) && is_group($output[1])) {
+ list($user,$group) = $output;
+ }
+ break;
+ }
+ }
+
+ if (!empty($user) && !empty($group)) {
+ chown($tConf, $user);
+ chgrp($tConf, $group);
+ }
+
+ if (!empty($access)) {
+ exec("chmod $access $tConf");
+ }
+ }
+
+ /**
+ * Helper function - filter the contents of a config
+ * file by inserting the common ispconfig database
+ * credentials.
+ *
+ * @param $tContents
+ * @return string
+ */
+ protected function insert_db_credentials($tContents) {
+ global $conf;
+
+ $tContents = str_replace('{mysql_server_ispconfig_user}', $conf["mysql"]["ispconfig_user"], $tContents);
+ $tContents = str_replace('{mysql_server_ispconfig_password}', $conf["mysql"]["ispconfig_password"], $tContents);
+ $tContents = str_replace('{mysql_server_database}', $conf["mysql"]["database"], $tContents);
+ $tContents = str_replace('{mysql_server_ip}', $conf["mysql"]["ip"], $tContents);
+ $tContents = str_replace('{mysql_server_host}',$conf['mysql']['host'], $tContents);
+ $tContents = str_replace('{mysql_server_port}',$conf["mysql"]["port"], $tContents);
+
+ return $tContents;
+ }
+}
+
+?>
diff --git a/install/sql/README.txt b/install/sql/README.txt
index 7159cfc..fe15ce5 100644
--- a/install/sql/README.txt
+++ b/install/sql/README.txt
@@ -1,39 +1,39 @@
-
----------------------------------------------------------------------------------
-- Developer README
----------------------------------------------------------------------------------
-
-When you add or modify a database field or table in the ISPConfig database,
-then follow these steps:
-
-1) Add the field or table in the ispconfig3.sql file. This file contains the
- complete database dump which is used when ISPConfig gets installed.
-
-2) Create a new file in the "incremental" subfolder wich contains the alter
- table, or if it is a complete new table then the add table, statement(s) in
- MySQL syntax which is/are required to modify the current ispconfig database
- during update. The naming scheme of the sql patch update files is
- upd_0001.sql, upd_0002.sql, upd_0003.sql etc. Ensure that the number that
- you choose for the new file is a +1 increment of the number of the last
- existing file and that the number is formatted with 4 digits.
-
- A patch file may contain one or more alter table statements. Every patch file
- gets executed once in the database, so do not modify older (already released)
- patch files, they will not get executed again if the update was already run
- once on a system.
-
- After a patch has been executed, the dbversion field in the server table gets
- increeased to the version number of the last installed patch.
-
- If you like to run a patch file again for testing purposes on your dev machine,
- then set the number in "dbversion" field of the server table to be lower then
- the number of your patch.
-
-Note: Incremental patches are supported for installed ISPConfig versions > 3.0.3.
- If the installed version is < 3.0.3, then the full update method is used.
- In other words, ISPConfig 3.0.3 is the patch release (dbversion) 0 as the
- incremental update feature has been introduced in 3.0.3.
-
-
-
-
+
+---------------------------------------------------------------------------------
+- Developer README
+---------------------------------------------------------------------------------
+
+When you add or modify a database field or table in the ISPConfig database,
+then follow these steps:
+
+1) Add the field or table in the ispconfig3.sql file. This file contains the
+ complete database dump which is used when ISPConfig gets installed.
+
+2) Create a new file in the "incremental" subfolder wich contains the alter
+ table, or if it is a complete new table then the add table, statement(s) in
+ MySQL syntax which is/are required to modify the current ispconfig database
+ during update. The naming scheme of the sql patch update files is
+ upd_0001.sql, upd_0002.sql, upd_0003.sql etc. Ensure that the number that
+ you choose for the new file is a +1 increment of the number of the last
+ existing file and that the number is formatted with 4 digits.
+
+ A patch file may contain one or more alter table statements. Every patch file
+ gets executed once in the database, so do not modify older (already released)
+ patch files, they will not get executed again if the update was already run
+ once on a system.
+
+ After a patch has been executed, the dbversion field in the server table gets
+ increeased to the version number of the last installed patch.
+
+ If you like to run a patch file again for testing purposes on your dev machine,
+ then set the number in "dbversion" field of the server table to be lower then
+ the number of your patch.
+
+Note: Incremental patches are supported for installed ISPConfig versions > 3.0.3.
+ If the installed version is < 3.0.3, then the full update method is used.
+ In other words, ISPConfig 3.0.3 is the patch release (dbversion) 0 as the
+ incremental update feature has been introduced in 3.0.3.
+
+
+
+
diff --git a/install/sql/incremental/upd_0007.sql b/install/sql/incremental/upd_0007.sql
index a7697e8..cea3813 100644
--- a/install/sql/incremental/upd_0007.sql
+++ b/install/sql/incremental/upd_0007.sql
@@ -1,19 +1,19 @@
-ALTER TABLE client ADD COLUMN limit_mailmailinglist int(11) NOT NULL default '-1';
-ALTER TABLE client_template ADD COLUMN limit_mailmailinglist int(11) NOT NULL default '-1';
-
-CREATE TABLE IF NOT EXISTS `mail_mailinglist` (
- `mailinglist_id` int(11) unsigned NOT NULL auto_increment,
- `sys_userid` int(11) unsigned NOT NULL default '0',
- `sys_groupid` int(11) unsigned NOT NULL default '0',
- `sys_perm_user` varchar(5) NOT NULL,
- `sys_perm_group` varchar(5) character set ucs2 NOT NULL,
- `sys_perm_other` varchar(5) NOT NULL,
- `server_id` int(11) unsigned NOT NULL default '0',
- `domain` varchar(255) NOT NULL,
- `listname` varchar(255) NOT NULL,
- `email` varchar(255) NOT NULL,
- `password` varchar(255) NOT NULL,
- PRIMARY KEY (`mailinglist_id`)
-) ENGINE=MyISAM AUTO_INCREMENT=1;
-
+ALTER TABLE client ADD COLUMN limit_mailmailinglist int(11) NOT NULL default '-1';
+ALTER TABLE client_template ADD COLUMN limit_mailmailinglist int(11) NOT NULL default '-1';
+
+CREATE TABLE IF NOT EXISTS `mail_mailinglist` (
+ `mailinglist_id` int(11) unsigned NOT NULL auto_increment,
+ `sys_userid` int(11) unsigned NOT NULL default '0',
+ `sys_groupid` int(11) unsigned NOT NULL default '0',
+ `sys_perm_user` varchar(5) NOT NULL,
+ `sys_perm_group` varchar(5) character set ucs2 NOT NULL,
+ `sys_perm_other` varchar(5) NOT NULL,
+ `server_id` int(11) unsigned NOT NULL default '0',
+ `domain` varchar(255) NOT NULL,
+ `listname` varchar(255) NOT NULL,
+ `email` varchar(255) NOT NULL,
+ `password` varchar(255) NOT NULL,
+ PRIMARY KEY (`mailinglist_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=1;
+
DROP TABLE `mail_mailman_domain`;
\ No newline at end of file
diff --git a/install/update.php b/install/update.php
index 17f6c3c..fa1cb83 100644
--- a/install/update.php
+++ b/install/update.php
@@ -1,358 +1,358 @@
-<?php
-
-/*
-Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- ISPConfig 3 updater.
-*/
-
-error_reporting(E_ALL|E_STRICT);
-
-//** The banner on the command line
-echo "\n\n".str_repeat('-',80)."\n";
-echo " _____ ___________ _____ __ _ ____
-|_ _/ ___| ___ \ / __ \ / _(_) /__ \
- | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
- | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
- _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
- \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
- __/ |
- |___/ ";
-echo "\n".str_repeat('-',80)."\n";
-echo "\n\n>> Update \n\n";
-
-//** Include the library with the basic installer functions
-require_once('lib/install.lib.php');
-
-//** Include the library with the basic updater functions
-require_once('lib/update.lib.php');
-
-//** Include the base class of the installer class
-require_once('lib/installer_base.lib.php');
-
-//** Ensure that current working directory is install directory
-$cur_dir = getcwd();
-if(realpath(dirname(__FILE__)) != $cur_dir) die("Please run installation/update from _inside_ the install directory!\n");
-
-//** Install logfile
-define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log');
-define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../'));
-
-//** Check for ISPConfig 2.x versions
-if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) {
- die('This software cannot be installed on a server wich runs ISPConfig 2.x.');
-}
-
-//** Get distribution identifier
-$dist = get_distname();
-
-include_once("/usr/local/ispconfig/server/lib/config.inc.php");
-$conf_old = $conf;
-unset($conf);
-
-if($dist['id'] == '') die('Linux distribution or version not recognized.');
-
-//** Include the distribution-specific installer class library and configuration
-if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once('dist/lib/'.$dist['baseid'].'.lib.php');
-include_once('dist/lib/'.$dist['id'].'.lib.php');
-include_once('dist/conf/'.$dist['id'].'.conf.php');
-
-//** Get hostname
-exec('hostname -f', $tmp_out);
-$conf['hostname'] = $tmp_out[0];
-unset($tmp_out);
-
-//** Set the mysql login information
-$conf["mysql"]["host"] = $conf_old["db_host"];
-$conf["mysql"]["database"] = $conf_old["db_database"];
-$conf['mysql']['charset'] = 'utf8';
-$conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
-$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
-$conf['language'] = $conf_old['language'];
-if($conf['language'] == '{language}') $conf['language'] = 'en';
-
-if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
-if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"];
-if(isset($conf_old["dbmaster_user"])) $conf["mysql"]["master_ispconfig_user"] = $conf_old["dbmaster_user"];
-if(isset($conf_old["dbmaster_password"])) $conf["mysql"]["master_ispconfig_password"] = $conf_old["dbmaster_password"];
-
-//* Check if this is a master / slave setup
-if($conf["mysql"]["master_host"] != '' && $conf["mysql"]["host"] != $conf["mysql"]["master_host"]) {
- $conf['mysql']['master_slave_setup'] = 'y';
-}
-
-// Resolve the IP address of the mysql hostname.
-if(!$conf['mysql']['ip'] = gethostbyname($conf['mysql']['host'])) die('Unable to resolve hostname'.$conf['mysql']['host']);
-
-$conf['server_id'] = intval($conf_old["server_id"]);
-$conf['ispconfig_log_priority'] = $conf_old["log_priority"];
-
-$inst = new installer();
-$inst->is_update = true;
-
-//** Detect the installed applications
-$inst->find_installed_apps();
-
-echo "This application will update ISPConfig 3 on your server.\n";
-
-//** Initialize the MySQL server connection
-include_once('lib/mysql.lib.php');
-
-//** Database update is a bit brute force and should be rebuild later ;)
-
-/*
- * Try to read the DB-admin settings
- */
-$clientdb_host = '';
-$clientdb_user = '';
-$clientdb_password = '';
-include_once("/usr/local/ispconfig/server/lib/mysql_clientdb.conf");
-$conf["mysql"]["admin_user"] = $clientdb_user;
-$conf["mysql"]["admin_password"] = $clientdb_password;
-$clientdb_host = '';
-$clientdb_user = '';
-$clientdb_password = '';
-
-//** Ask user for mysql admin_password if empty
-if( empty($conf["mysql"]["admin_password"]) ) {
-
- $conf["mysql"]["admin_password"] = $inst->free_query('MySQL root password', $conf['mysql']['admin_password']);
-}
-
-/*
- * Prepare the dump of the database
- */
-prepareDBDump();
-
-//* initialize the database
-$inst->db = new db();
-
-//* initialize the master DB, if we have a multiserver setup
-if($conf['mysql']['master_slave_setup'] == 'y') {
- //** Get MySQL root credentials
- $finished = false;
- do {
- $tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host']);
- $tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user']);
- $tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password']);
- $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database']);
-
- //* Initialize the MySQL server connection
- if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
- $conf['mysql']['master_host'] = $tmp_mysql_server_host;
- $conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
- $conf['mysql']['master_admin_password'] = $tmp_mysql_server_admin_password;
- $conf['mysql']['master_database'] = $tmp_mysql_server_database;
- $finished = true;
- } else {
- swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
- }
- } while ($finished == false);
- unset($finished);
-
- // initialize the connection to the master database
- $inst->dbmaster = new db();
- if($inst->dbmaster->linkId) $inst->dbmaster->closeConn();
- $inst->dbmaster->dbHost = $conf['mysql']["master_host"];
- $inst->dbmaster->dbName = $conf['mysql']["master_database"];
- $inst->dbmaster->dbUser = $conf['mysql']["master_admin_user"];
- $inst->dbmaster->dbPass = $conf['mysql']["master_admin_password"];
-} else {
- $inst->dbmaster = $inst->db;
-}
-
-
-/*
- * dump the new Database and reconfigure the server.ini
- */
-updateDbAndIni();
-
-/*
- * Reconfigure the permisson if needed
- * (if this is done at client side, only this client is updated.
- * If this is done at server side, all clients are updated.
- */
-//if($conf_old['dbmaster_user'] != '' or $conf_old['dbmaster_host'] != '') {
- //** Update master database rights
- $reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes','no'),'no');
-
- if($reconfigure_master_database_rights_answer == 'yes') {
- $inst->grant_master_database_rights();
- }
-//}
-
-//** Shall the services be reconfigured during update
-$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes','no'),'yes');
-
-if($reconfigure_services_answer == 'yes') {
-
- if($conf['services']['mail']) {
- //** Configure postfix
- swriteln('Configuring Postfix');
- $inst->configure_postfix('dont-create-certs');
-
- //** Configure mailman
- swriteln('Configuring Mailman');
- $inst->configure_mailman('update');
-
- //* Configure Jailkit
- swriteln('Configuring Jailkit');
- $inst->configure_jailkit();
-
- if($conf['dovecot']['installed'] == true) {
- //* Configure dovecot
- swriteln('Configuring Dovecot');
- $inst->configure_dovecot();
- } else {
- //** Configure saslauthd
- swriteln('Configuring SASL');
- $inst->configure_saslauthd();
-
- //** Configure PAM
- swriteln('Configuring PAM');
- $inst->configure_pam();
-
- //* Configure courier
- swriteln('Configuring Courier');
- $inst->configure_courier();
- }
-
- //** Configure Spamasassin
- swriteln('Configuring Spamassassin');
- $inst->configure_spamassassin();
-
- //** Configure Amavis
- swriteln('Configuring Amavisd');
- $inst->configure_amavis();
-
- //** Configure Getmail
- swriteln('Configuring Getmail');
- $inst->configure_getmail();
- }
-
- if($conf['services']['web']) {
- //** Configure Pureftpd
- swriteln('Configuring Pureftpd');
- $inst->configure_pureftpd();
- }
-
- if($conf['services']['dns']) {
- //* Configure DNS
- if($conf['powerdns']['installed'] == true) {
- swriteln('Configuring PowerDNS');
- $inst->configure_powerdns();
- } elseif($conf['bind']['installed'] == true) {
- swriteln('Configuring BIND');
- $inst->configure_bind();
- } else {
- swriteln('Configuring MyDNS');
- $inst->configure_mydns();
- }
- }
-
- if($conf['services']['web']) {
- //** Configure Apache
- swriteln('Configuring Apache');
- $inst->configure_apache();
-
- //** Configure vlogger
- swriteln('Configuring vlogger');
- $inst->configure_vlogger();
-
- //** Configure apps vhost
- swriteln('Configuring Apps vhost');
- $inst->configure_apps_vhost();
- }
-
-
- //* Configure DBServer
- swriteln('Configuring Database');
- $inst->configure_dbserver();
-
-
- //if(@is_dir('/etc/Bastille')) {
- //* Configure Firewall
- swriteln('Configuring Firewall');
- $inst->configure_firewall();
- //}
-}
-
-//** Configure ISPConfig
-swriteln('Updating ISPConfig');
-
-
-//** Customise the port ISPConfig runs on
-$ispconfig_port_number = get_ispconfig_port_number();
-$conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number);
-
-// $ispconfig_ssl_default = (is_ispconfig_ssl_enabled() == true)?'y':'n';
-if(strtolower($inst->simple_query('Create new ISPConfig SSL certificate',array('yes','no'),'no')) == 'yes') {
- $inst->make_ispconfig_ssl_cert();
-}
-
-$inst->install_ispconfig();
-
-//** Configure Crontab
-$update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes','no'),'yes');
-if($update_crontab_answer == 'yes') {
- swriteln('Updating Crontab');
- $inst->install_crontab();
-}
-
-//** Restart services:
-if($reconfigure_services_answer == 'yes') {
- swriteln('Restarting services ...');
- if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart');
- if($conf['services']['mail']) {
- if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
- if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
- if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
- if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
- if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
- if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
- if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
- if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
- if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
- if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
- if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
- }
- if($conf['services']['web']) {
- if($conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
- if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
- }
- if($conf['services']['dns']) {
- if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
- if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
- if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
- }
-}
-
-echo "Update finished.\n";
-
-?>
+<?php
+
+/*
+Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ ISPConfig 3 updater.
+*/
+
+error_reporting(E_ALL|E_STRICT);
+
+//** The banner on the command line
+echo "\n\n".str_repeat('-',80)."\n";
+echo " _____ ___________ _____ __ _ ____
+|_ _/ ___| ___ \ / __ \ / _(_) /__ \
+ | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
+ | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
+ _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
+ \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
+ __/ |
+ |___/ ";
+echo "\n".str_repeat('-',80)."\n";
+echo "\n\n>> Update \n\n";
+
+//** Include the library with the basic installer functions
+require_once('lib/install.lib.php');
+
+//** Include the library with the basic updater functions
+require_once('lib/update.lib.php');
+
+//** Include the base class of the installer class
+require_once('lib/installer_base.lib.php');
+
+//** Ensure that current working directory is install directory
+$cur_dir = getcwd();
+if(realpath(dirname(__FILE__)) != $cur_dir) die("Please run installation/update from _inside_ the install directory!\n");
+
+//** Install logfile
+define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log');
+define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../'));
+
+//** Check for ISPConfig 2.x versions
+if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) {
+ die('This software cannot be installed on a server wich runs ISPConfig 2.x.');
+}
+
+//** Get distribution identifier
+$dist = get_distname();
+
+include_once("/usr/local/ispconfig/server/lib/config.inc.php");
+$conf_old = $conf;
+unset($conf);
+
+if($dist['id'] == '') die('Linux distribution or version not recognized.');
+
+//** Include the distribution-specific installer class library and configuration
+if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once('dist/lib/'.$dist['baseid'].'.lib.php');
+include_once('dist/lib/'.$dist['id'].'.lib.php');
+include_once('dist/conf/'.$dist['id'].'.conf.php');
+
+//** Get hostname
+exec('hostname -f', $tmp_out);
+$conf['hostname'] = $tmp_out[0];
+unset($tmp_out);
+
+//** Set the mysql login information
+$conf["mysql"]["host"] = $conf_old["db_host"];
+$conf["mysql"]["database"] = $conf_old["db_database"];
+$conf['mysql']['charset'] = 'utf8';
+$conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
+$conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
+$conf['language'] = $conf_old['language'];
+if($conf['language'] == '{language}') $conf['language'] = 'en';
+
+if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
+if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"];
+if(isset($conf_old["dbmaster_user"])) $conf["mysql"]["master_ispconfig_user"] = $conf_old["dbmaster_user"];
+if(isset($conf_old["dbmaster_password"])) $conf["mysql"]["master_ispconfig_password"] = $conf_old["dbmaster_password"];
+
+//* Check if this is a master / slave setup
+if($conf["mysql"]["master_host"] != '' && $conf["mysql"]["host"] != $conf["mysql"]["master_host"]) {
+ $conf['mysql']['master_slave_setup'] = 'y';
+}
+
+// Resolve the IP address of the mysql hostname.
+if(!$conf['mysql']['ip'] = gethostbyname($conf['mysql']['host'])) die('Unable to resolve hostname'.$conf['mysql']['host']);
+
+$conf['server_id'] = intval($conf_old["server_id"]);
+$conf['ispconfig_log_priority'] = $conf_old["log_priority"];
+
+$inst = new installer();
+$inst->is_update = true;
+
+//** Detect the installed applications
+$inst->find_installed_apps();
+
+echo "This application will update ISPConfig 3 on your server.\n";
+
+//** Initialize the MySQL server connection
+include_once('lib/mysql.lib.php');
+
+//** Database update is a bit brute force and should be rebuild later ;)
+
+/*
+ * Try to read the DB-admin settings
+ */
+$clientdb_host = '';
+$clientdb_user = '';
+$clientdb_password = '';
+include_once("/usr/local/ispconfig/server/lib/mysql_clientdb.conf");
+$conf["mysql"]["admin_user"] = $clientdb_user;
+$conf["mysql"]["admin_password"] = $clientdb_password;
+$clientdb_host = '';
+$clientdb_user = '';
+$clientdb_password = '';
+
+//** Ask user for mysql admin_password if empty
+if( empty($conf["mysql"]["admin_password"]) ) {
+
+ $conf["mysql"]["admin_password"] = $inst->free_query('MySQL root password', $conf['mysql']['admin_password']);
+}
+
+/*
+ * Prepare the dump of the database
+ */
+prepareDBDump();
+
+//* initialize the database
+$inst->db = new db();
+
+//* initialize the master DB, if we have a multiserver setup
+if($conf['mysql']['master_slave_setup'] == 'y') {
+ //** Get MySQL root credentials
+ $finished = false;
+ do {
+ $tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host']);
+ $tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user']);
+ $tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password']);
+ $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database']);
+
+ //* Initialize the MySQL server connection
+ if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password)) {
+ $conf['mysql']['master_host'] = $tmp_mysql_server_host;
+ $conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
+ $conf['mysql']['master_admin_password'] = $tmp_mysql_server_admin_password;
+ $conf['mysql']['master_database'] = $tmp_mysql_server_database;
+ $finished = true;
+ } else {
+ swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
+ }
+ } while ($finished == false);
+ unset($finished);
+
+ // initialize the connection to the master database
+ $inst->dbmaster = new db();
+ if($inst->dbmaster->linkId) $inst->dbmaster->closeConn();
+ $inst->dbmaster->dbHost = $conf['mysql']["master_host"];
+ $inst->dbmaster->dbName = $conf['mysql']["master_database"];
+ $inst->dbmaster->dbUser = $conf['mysql']["master_admin_user"];
+ $inst->dbmaster->dbPass = $conf['mysql']["master_admin_password"];
+} else {
+ $inst->dbmaster = $inst->db;
+}
+
+
+/*
+ * dump the new Database and reconfigure the server.ini
+ */
+updateDbAndIni();
+
+/*
+ * Reconfigure the permisson if needed
+ * (if this is done at client side, only this client is updated.
+ * If this is done at server side, all clients are updated.
+ */
+//if($conf_old['dbmaster_user'] != '' or $conf_old['dbmaster_host'] != '') {
+ //** Update master database rights
+ $reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes','no'),'no');
+
+ if($reconfigure_master_database_rights_answer == 'yes') {
+ $inst->grant_master_database_rights();
+ }
+//}
+
+//** Shall the services be reconfigured during update
+$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes','no'),'yes');
+
+if($reconfigure_services_answer == 'yes') {
+
+ if($conf['services']['mail']) {
+ //** Configure postfix
+ swriteln('Configuring Postfix');
+ $inst->configure_postfix('dont-create-certs');
+
+ //** Configure mailman
+ swriteln('Configuring Mailman');
+ $inst->configure_mailman('update');
+
+ //* Configure Jailkit
+ swriteln('Configuring Jailkit');
+ $inst->configure_jailkit();
+
+ if($conf['dovecot']['installed'] == true) {
+ //* Configure dovecot
+ swriteln('Configuring Dovecot');
+ $inst->configure_dovecot();
+ } else {
+ //** Configure saslauthd
+ swriteln('Configuring SASL');
+ $inst->configure_saslauthd();
+
+ //** Configure PAM
+ swriteln('Configuring PAM');
+ $inst->configure_pam();
+
+ //* Configure courier
+ swriteln('Configuring Courier');
+ $inst->configure_courier();
+ }
+
+ //** Configure Spamasassin
+ swriteln('Configuring Spamassassin');
+ $inst->configure_spamassassin();
+
+ //** Configure Amavis
+ swriteln('Configuring Amavisd');
+ $inst->configure_amavis();
+
+ //** Configure Getmail
+ swriteln('Configuring Getmail');
+ $inst->configure_getmail();
+ }
+
+ if($conf['services']['web']) {
+ //** Configure Pureftpd
+ swriteln('Configuring Pureftpd');
+ $inst->configure_pureftpd();
+ }
+
+ if($conf['services']['dns']) {
+ //* Configure DNS
+ if($conf['powerdns']['installed'] == true) {
+ swriteln('Configuring PowerDNS');
+ $inst->configure_powerdns();
+ } elseif($conf['bind']['installed'] == true) {
+ swriteln('Configuring BIND');
+ $inst->configure_bind();
+ } else {
+ swriteln('Configuring MyDNS');
+ $inst->configure_mydns();
+ }
+ }
+
+ if($conf['services']['web']) {
+ //** Configure Apache
+ swriteln('Configuring Apache');
+ $inst->configure_apache();
+
+ //** Configure vlogger
+ swriteln('Configuring vlogger');
+ $inst->configure_vlogger();
+
+ //** Configure apps vhost
+ swriteln('Configuring Apps vhost');
+ $inst->configure_apps_vhost();
+ }
+
+
+ //* Configure DBServer
+ swriteln('Configuring Database');
+ $inst->configure_dbserver();
+
+
+ //if(@is_dir('/etc/Bastille')) {
+ //* Configure Firewall
+ swriteln('Configuring Firewall');
+ $inst->configure_firewall();
+ //}
+}
+
+//** Configure ISPConfig
+swriteln('Updating ISPConfig');
+
+
+//** Customise the port ISPConfig runs on
+$ispconfig_port_number = get_ispconfig_port_number();
+$conf['apache']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number);
+
+// $ispconfig_ssl_default = (is_ispconfig_ssl_enabled() == true)?'y':'n';
+if(strtolower($inst->simple_query('Create new ISPConfig SSL certificate',array('yes','no'),'no')) == 'yes') {
+ $inst->make_ispconfig_ssl_cert();
+}
+
+$inst->install_ispconfig();
+
+//** Configure Crontab
+$update_crontab_answer = $inst->simple_query('Reconfigure Crontab?', array('yes','no'),'yes');
+if($update_crontab_answer == 'yes') {
+ swriteln('Updating Crontab');
+ $inst->install_crontab();
+}
+
+//** Restart services:
+if($reconfigure_services_answer == 'yes') {
+ swriteln('Restarting services ...');
+ if($conf['mysql']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mysql']['init_script'])) system($conf['init_scripts'].'/'.$conf['mysql']['init_script'].' restart');
+ if($conf['services']['mail']) {
+ if($conf['postfix']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['postfix']['init_script'])) system($conf['init_scripts'].'/'.$conf['postfix']['init_script'].' restart');
+ if($conf['saslauthd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'])) system($conf['init_scripts'].'/'.$conf['saslauthd']['init_script'].' restart');
+ if($conf['amavis']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['amavis']['init_script'])) system($conf['init_scripts'].'/'.$conf['amavis']['init_script'].' restart');
+ if($conf['clamav']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['clamav']['init_script'])) system($conf['init_scripts'].'/'.$conf['clamav']['init_script'].' restart');
+ if($conf['courier']['courier-authdaemon'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-authdaemon'].' restart');
+ if($conf['courier']['courier-imap'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap'].' restart');
+ if($conf['courier']['courier-imap-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-imap-ssl'].' restart');
+ if($conf['courier']['courier-pop'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop'].' restart');
+ if($conf['courier']['courier-pop-ssl'] != '' && is_executable($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'])) system($conf['init_scripts'].'/'.$conf['courier']['courier-pop-ssl'].' restart');
+ if($conf['dovecot']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['dovecot']['init_script'])) system($conf['init_scripts'].'/'.$conf['dovecot']['init_script'].' restart');
+ if($conf['mailman']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mailman']['init_script'])) system($conf['init_scripts'].'/'.$conf['mailman']['init_script'].' restart');
+ }
+ if($conf['services']['web']) {
+ if($conf['apache']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['apache']['init_script'])) system($conf['init_scripts'].'/'.$conf['apache']['init_script'].' restart');
+ if($conf['pureftpd']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'])) system($conf['init_scripts'].'/'.$conf['pureftpd']['init_script'].' restart');
+ }
+ if($conf['services']['dns']) {
+ if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['mydns']['init_script'])) system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');
+ if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['powerdns']['init_script'])) system($conf['init_scripts'].'/'.$conf['powerdns']['init_script'].' restart &> /dev/null');
+ if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script'])) system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
+ }
+}
+
+echo "Update finished.\n";
+
+?>
diff --git a/interface/index.htm b/interface/index.htm
index 39606db..9e38208 100644
--- a/interface/index.htm
+++ b/interface/index.htm
@@ -1,8 +1,8 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <meta http-equiv="refresh" content="0;URL=web/index.php">
-</head>
-<body>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="refresh" content="0;URL=web/index.php">
+</head>
+<body>
+</body>
+</html>
diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php
index 20094cf..450f25a 100644
--- a/interface/lib/classes/auth.inc.php
+++ b/interface/lib/classes/auth.inc.php
@@ -1,129 +1,129 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class auth {
- var $client_limits = null;
-
- public function get_user_id()
- {
- return $_SESSION['s']['user']['userid'];
- }
-
- public function is_admin() {
- if($_SESSION['s']['user']['typ'] == 'admin') {
- return true;
- } else {
- return false;
- }
- }
-
- public function has_clients($userid) {
- global $app, $conf;
-
- $userid = intval($userid);
- $client = $app->db->queryOneRecord("SELECT client.limit_client FROM sys_user, client WHERE sys_user.userid = $userid AND sys_user.client_id = client.client_id");
- if($client['limit_client'] > 0) {
- return true;
- } else {
- return false;
- }
- }
-
- //** This function adds a given group id to a given user.
- public function add_group_to_user($userid,$groupid) {
- global $app;
-
- $userid = intval($userid);
- $groupid = intval($groupid);
-
- if($userid > 0 && $groupid > 0) {
- $user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE userid = $userid");
- $groups = explode(',',$user['groups']);
- if(!in_array($groupid,$groups)) $groups[] = $groupid;
- $groups_string = implode(',',$groups);
- $sql = "UPDATE sys_user SET groups = '$groups_string' WHERE userid = $userid";
- $app->db->query($sql);
- return true;
- } else {
- return false;
- }
- }
-
- //** This function returns given client limit as integer, -1 means no limit
- public function get_client_limit($userid, $limitname)
- {
- global $app;
-
- // simple query cache
- if($this->client_limits===null)
- $this->client_limits = $app->db->queryOneRecord("SELECT client.* FROM sys_user, client WHERE sys_user.userid = $userid AND sys_user.client_id = client.client_id");
-
- // isn't client -> no limit
- if(!$this->client_limits)
- return -1;
-
- if(isset($this->client_limits['limit_'.$limitname])) {
- return $this->client_limits['limit_'.$limitname];
- }
- }
-
- //** This function removes a given group id from a given user.
- public function remove_group_from_user($userid,$groupid) {
- global $app;
-
- $userid = intval($userid);
- $groupid = intval($groupid);
-
- if($userid > 0 && $groupid > 0) {
- $user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE userid = $userid");
- $groups = explode(',',$user['groups']);
- $key = array_search($groupid,$groups);
- unset($groups[$key]);
- $groups_string = implode(',',$groups);
- $sql = "UPDATE sys_user SET groups = '$groups_string' WHERE userid = $userid";
- $app->db->query($sql);
- return true;
- } else {
- return false;
- }
- }
-
- public function check_module_permissions($module) {
- // Check if the current user has the permissions to access this module
- if(!stristr($_SESSION["s"]["user"]["modules"],$module)) {
- // echo "LOGIN_REDIRECT:/index.php";
- header("Location: /index.php");
- exit;
- }
- }
-
-}
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class auth {
+ var $client_limits = null;
+
+ public function get_user_id()
+ {
+ return $_SESSION['s']['user']['userid'];
+ }
+
+ public function is_admin() {
+ if($_SESSION['s']['user']['typ'] == 'admin') {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public function has_clients($userid) {
+ global $app, $conf;
+
+ $userid = intval($userid);
+ $client = $app->db->queryOneRecord("SELECT client.limit_client FROM sys_user, client WHERE sys_user.userid = $userid AND sys_user.client_id = client.client_id");
+ if($client['limit_client'] > 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ //** This function adds a given group id to a given user.
+ public function add_group_to_user($userid,$groupid) {
+ global $app;
+
+ $userid = intval($userid);
+ $groupid = intval($groupid);
+
+ if($userid > 0 && $groupid > 0) {
+ $user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE userid = $userid");
+ $groups = explode(',',$user['groups']);
+ if(!in_array($groupid,$groups)) $groups[] = $groupid;
+ $groups_string = implode(',',$groups);
+ $sql = "UPDATE sys_user SET groups = '$groups_string' WHERE userid = $userid";
+ $app->db->query($sql);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ //** This function returns given client limit as integer, -1 means no limit
+ public function get_client_limit($userid, $limitname)
+ {
+ global $app;
+
+ // simple query cache
+ if($this->client_limits===null)
+ $this->client_limits = $app->db->queryOneRecord("SELECT client.* FROM sys_user, client WHERE sys_user.userid = $userid AND sys_user.client_id = client.client_id");
+
+ // isn't client -> no limit
+ if(!$this->client_limits)
+ return -1;
+
+ if(isset($this->client_limits['limit_'.$limitname])) {
+ return $this->client_limits['limit_'.$limitname];
+ }
+ }
+
+ //** This function removes a given group id from a given user.
+ public function remove_group_from_user($userid,$groupid) {
+ global $app;
+
+ $userid = intval($userid);
+ $groupid = intval($groupid);
+
+ if($userid > 0 && $groupid > 0) {
+ $user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE userid = $userid");
+ $groups = explode(',',$user['groups']);
+ $key = array_search($groupid,$groups);
+ unset($groups[$key]);
+ $groups_string = implode(',',$groups);
+ $sql = "UPDATE sys_user SET groups = '$groups_string' WHERE userid = $userid";
+ $app->db->query($sql);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public function check_module_permissions($module) {
+ // Check if the current user has the permissions to access this module
+ if(!stristr($_SESSION["s"]["user"]["modules"],$module)) {
+ // echo "LOGIN_REDIRECT:/index.php";
+ header("Location: /index.php");
+ exit;
+ }
+ }
+
+}
+
?>
\ No newline at end of file
diff --git a/interface/lib/classes/form.inc.php b/interface/lib/classes/form.inc.php
index f0e8de6..99f6cfb 100644
--- a/interface/lib/classes/form.inc.php
+++ b/interface/lib/classes/form.inc.php
@@ -1,475 +1,475 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
-* Formularbehandlung
-*
-* Funktionen zur Umwandlung von Formulardaten
-* sowie zum vorbereiten von HTML und SQL
-* Ausgaben
-*
-* Tabellendefinition
-*
-* Datentypen:
-* - INTEGER (Wandelt Ausdr�cke in Int um)
-* - DOUBLE
-* - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
-* - VARCHAR (kein weiterer Format Check)
-* - DATE (Datumsformat, Timestamp Umwandlung)
-*
-* Formtype:
-* - TEXT (normales Textfeld)
-* - PASSWORD (Feldinhalt wird nicht angezeigt)
-* - SELECT (Gibt Werte als option Feld aus)
-* - MULTIPLE (Select-Feld mit nehreren Werten)
-*
-* VALUE:
-* - Wert oder Array
-*
-* SEPARATOR
-* - Trennzeichen f�r multiple Felder
-*
-* Hinweis:
-* Das ID-Feld ist nicht bei den Table Values einzuf�gen.
-*
-* @package form
-* @author Till Brehm
-* @version 1.1
-*/
-
-class form {
-
- /**
- * Definition der Tabelle (array)
- * @var tableDef
- */
- var $tableDef;
-
- /**
- * Private
- * @var action
- */
- var $action;
-
- /**
- * Tabellenname (String)
- * @var table_name
- */
- var $table_name;
-
- /**
- * Debug Variable
- * @var debug
- */
- var $debug = 0;
-
- /**
- * name des primary Field der Tabelle (string)
- * @var table_index
- */
- var $table_index;
-
- /**
- * enth�lt die Fehlermeldung bei �berpr�fung
- * der Variablen mit Regex
- * @var errorMessage
- */
- var $errorMessage;
-
- var $dateformat = "d.m.Y";
- var $formDef;
-
- /**
- * Laden der Tabellendefinition
- *
- * @param file: Pfad zur Tabellendefinition
- * @return true
- */
- function loadTableDef($file) {
- global $app,$conf;
-
- include_once($file);
- $this->tableDef = $table;
- $this->table_name = $table_name;
- $this->table_index = $table_index;
- return true;
- }
-
- function loadFormDef($file) {
- global $app,$conf;
-
- include_once($file);
- $this->formDef = $form;
- return true;
- }
-
-
- /**
- * Konvertiert die Daten des �bergebenen assoziativen
- * Arrays in "menschenlesbare" Form.
- * Datentyp Konvertierung, z.B. f�r Ausgabe in Listen.
- *
- * @param record
- * @return record
- */
- function decode($record) {
- if(is_array($record)) {
- foreach($record as $key => $val) {
- switch ($this->tableDef[$key]['datatype']) {
- case 'VARCHAR':
- $new_record[$key] = stripslashes($val);
- break;
-
- case 'DATE':
- if($val > 0) {
- $new_record[$key] = date($this->dateformat,$val);
- }
- break;
-
- case 'INTEGER':
- $new_record[$key] = intval($val);
- break;
-
- case 'DOUBLE':
- $new_record[$key] = $val;
- break;
-
- case 'CURRENCY':
- $new_record[$key] = number_format($val, 2, ',', '');
- break;
-
- default:
- $new_record[$key] = stripslashes($val);
- }
- }
-
- }
- return $new_record;
- }
-
- /**
- * Record f�r Ausgabe in Formularen vorbereiten.
- *
- * @param record = Datensatz als Array
- * @param action = NEW oder EDIT
- * @return record
- */
- function getHTML($record,$action = 'NEW') {
-
- global $app;
-
- if(!is_array($this->tableDef)) $app->error("Keine Tabellendefinition vorhanden.");
-
- $new_record = array();
- if($action == 'EDIT') {
- $record = $this->decode($record);
- if(is_array($record)) {
- foreach($record as $key => $val) {
- switch ($this->tableDef[$key]['formtype']) {
- case 'SELECT':
- if(is_array($this->tableDef[$key]['value'])) {
- $out = '';
- foreach($this->tableDef[$key]['value'] as $k => $v) {
- $selected = ($k == $val)?' SELECTED':'';
- $out .= "<option value='$k'$selected>$v</option>\r\n";
- }
- }
- $new_record[$key] = $out;
- break;
- case 'MULTIPLE':
- if(is_array($this->tableDef[$key]['value'])) {
-
- // aufsplitten ergebnisse
- $vals = explode($this->tableDef[$key]['separator'],$val);
-
- // HTML schreiben
- $out = '';
- foreach($this->tableDef[$key]['value'] as $k => $v) {
-
- $selected = '';
- foreach($vals as $tvl) {
- if(trim($tvl) == trim($k)) $selected = ' SELECTED';
- }
-
- $out .= "<option value='$k'$selected>$v</option>\r\n";
- }
- }
- $new_record[$key] = $out;
- break;
-
- case 'PASSWORD':
- $new_record[$key] = '';
- break;
-
- default:
- $new_record[$key] = htmlspecialchars($val);
- }
- }
- }
- } else {
- foreach($this->tableDef as $key => $val) {
- switch ($this->tableDef[$key]['formtype']) {
- case 'SELECT':
- if(is_array($this->tableDef[$key]['value'])) {
- $out = '';
- foreach($this->tableDef[$key]['value'] as $k => $v) {
- $selected = ($k == $val)?' SELECTED':'';
- $out .= "<option value='$k'$selected>$v</option>\r\n";
- }
- }
- $new_record[$key] = $out;
- break;
- case 'MULTIPLE':
- if(is_array($this->tableDef[$key]['value'])) {
-
- // aufsplitten ergebnisse
- $vals = explode($this->tableDef[$key]['separator'],$val);
-
- // HTML schreiben
- $out = '';
- foreach($this->tableDef[$key]['value'] as $k => $v) {
-
- $out .= "<option value='$k'>$v</option>\r\n";
- }
- }
- $new_record[$key] = $out;
- break;
-
- case 'PASSWORD':
- $new_record[$key] = '';
- break;
-
- default:
- $new_record[$key] = htmlspecialchars($this->tableDef[$key]['value']);
- }
- }
-
- }
-
- if($this->debug == 1) $this->dbg($new_record);
-
- return $new_record;
- }
-
- /**
- * Record in "maschinen lesbares" Format �berf�hren
- * und Werte gegen regul�re Ausdr�cke pr�fen.
- *
- * @param record = Datensatz als Array
- * @return record
- */
- function encode($record) {
-
- $this->errorMessage = '';
-
- if(is_array($record)) {
- foreach($record as $key => $val) {
- switch ($this->tableDef[$key]['datatype']) {
- case 'VARCHAR':
- if(!is_array($val)) {
- $new_record[$key] = mysql_real_escape_string($val);
- } else {
- $new_record[$key] = implode($this->tableDef[$key]['separator'],$val);
- }
- break;
- case 'DATE':
- if($val > 0) {
- list($tag,$monat,$jahr) = explode('.',$val);
- $new_record[$key] = mktime(0,0,0,$monat,$tag,$jahr);
- }
- break;
- case 'INTEGER':
- $new_record[$key] = intval($val);
- break;
- case 'DOUBLE':
- $new_record[$key] = mysql_real_escape_string($val);
- break;
- case 'CURRENCY':
- $new_record[$key] = str_replace(",",".",$val);
- break;
- }
-
- if($this->tableDef[$key]['regex'] != '') {
- // Enable that "." matches also newlines
- $this->tableDef[$key]['regex'] .= 's';
- if(!preg_match($this->tableDef[$key]['regex'], $val)) {
- $this->errorMessage .= $this->tableDef[$key]['errmsg']."<br>\r\n";
- }
- }
- }
-
- }
- return $new_record;
- }
-
- /**
- * SQL Statement f�r Record erzeugen.
- *
- * @param record = Datensatz als Array
- * @param action = INSERT oder UPDATE
- * @param primary_id
- * @return record
- */
- function getSQL($record, $action = 'INSERT', $primary_id = 0, $sql_ext_where = '') {
-
- global $app;
-
- $record = $this->encode($record);
- $sql_insert_key = '';
- $sql_insert_val = '';
- $sql_update = '';
-
- if(!is_array($this->tableDef)) $app->error("Keine Tabellendefinition vorhanden.");
-
- // gehe durch alle Felder des Records
- if(is_array($record)) {
- foreach($record as $key => $val) {
- // Wenn es kein leeres Passwortfeld ist
- if (!($this->tableDef[$key]['formtype'] == 'PASSWORD' and $val == '')) {
- // gehe durch alle Felder der TableDef
- foreach($this->tableDef as $tk => $tv) {
- // Wenn Feld in TableDef enthalten ist
- if($tk == $key) {
- // Erzeuge Insert oder Update Quelltext
- if($action == "INSERT") {
-
- if($this->tableDef[$key]['formtype'] == 'PASSWORD') {
- $sql_insert_key .= "`$key`, ";
- $sql_insert_val .= "md5('$val'), ";
- //} elseif($this->tableDef[$key]['formtype'] == 'MULTIPLE') {
- // $val = implode($this->tableDef[$key]['separator'],$val);
- // $sql_insert_key .= "`$key`, ";
- // $sql_insert_val .= "'$val', ";
- } else {
- $sql_insert_key .= "`$key`, ";
- $sql_insert_val .= "'$val', ";
- }
-
- } else {
-
- if($this->tableDef[$key]['formtype'] == 'PASSWORD') {
- $sql_update .= "`$key` = md5('$val'), ";
- //} elseif($this->tableDef[$key]['formtype'] == 'MULTIPLE') {
- // $val = implode($this->tableDef[$key]['separator'],$val);
- // $sql_update .= "`$key` = '$val', ";
- } else {
- $sql_update .= "`$key` = '$val', ";
- }
-
- }
- }
- }
- }
- }
- }
-
- // F�ge Backticks nur bei unvollst�ndigen Tabellennamen ein
- if(stristr($this->table_name,'.')) {
- $escape = '';
- } else {
- $escape = '`';
- }
-
-
- if($action == "INSERT") {
- $sql_insert_key = substr($sql_insert_key,0,-2);
- $sql_insert_val = substr($sql_insert_val,0,-2);
- $sql = "INSERT INTO ".$escape.$this->table_name.$escape." ($sql_insert_key) VALUES ($sql_insert_val)";
- } else {
- if($primary_id != 0) {
- $sql_update = substr($sql_update,0,-2);
- $sql = "UPDATE ".$escape.$this->table_name.$escape." SET ".$sql_update." WHERE ".$this->table_index ." = ".$primary_id;
- if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
- } else {
- $app->error("Primary ID fehlt!");
- }
- }
-
- return $sql;
- }
-
- /**
- * Debugging arrays.
- *
- * @param array_data
- */
- function dbg($array_data) {
-
- echo "<pre>";
- print_r($array_data);
- echo "</pre>";
-
- }
-
-
- function showForm() {
- global $app,$conf;
-
- if(!is_array($this->formDef)) die("Form Definition wurde nicht geladen.");
-
- if($this->errorMessage == '') {
- // wenn kein Fehler vorliegt
- if($_REQUEST["next_tab"] != '') {
- // wenn n�chster Tab bekannt
- $active_tab = $_REQUEST["next_tab"];
- } else {
- // ansonsten ersten tab nehmen
- $active_tab = $this->formDef["tabs"][0]["name"];
- }
- } else {
- // bei Fehlern den gleichen Tab nochmal anzeigen
- $active_tab = $_SESSION["s"]["form"]["tab"];
- }
-
- // definiere Tabs
- foreach( $this->formDef["tabs"] as $tab) {
-
- if($tab["name"] == $active_tab) {
- $app->tpl->setInclude('content_tpl',$tab["template"]);
- $tab["active"] = 1;
- $_SESSION["s"]["form"]["tab"] = $tab["name"];
- } else {
- $tab["active"] = 0;
- }
-
- $frmTab[] = $tab;
- }
-
- // setze Loop
- $app->tpl->setLoop("formTab", $frmTab);
-
- // Formular action setzen
- $app->tpl->setVar('form_action',$this->formDef["action"]);
- }
-
-
-}
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/**
+* Formularbehandlung
+*
+* Funktionen zur Umwandlung von Formulardaten
+* sowie zum vorbereiten von HTML und SQL
+* Ausgaben
+*
+* Tabellendefinition
+*
+* Datentypen:
+* - INTEGER (Wandelt Ausdr�cke in Int um)
+* - DOUBLE
+* - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
+* - VARCHAR (kein weiterer Format Check)
+* - DATE (Datumsformat, Timestamp Umwandlung)
+*
+* Formtype:
+* - TEXT (normales Textfeld)
+* - PASSWORD (Feldinhalt wird nicht angezeigt)
+* - SELECT (Gibt Werte als option Feld aus)
+* - MULTIPLE (Select-Feld mit nehreren Werten)
+*
+* VALUE:
+* - Wert oder Array
+*
+* SEPARATOR
+* - Trennzeichen f�r multiple Felder
+*
+* Hinweis:
+* Das ID-Feld ist nicht bei den Table Values einzuf�gen.
+*
+* @package form
+* @author Till Brehm
+* @version 1.1
+*/
+
+class form {
+
+ /**
+ * Definition der Tabelle (array)
+ * @var tableDef
+ */
+ var $tableDef;
+
+ /**
+ * Private
+ * @var action
+ */
+ var $action;
+
+ /**
+ * Tabellenname (String)
+ * @var table_name
+ */
+ var $table_name;
+
+ /**
+ * Debug Variable
+ * @var debug
+ */
+ var $debug = 0;
+
+ /**
+ * name des primary Field der Tabelle (string)
+ * @var table_index
+ */
+ var $table_index;
+
+ /**
+ * enth�lt die Fehlermeldung bei �berpr�fung
+ * der Variablen mit Regex
+ * @var errorMessage
+ */
+ var $errorMessage;
+
+ var $dateformat = "d.m.Y";
+ var $formDef;
+
+ /**
+ * Laden der Tabellendefinition
+ *
+ * @param file: Pfad zur Tabellendefinition
+ * @return true
+ */
+ function loadTableDef($file) {
+ global $app,$conf;
+
+ include_once($file);
+ $this->tableDef = $table;
+ $this->table_name = $table_name;
+ $this->table_index = $table_index;
+ return true;
+ }
+
+ function loadFormDef($file) {
+ global $app,$conf;
+
+ include_once($file);
+ $this->formDef = $form;
+ return true;
+ }
+
+
+ /**
+ * Konvertiert die Daten des �bergebenen assoziativen
+ * Arrays in "menschenlesbare" Form.
+ * Datentyp Konvertierung, z.B. f�r Ausgabe in Listen.
+ *
+ * @param record
+ * @return record
+ */
+ function decode($record) {
+ if(is_array($record)) {
+ foreach($record as $key => $val) {
+ switch ($this->tableDef[$key]['datatype']) {
+ case 'VARCHAR':
+ $new_record[$key] = stripslashes($val);
+ break;
+
+ case 'DATE':
+ if($val > 0) {
+ $new_record[$key] = date($this->dateformat,$val);
+ }
+ break;
+
+ case 'INTEGER':
+ $new_record[$key] = intval($val);
+ break;
+
+ case 'DOUBLE':
+ $new_record[$key] = $val;
+ break;
+
+ case 'CURRENCY':
+ $new_record[$key] = number_format($val, 2, ',', '');
+ break;
+
+ default:
+ $new_record[$key] = stripslashes($val);
+ }
+ }
+
+ }
+ return $new_record;
+ }
+
+ /**
+ * Record f�r Ausgabe in Formularen vorbereiten.
+ *
+ * @param record = Datensatz als Array
+ * @param action = NEW oder EDIT
+ * @return record
+ */
+ function getHTML($record,$action = 'NEW') {
+
+ global $app;
+
+ if(!is_array($this->tableDef)) $app->error("Keine Tabellendefinition vorhanden.");
+
+ $new_record = array();
+ if($action == 'EDIT') {
+ $record = $this->decode($record);
+ if(is_array($record)) {
+ foreach($record as $key => $val) {
+ switch ($this->tableDef[$key]['formtype']) {
+ case 'SELECT':
+ if(is_array($this->tableDef[$key]['value'])) {
+ $out = '';
+ foreach($this->tableDef[$key]['value'] as $k => $v) {
+ $selected = ($k == $val)?' SELECTED':'';
+ $out .= "<option value='$k'$selected>$v</option>\r\n";
+ }
+ }
+ $new_record[$key] = $out;
+ break;
+ case 'MULTIPLE':
+ if(is_array($this->tableDef[$key]['value'])) {
+
+ // aufsplitten ergebnisse
+ $vals = explode($this->tableDef[$key]['separator'],$val);
+
+ // HTML schreiben
+ $out = '';
+ foreach($this->tableDef[$key]['value'] as $k => $v) {
+
+ $selected = '';
+ foreach($vals as $tvl) {
+ if(trim($tvl) == trim($k)) $selected = ' SELECTED';
+ }
+
+ $out .= "<option value='$k'$selected>$v</option>\r\n";
+ }
+ }
+ $new_record[$key] = $out;
+ break;
+
+ case 'PASSWORD':
+ $new_record[$key] = '';
+ break;
+
+ default:
+ $new_record[$key] = htmlspecialchars($val);
+ }
+ }
+ }
+ } else {
+ foreach($this->tableDef as $key => $val) {
+ switch ($this->tableDef[$key]['formtype']) {
+ case 'SELECT':
+ if(is_array($this->tableDef[$key]['value'])) {
+ $out = '';
+ foreach($this->tableDef[$key]['value'] as $k => $v) {
+ $selected = ($k == $val)?' SELECTED':'';
+ $out .= "<option value='$k'$selected>$v</option>\r\n";
+ }
+ }
+ $new_record[$key] = $out;
+ break;
+ case 'MULTIPLE':
+ if(is_array($this->tableDef[$key]['value'])) {
+
+ // aufsplitten ergebnisse
+ $vals = explode($this->tableDef[$key]['separator'],$val);
+
+ // HTML schreiben
+ $out = '';
+ foreach($this->tableDef[$key]['value'] as $k => $v) {
+
+ $out .= "<option value='$k'>$v</option>\r\n";
+ }
+ }
+ $new_record[$key] = $out;
+ break;
+
+ case 'PASSWORD':
+ $new_record[$key] = '';
+ break;
+
+ default:
+ $new_record[$key] = htmlspecialchars($this->tableDef[$key]['value']);
+ }
+ }
+
+ }
+
+ if($this->debug == 1) $this->dbg($new_record);
+
+ return $new_record;
+ }
+
+ /**
+ * Record in "maschinen lesbares" Format �berf�hren
+ * und Werte gegen regul�re Ausdr�cke pr�fen.
+ *
+ * @param record = Datensatz als Array
+ * @return record
+ */
+ function encode($record) {
+
+ $this->errorMessage = '';
+
+ if(is_array($record)) {
+ foreach($record as $key => $val) {
+ switch ($this->tableDef[$key]['datatype']) {
+ case 'VARCHAR':
+ if(!is_array($val)) {
+ $new_record[$key] = mysql_real_escape_string($val);
+ } else {
+ $new_record[$key] = implode($this->tableDef[$key]['separator'],$val);
+ }
+ break;
+ case 'DATE':
+ if($val > 0) {
+ list($tag,$monat,$jahr) = explode('.',$val);
+ $new_record[$key] = mktime(0,0,0,$monat,$tag,$jahr);
+ }
+ break;
+ case 'INTEGER':
+ $new_record[$key] = intval($val);
+ break;
+ case 'DOUBLE':
+ $new_record[$key] = mysql_real_escape_string($val);
+ break;
+ case 'CURRENCY':
+ $new_record[$key] = str_replace(",",".",$val);
+ break;
+ }
+
+ if($this->tableDef[$key]['regex'] != '') {
+ // Enable that "." matches also newlines
+ $this->tableDef[$key]['regex'] .= 's';
+ if(!preg_match($this->tableDef[$key]['regex'], $val)) {
+ $this->errorMessage .= $this->tableDef[$key]['errmsg']."<br>\r\n";
+ }
+ }
+ }
+
+ }
+ return $new_record;
+ }
+
+ /**
+ * SQL Statement f�r Record erzeugen.
+ *
+ * @param record = Datensatz als Array
+ * @param action = INSERT oder UPDATE
+ * @param primary_id
+ * @return record
+ */
+ function getSQL($record, $action = 'INSERT', $primary_id = 0, $sql_ext_where = '') {
+
+ global $app;
+
+ $record = $this->encode($record);
+ $sql_insert_key = '';
+ $sql_insert_val = '';
+ $sql_update = '';
+
+ if(!is_array($this->tableDef)) $app->error("Keine Tabellendefinition vorhanden.");
+
+ // gehe durch alle Felder des Records
+ if(is_array($record)) {
+ foreach($record as $key => $val) {
+ // Wenn es kein leeres Passwortfeld ist
+ if (!($this->tableDef[$key]['formtype'] == 'PASSWORD' and $val == '')) {
+ // gehe durch alle Felder der TableDef
+ foreach($this->tableDef as $tk => $tv) {
+ // Wenn Feld in TableDef enthalten ist
+ if($tk == $key) {
+ // Erzeuge Insert oder Update Quelltext
+ if($action == "INSERT") {
+
+ if($this->tableDef[$key]['formtype'] == 'PASSWORD') {
+ $sql_insert_key .= "`$key`, ";
+ $sql_insert_val .= "md5('$val'), ";
+ //} elseif($this->tableDef[$key]['formtype'] == 'MULTIPLE') {
+ // $val = implode($this->tableDef[$key]['separator'],$val);
+ // $sql_insert_key .= "`$key`, ";
+ // $sql_insert_val .= "'$val', ";
+ } else {
+ $sql_insert_key .= "`$key`, ";
+ $sql_insert_val .= "'$val', ";
+ }
+
+ } else {
+
+ if($this->tableDef[$key]['formtype'] == 'PASSWORD') {
+ $sql_update .= "`$key` = md5('$val'), ";
+ //} elseif($this->tableDef[$key]['formtype'] == 'MULTIPLE') {
+ // $val = implode($this->tableDef[$key]['separator'],$val);
+ // $sql_update .= "`$key` = '$val', ";
+ } else {
+ $sql_update .= "`$key` = '$val', ";
+ }
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // F�ge Backticks nur bei unvollst�ndigen Tabellennamen ein
+ if(stristr($this->table_name,'.')) {
+ $escape = '';
+ } else {
+ $escape = '`';
+ }
+
+
+ if($action == "INSERT") {
+ $sql_insert_key = substr($sql_insert_key,0,-2);
+ $sql_insert_val = substr($sql_insert_val,0,-2);
+ $sql = "INSERT INTO ".$escape.$this->table_name.$escape." ($sql_insert_key) VALUES ($sql_insert_val)";
+ } else {
+ if($primary_id != 0) {
+ $sql_update = substr($sql_update,0,-2);
+ $sql = "UPDATE ".$escape.$this->table_name.$escape." SET ".$sql_update." WHERE ".$this->table_index ." = ".$primary_id;
+ if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
+ } else {
+ $app->error("Primary ID fehlt!");
+ }
+ }
+
+ return $sql;
+ }
+
+ /**
+ * Debugging arrays.
+ *
+ * @param array_data
+ */
+ function dbg($array_data) {
+
+ echo "<pre>";
+ print_r($array_data);
+ echo "</pre>";
+
+ }
+
+
+ function showForm() {
+ global $app,$conf;
+
+ if(!is_array($this->formDef)) die("Form Definition wurde nicht geladen.");
+
+ if($this->errorMessage == '') {
+ // wenn kein Fehler vorliegt
+ if($_REQUEST["next_tab"] != '') {
+ // wenn n�chster Tab bekannt
+ $active_tab = $_REQUEST["next_tab"];
+ } else {
+ // ansonsten ersten tab nehmen
+ $active_tab = $this->formDef["tabs"][0]["name"];
+ }
+ } else {
+ // bei Fehlern den gleichen Tab nochmal anzeigen
+ $active_tab = $_SESSION["s"]["form"]["tab"];
+ }
+
+ // definiere Tabs
+ foreach( $this->formDef["tabs"] as $tab) {
+
+ if($tab["name"] == $active_tab) {
+ $app->tpl->setInclude('content_tpl',$tab["template"]);
+ $tab["active"] = 1;
+ $_SESSION["s"]["form"]["tab"] = $tab["name"];
+ } else {
+ $tab["active"] = 0;
+ }
+
+ $frmTab[] = $tab;
+ }
+
+ // setze Loop
+ $app->tpl->setLoop("formTab", $frmTab);
+
+ // Formular action setzen
+ $app->tpl->setVar('form_action',$this->formDef["action"]);
+ }
+
+
+}
+
?>
\ No newline at end of file
diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php
index 7de83e9..1839676 100644
--- a/interface/lib/classes/functions.inc.php
+++ b/interface/lib/classes/functions.inc.php
@@ -1,111 +1,111 @@
-<?php
-
-/*
-Copyright (c) 2010, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-//* The purpose of this library is to provide some general functions.
-//* This class is loaded automatically by the ispconfig framework.
-
-class functions {
-
-
- public function mail($to, $subject, $text, $from, $filepath = '', $filetype = 'application/pdf', $filename = '') {
- global $app,$conf;
-
- if($conf['demo_mode'] == true) $app->error("Mail sending disabled in demo mode.");
-
- if($filepath != '') {
- if(!file_exists($filepath)) $app->error("Mail attachement does not exist ".$filepath);
-
- $content = file_get_contents($filepath);
- $content = chunk_split(base64_encode($content));
- $uid = strtoupper(md5(uniqid(time())));
-
- if($filename == '') {
- $path_parts = pathinfo($filepath);
- $filename = $path_parts["basename"];
- unset($path_parts);
- }
-
- $header = "From: $from\nReply-To: $from\n";
- $header .= "MIME-Version: 1.0\n";
- $header .= "Content-Type: multipart/mixed; boundary=$uid\n";
-
- $header .= "--$uid\n";
- $header .= "Content-Type: text/plain\n";
- $header .= "Content-Transfer-Encoding: 8bit\n\n";
- $header .= "$text\n";
-
- $header .= "--$uid\n";
- $header .= "Content-Type: $filetype; name=\"$filename\"\n";
-
- $header .= "Content-Transfer-Encoding: base64\n";
- $header .= "Content-Disposition: attachment; filename=\"$filename\"\n\n";
- $header .= "$content\n";
-
- $header .= "--$uid--";
-
- mail($to, $subject, "", $header);
- } else {
- $header = "From: $from\nReply-To: $from\n";
- mail($to, $subject, $text, $header);
- }
-
- return true;
- }
-
- public function array_merge($array1,$array2) {
- $out = $array1;
- foreach($array2 as $key => $val) {
- $out[$key] = $val;
- }
- return $out;
- }
-
- public function currency_format($number) {
- global $app;
- $number_format_decimals = (int)$app->lng('number_format_decimals');
- $number_format_dec_point = $app->lng('number_format_dec_point');
- $number_format_thousands_sep = $app->lng('number_format_thousands_sep');
- if($number_format_thousands_sep == 'number_format_thousands_sep') $number_format_thousands_sep = '';
- return number_format((double)$number, $number_format_decimals, $number_format_dec_point, $number_format_thousands_sep);
- }
-
- public function get_ispconfig_url() {
- $url = (stristr($_SERVER['SERVER_PROTOCOL'],'HTTPS'))?'https':'http';
- $url .= '://'.$_SERVER['SERVER_NAME'];
- if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
- $url .= ':'.$_SERVER['SERVER_PORT'];
- }
- return $url;
- }
-
-
-}
-
+<?php
+
+/*
+Copyright (c) 2010, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+//* The purpose of this library is to provide some general functions.
+//* This class is loaded automatically by the ispconfig framework.
+
+class functions {
+
+
+ public function mail($to, $subject, $text, $from, $filepath = '', $filetype = 'application/pdf', $filename = '') {
+ global $app,$conf;
+
+ if($conf['demo_mode'] == true) $app->error("Mail sending disabled in demo mode.");
+
+ if($filepath != '') {
+ if(!file_exists($filepath)) $app->error("Mail attachement does not exist ".$filepath);
+
+ $content = file_get_contents($filepath);
+ $content = chunk_split(base64_encode($content));
+ $uid = strtoupper(md5(uniqid(time())));
+
+ if($filename == '') {
+ $path_parts = pathinfo($filepath);
+ $filename = $path_parts["basename"];
+ unset($path_parts);
+ }
+
+ $header = "From: $from\nReply-To: $from\n";
+ $header .= "MIME-Version: 1.0\n";
+ $header .= "Content-Type: multipart/mixed; boundary=$uid\n";
+
+ $header .= "--$uid\n";
+ $header .= "Content-Type: text/plain\n";
+ $header .= "Content-Transfer-Encoding: 8bit\n\n";
+ $header .= "$text\n";
+
+ $header .= "--$uid\n";
+ $header .= "Content-Type: $filetype; name=\"$filename\"\n";
+
+ $header .= "Content-Transfer-Encoding: base64\n";
+ $header .= "Content-Disposition: attachment; filename=\"$filename\"\n\n";
+ $header .= "$content\n";
+
+ $header .= "--$uid--";
+
+ mail($to, $subject, "", $header);
+ } else {
+ $header = "From: $from\nReply-To: $from\n";
+ mail($to, $subject, $text, $header);
+ }
+
+ return true;
+ }
+
+ public function array_merge($array1,$array2) {
+ $out = $array1;
+ foreach($array2 as $key => $val) {
+ $out[$key] = $val;
+ }
+ return $out;
+ }
+
+ public function currency_format($number) {
+ global $app;
+ $number_format_decimals = (int)$app->lng('number_format_decimals');
+ $number_format_dec_point = $app->lng('number_format_dec_point');
+ $number_format_thousands_sep = $app->lng('number_format_thousands_sep');
+ if($number_format_thousands_sep == 'number_format_thousands_sep') $number_format_thousands_sep = '';
+ return number_format((double)$number, $number_format_decimals, $number_format_dec_point, $number_format_thousands_sep);
+ }
+
+ public function get_ispconfig_url() {
+ $url = (stristr($_SERVER['SERVER_PROTOCOL'],'HTTPS'))?'https':'http';
+ $url .= '://'.$_SERVER['SERVER_NAME'];
+ if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
+ $url .= ':'.$_SERVER['SERVER_PORT'];
+ }
+ return $url;
+ }
+
+
+}
+
?>
\ No newline at end of file
diff --git a/interface/lib/classes/plugin_base.inc.php b/interface/lib/classes/plugin_base.inc.php
index cde853f..5b69e03 100644
--- a/interface/lib/classes/plugin_base.inc.php
+++ b/interface/lib/classes/plugin_base.inc.php
@@ -1,64 +1,64 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class plugin_base {
-
- var $plugin_name;
- var $options;
- var $form;
-
- function onLoad() {
-
- }
-
- function onShow() {
-
- }
-
- function onInsert() {
-
- }
-
- function onUpdate() {
-
- }
-
- function onDelete() {
-
- }
-
- function setOptions($plugin_name, $options) {
- $this->options = $options;
- $this->plugin_name = $plugin_name;
- }
-
-}
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class plugin_base {
+
+ var $plugin_name;
+ var $options;
+ var $form;
+
+ function onLoad() {
+
+ }
+
+ function onShow() {
+
+ }
+
+ function onInsert() {
+
+ }
+
+ function onUpdate() {
+
+ }
+
+ function onDelete() {
+
+ }
+
+ function setOptions($plugin_name, $options) {
+ $this->options = $options;
+ $this->plugin_name = $plugin_name;
+ }
+
+}
+
?>
\ No newline at end of file
diff --git a/interface/lib/classes/plugin_dbhistory.inc.php b/interface/lib/classes/plugin_dbhistory.inc.php
index 876dcaf..ebd9e74 100644
--- a/interface/lib/classes/plugin_dbhistory.inc.php
+++ b/interface/lib/classes/plugin_dbhistory.inc.php
@@ -1,69 +1,69 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class plugin_dbhistory extends plugin_base {
-
- var $module;
- var $form;
- var $tab;
- var $record_id;
- var $formdef;
- var $options;
-
- function onShow() {
-
- global $app, $conf;
-
- $content = '';
-
- $db_table = $app->tform->formDef["db_table"];
- $db_table_idx = $app->tform->formDef["db_table_idx"];
- $primary_id = $this->form->id;
- if($_SESSION["s"]["user"]["typ"] == 'admin') {
- $sql = "SELECT action, tstamp, user, data FROM sys_datalog WHERE dbtable = '".$db_table."' AND dbidx = '".$db_table_idx.":".$primary_id."'";
- } else {
- $sql = "SELECT action, tstamp, user, data FROM sys_datalog WHERE user = '".$_SESSION["s"]["user"]["username"]."' dbtable = '".$db_table."' AND dbidx = '".$db_table_idx.":".$primary_id."'";
- }
-
- $records = $app->db->queryAllRecords($sql);
- if(is_array($records)) {
- $content .= '<table>';
- foreach($records as $rec) {
- $content .= "<tr><td>".date("d.m.Y",$rec["tstamp"])."</td><td>".$rec["user"]."</td></tr>";
- }
- $content .= '</table>';
- }
-
- return $content;
-
- }
-}
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class plugin_dbhistory extends plugin_base {
+
+ var $module;
+ var $form;
+ var $tab;
+ var $record_id;
+ var $formdef;
+ var $options;
+
+ function onShow() {
+
+ global $app, $conf;
+
+ $content = '';
+
+ $db_table = $app->tform->formDef["db_table"];
+ $db_table_idx = $app->tform->formDef["db_table_idx"];
+ $primary_id = $this->form->id;
+ if($_SESSION["s"]["user"]["typ"] == 'admin') {
+ $sql = "SELECT action, tstamp, user, data FROM sys_datalog WHERE dbtable = '".$db_table."' AND dbidx = '".$db_table_idx.":".$primary_id."'";
+ } else {
+ $sql = "SELECT action, tstamp, user, data FROM sys_datalog WHERE user = '".$_SESSION["s"]["user"]["username"]."' dbtable = '".$db_table."' AND dbidx = '".$db_table_idx.":".$primary_id."'";
+ }
+
+ $records = $app->db->queryAllRecords($sql);
+ if(is_array($records)) {
+ $content .= '<table>';
+ foreach($records as $rec) {
+ $content .= "<tr><td>".date("d.m.Y",$rec["tstamp"])."</td><td>".$rec["user"]."</td></tr>";
+ }
+ $content .= '</table>';
+ }
+
+ return $content;
+
+ }
+}
+
?>
\ No newline at end of file
diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php
index 0a56dcf..ce9aa4a 100644
--- a/interface/lib/classes/remoting.inc.php
+++ b/interface/lib/classes/remoting.inc.php
@@ -1,150 +1,150 @@
-<?php
-
-/*
-Copyright (c) 2007 - 2009, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---UPDATED 08.2009--
-Full SOAP support for ISPConfig 3.1.4 b
-Updated by Arkadiusz Roch & Artur Edelman
-Copyright (c) Tri-Plex technology
-
-*/
-
-class remoting {
-
- //* remote session timeout in seconds
- private $session_timeout = 600;
-
- private $server;
- public $oldDataRecord;
- public $dataRecord;
- public $id;
-
- /*
- These variables shall stay global.
- Please do not make them private variables.
-
- private $app;
- private $conf;
- */
-
- public function __construct()
- {
- global $server;
- $this->server = $server;
- /*
- $this->app = $app;
- $this->conf = $conf;
- */
- }
-
- //* remote login function
- public function login($username, $password)
- {
- global $app, $conf, $server;
-
- if(empty($username)) {
- $this->server->fault('login_username_empty', 'The login username is empty');
- return false;
- }
-
- if(empty($password)) {
- $this->server->fault('login_password_empty', 'The login password is empty');
- return false;
- }
-
- //* Delete old remoting sessions
- $sql = "DELETE FROM remote_session WHERE tstamp < ".time();
- $app->db->query($sql);
-
- $username = $app->db->quote($username);
- $password = $app->db->quote($password);
-
- $sql = "SELECT * FROM remote_user WHERE remote_username = '$username' and remote_password = md5('$password')";
- $remote_user = $app->db->queryOneRecord($sql);
- if($remote_user['remote_userid'] > 0) {
- //* Create a remote user session
- srand ((double)microtime()*1000000);
- $remote_session = md5(rand());
- $remote_userid = $remote_user['remote_userid'];
- $remote_functions = $remote_user['remote_functions'];
- $tstamp = time() + $this->session_timeout;
- $sql = 'INSERT INTO remote_session (remote_session,remote_userid,remote_functions,tstamp'
- .') VALUES ('
- ." '$remote_session',$remote_userid,'$remote_functions',$tstamp)";
- $app->db->query($sql);
- return $remote_session;
- } else {
- $this->server->fault('login_failed', 'The login failed. Username or password wrong.');
- return false;
- }
-
- }
-
- //* remote logout function
- public function logout($session_id)
- {
- global $app;
-
- if(empty($session_id)) {
- $this->server->fault('session_id_empty', 'The SessionID is empty.');
- return false;
- }
-
- $session_id = $app->db->quote($session_id);
-
- $sql = "DELETE FROM remote_session WHERE remote_session = '$session_id'";
- $app->db->query($sql);
- return ($app->db->affectedRows() == 1);
- }
-
-
- /**
- Gets the server configuration
- @param int session id
- @param int server id
- @param string section of the config field in the server table. Could be 'web', 'dns', 'mail', 'dns', 'cron', etc
- @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
- public function server_get($session_id, $server_id, $section ='') {
- global $app;
- if(!$this->checkPerm($session_id, 'server_get')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- if (!empty($session_id) && !empty($server_id)) {
- $app->uses('remoting_lib , getconf');
- $section_config = $app->getconf->get_server_config($server_id,$section);
- return $section_config;
- } else {
- return false;
- }
- }
-
+<?php
+
+/*
+Copyright (c) 2007 - 2009, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--UPDATED 08.2009--
+Full SOAP support for ISPConfig 3.1.4 b
+Updated by Arkadiusz Roch & Artur Edelman
+Copyright (c) Tri-Plex technology
+
+*/
+
+class remoting {
+
+ //* remote session timeout in seconds
+ private $session_timeout = 600;
+
+ private $server;
+ public $oldDataRecord;
+ public $dataRecord;
+ public $id;
+
+ /*
+ These variables shall stay global.
+ Please do not make them private variables.
+
+ private $app;
+ private $conf;
+ */
+
+ public function __construct()
+ {
+ global $server;
+ $this->server = $server;
+ /*
+ $this->app = $app;
+ $this->conf = $conf;
+ */
+ }
+
+ //* remote login function
+ public function login($username, $password)
+ {
+ global $app, $conf, $server;
+
+ if(empty($username)) {
+ $this->server->fault('login_username_empty', 'The login username is empty');
+ return false;
+ }
+
+ if(empty($password)) {
+ $this->server->fault('login_password_empty', 'The login password is empty');
+ return false;
+ }
+
+ //* Delete old remoting sessions
+ $sql = "DELETE FROM remote_session WHERE tstamp < ".time();
+ $app->db->query($sql);
+
+ $username = $app->db->quote($username);
+ $password = $app->db->quote($password);
+
+ $sql = "SELECT * FROM remote_user WHERE remote_username = '$username' and remote_password = md5('$password')";
+ $remote_user = $app->db->queryOneRecord($sql);
+ if($remote_user['remote_userid'] > 0) {
+ //* Create a remote user session
+ srand ((double)microtime()*1000000);
+ $remote_session = md5(rand());
+ $remote_userid = $remote_user['remote_userid'];
+ $remote_functions = $remote_user['remote_functions'];
+ $tstamp = time() + $this->session_timeout;
+ $sql = 'INSERT INTO remote_session (remote_session,remote_userid,remote_functions,tstamp'
+ .') VALUES ('
+ ." '$remote_session',$remote_userid,'$remote_functions',$tstamp)";
+ $app->db->query($sql);
+ return $remote_session;
+ } else {
+ $this->server->fault('login_failed', 'The login failed. Username or password wrong.');
+ return false;
+ }
+
+ }
+
+ //* remote logout function
+ public function logout($session_id)
+ {
+ global $app;
+
+ if(empty($session_id)) {
+ $this->server->fault('session_id_empty', 'The SessionID is empty.');
+ return false;
+ }
+
+ $session_id = $app->db->quote($session_id);
+
+ $sql = "DELETE FROM remote_session WHERE remote_session = '$session_id'";
+ $app->db->query($sql);
+ return ($app->db->affectedRows() == 1);
+ }
+
+
+ /**
+ Gets the server configuration
+ @param int session id
+ @param int server id
+ @param string section of the config field in the server table. Could be 'web', 'dns', 'mail', 'dns', 'cron', etc
+ @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+ public function server_get($session_id, $server_id, $section ='') {
+ global $app;
+ if(!$this->checkPerm($session_id, 'server_get')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ if (!empty($session_id) && !empty($server_id)) {
+ $app->uses('remoting_lib , getconf');
+ $section_config = $app->getconf->get_server_config($server_id,$section);
+ return $section_config;
+ } else {
+ return false;
+ }
+ }
+
public function server_get_serverid_by_ip($session_id, $ipaddress)
{
global $app;
@@ -157,53 +157,53 @@
return $all;
}
- //* Get mail domain details
- public function mail_domain_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_domain_get')) {
- $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('../mail/form/mail_domain.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a mail domain
- public function mail_domain_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'mail_domain_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $primary_id = $this->insertQuery('../mail/form/mail_domain.tform.php',$client_id,$params);
- return $primary_id;
- }
-
- //* Update a mail domain
- public function mail_domain_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'mail_domain_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_domain.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
- //* Delete a mail domain
- public function mail_domain_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'mail_domain_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_domain.tform.php', $primary_id);
- return $affected_rows;
- }
-
+ //* Get mail domain details
+ public function mail_domain_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_domain_get')) {
+ $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('../mail/form/mail_domain.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a mail domain
+ public function mail_domain_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'mail_domain_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $primary_id = $this->insertQuery('../mail/form/mail_domain.tform.php',$client_id,$params);
+ return $primary_id;
+ }
+
+ //* Update a mail domain
+ public function mail_domain_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'mail_domain_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_domain.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+ //* Delete a mail domain
+ public function mail_domain_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'mail_domain_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_domain.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
//* Get mail mailinglist details
public function mail_mailinglist_get($session_id, $primary_id)
{
@@ -251,796 +251,796 @@
return $affected_rows;
}
- //* Get mail user details
- public function mail_user_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_user_get')) {
- $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('../mail/form/mail_user.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
-
- //* dodanie uzytkownika email
- public function mail_user_add($session_id, $client_id, $params){
- if (!$this->checkPerm($session_id, 'mail_user_add')){
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_user.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
- //* edycja uzytkownika email
- public function mail_user_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_user_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_user.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- //*usuniecie uzytkownika emial
- public function mail_user_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_user_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_user.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get mail user filter details
- public function mail_user_filter_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_user_filter_get')) {
- $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('../mail/form/mail_user_filter.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- public function mail_user_filter_add($session_id, $client_id, $params)
- {
- global $app;
- if (!$this->checkPerm($session_id, 'mail_user_filter_add')){
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_user_filter.tform.php', $client_id, $params,'mail:mail_user_filter:on_after_insert');
- // $app->plugin->raiseEvent('mail:mail_user_filter:on_after_insert',$this);
- return $affected_rows;
- }
-
- public function mail_user_filter_update($session_id, $client_id, $primary_id, $params)
- {
- global $app;
- if (!$this->checkPerm($session_id, 'mail_user_filter_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_user_filter.tform.php', $client_id, $primary_id, $params,'mail:mail_user_filter:on_after_update');
- // $app->plugin->raiseEvent('mail:mail_user_filter:on_after_update',$this);
- return $affected_rows;
- }
-
- public function mail_user_filter_delete($session_id, $primary_id)
- {
- global $app;
- if (!$this->checkPerm($session_id, 'mail_user_filter_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_user_filter.tform.php', $primary_id);
- $app->plugin->raiseEvent('mail:mail_user_filter:on_after_delete',$this);
- return $affected_rows;
- }
-
- //* Get alias details
- public function mail_alias_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_alias_get')) {
- $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('../mail/form/mail_alias.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* aliasy email
- public function mail_alias_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_alias_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_alias.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_alias_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_alias_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_alias.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
- public function mail_alias_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_alias_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_alias.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get mail forwarding details
- public function mail_forward_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_forward_get')) {
- $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('../mail/form/mail_forward.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* przekierowania email
- public function mail_forward_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_forward_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_forward.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_forward_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_forward_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_forward.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_forward_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_forward_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_forward.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get catchall details
- public function mail_catchall_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_catchall_get')) {
- $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('../mail/form/mail_domain_catchall.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* catchall e-mail
- public function mail_catchall_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_catchall_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_domain_catchall.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
- public function mail_catchall_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_catchall_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_domain_catchall.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
- public function mail_catchall_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_catchall_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_domain_catchall.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get transport details
- public function mail_transport_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_transport_get')) {
- $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('../mail/form/mail_transport.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* przeniesienia e-mail
- public function mail_transport_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_transport_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_transport.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_transport_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_transport_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_transport.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_transport_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_transport_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_transport.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get spamfilter whitelist details
- public function mail_spamfilter_whitelist_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_get')) {
- $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('../mail/form/spamfilter_whitelist.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* biała lista e-mail
- public function mail_spamfilter_whitelist_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/spamfilter_whitelist.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_spamfilter_whitelist_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/spamfilter_whitelist.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_spamfilter_whitelist_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/spamfilter_whitelist.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get spamfilter blacklist details
- public function mail_spamfilter_blacklist_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_get')) {
- $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('../mail/form/spamfilter_blacklist.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* czarna lista e-mail
- public function mail_spamfilter_blacklist_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/spamfilter_blacklist.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_spamfilter_blacklist_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/spamfilter_blacklist.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_spamfilter_blacklist_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/spamfilter_blacklist.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get spamfilter user details
- public function mail_spamfilter_user_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_spamfilter_user_get')) {
- $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('../mail/form/spamfilter_users.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* filtr spamu użytkowników e-mail
- public function mail_spamfilter_user_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_user_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/spamfilter_users.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_spamfilter_user_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_user_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/spamfilter_users.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_spamfilter_user_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_spamfilter_user_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/spamfilter_users.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get policy details
- public function mail_policy_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_policy_get')) {
- $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('../mail/form/spamfilter_policy.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* polityki filtrów spamu e-mail
- public function mail_policy_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_policy_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/spamfilter_policy.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_policy_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_policy_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/spamfilter_policy.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_policy_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_policy_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/spamfilter_policy.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get fetchmail details
- public function mail_fetchmail_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_fetchmail_get')) {
- $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('../mail/form/mail_get.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* fetchmail
- public function mail_fetchmail_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_fetchmail_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_get.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_fetchmail_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_fetchmail_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_get.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_fetchmail_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_fetchmail_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_get.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get whitelist details
- public function mail_whitelist_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_whitelist_get')) {
- $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('../mail/form/mail_whitelist.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* wpisy białej listy
- public function mail_whitelist_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_whitelist_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_whitelist.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_whitelist_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_whitelist_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_whitelist.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_whitelist_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_whitelist_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_whitelist.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get Blacklist details
- public function mail_blacklist_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_blacklist_get')) {
- $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('../mail/form/mail_blacklist.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* wpisy białej listy
- public function mail_blacklist_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_blacklist_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_blacklist.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_blacklist_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_blacklist_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_blacklist.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_blacklist_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_blacklist_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_blacklist.tform.php', $primary_id);
- return $affected_rows;
- }
-
- //* Get filter details
- public function mail_filter_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'mail_filter_get')) {
- $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('../mail/form/mail_content_filter.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* wpisy filtrow e-mail
- public function mail_filter_add($session_id, $client_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_filter_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->insertQuery('../mail/form/mail_content_filter.tform.php', $client_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_filter_update($session_id, $client_id, $primary_id, $params)
- {
- if (!$this->checkPerm($session_id, 'mail_filter_update'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../mail/form/mail_content_filter.tform.php', $client_id, $primary_id, $params);
- return $affected_rows;
- }
-
-
- public function mail_filter_delete($session_id, $primary_id)
- {
- if (!$this->checkPerm($session_id, 'mail_filter_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../mail/form/mail_content_filter.tform.php', $primary_id);
- return $affected_rows;
- }
-
-
-
-
-/*
- *
- *
- *
- * * Client functions
- *
- *
- */
- //* Get client details
- public function client_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;
- }
- $app->uses('remoting_lib');
- $app->remoting_lib->loadFormDef('../client/form/client.tform.php');
- return $app->remoting_lib->getDataRecord($client_id);
- }
-
- public function client_get_id($session_id, $sys_userid)
- {
- global $app;
- if(!$this->checkPerm($session_id, 'client_get_id')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
-
- $sys_userid = intval($sys_userid);
-
- $rec = $app->db->queryOneRecord("SELECT client_id FROM sys_user WHERE userid = ".$sys_userid);
- if(isset($rec['client_id'])) {
- return intval($rec['client_id']);
- } else {
- $this->server->fault('no_client_found', 'There is no sysuser account for this client ID.');
- return false;
- }
-
- }
-
-
- public function client_add($session_id, $reseller_id, $params)
- {
- if (!$this->checkPerm($session_id, 'client_add'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->klientadd('../client/form/client.tform.php',$reseller_id, $params);
- return $affected_rows;
-
- }
-
- public function client_update($session_id, $client_id, $reseller_id, $params)
- {
- 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;
- }
+ //* Get mail user details
+ public function mail_user_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_user_get')) {
+ $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('../mail/form/mail_user.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+
+ //* dodanie uzytkownika email
+ public function mail_user_add($session_id, $client_id, $params){
+ if (!$this->checkPerm($session_id, 'mail_user_add')){
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_user.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+ //* edycja uzytkownika email
+ public function mail_user_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_user_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_user.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ //*usuniecie uzytkownika emial
+ public function mail_user_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_user_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_user.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get mail user filter details
+ public function mail_user_filter_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_user_filter_get')) {
+ $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('../mail/form/mail_user_filter.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ public function mail_user_filter_add($session_id, $client_id, $params)
+ {
+ global $app;
+ if (!$this->checkPerm($session_id, 'mail_user_filter_add')){
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_user_filter.tform.php', $client_id, $params,'mail:mail_user_filter:on_after_insert');
+ // $app->plugin->raiseEvent('mail:mail_user_filter:on_after_insert',$this);
+ return $affected_rows;
+ }
+
+ public function mail_user_filter_update($session_id, $client_id, $primary_id, $params)
+ {
+ global $app;
+ if (!$this->checkPerm($session_id, 'mail_user_filter_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_user_filter.tform.php', $client_id, $primary_id, $params,'mail:mail_user_filter:on_after_update');
+ // $app->plugin->raiseEvent('mail:mail_user_filter:on_after_update',$this);
+ return $affected_rows;
+ }
+
+ public function mail_user_filter_delete($session_id, $primary_id)
+ {
+ global $app;
+ if (!$this->checkPerm($session_id, 'mail_user_filter_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_user_filter.tform.php', $primary_id);
+ $app->plugin->raiseEvent('mail:mail_user_filter:on_after_delete',$this);
+ return $affected_rows;
+ }
+
+ //* Get alias details
+ public function mail_alias_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_alias_get')) {
+ $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('../mail/form/mail_alias.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* aliasy email
+ public function mail_alias_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_alias_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_alias.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_alias_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_alias_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_alias.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+ public function mail_alias_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_alias_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_alias.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get mail forwarding details
+ public function mail_forward_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_forward_get')) {
+ $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('../mail/form/mail_forward.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* przekierowania email
+ public function mail_forward_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_forward_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_forward.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_forward_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_forward_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_forward.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_forward_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_forward_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_forward.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get catchall details
+ public function mail_catchall_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_catchall_get')) {
+ $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('../mail/form/mail_domain_catchall.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* catchall e-mail
+ public function mail_catchall_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_catchall_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_domain_catchall.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+ public function mail_catchall_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_catchall_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_domain_catchall.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+ public function mail_catchall_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_catchall_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_domain_catchall.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get transport details
+ public function mail_transport_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_transport_get')) {
+ $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('../mail/form/mail_transport.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* przeniesienia e-mail
+ public function mail_transport_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_transport_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_transport.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_transport_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_transport_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_transport.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_transport_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_transport_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_transport.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get spamfilter whitelist details
+ public function mail_spamfilter_whitelist_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_get')) {
+ $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('../mail/form/spamfilter_whitelist.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* biała lista e-mail
+ public function mail_spamfilter_whitelist_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/spamfilter_whitelist.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_spamfilter_whitelist_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/spamfilter_whitelist.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_spamfilter_whitelist_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_whitelist_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/spamfilter_whitelist.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get spamfilter blacklist details
+ public function mail_spamfilter_blacklist_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_get')) {
+ $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('../mail/form/spamfilter_blacklist.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* czarna lista e-mail
+ public function mail_spamfilter_blacklist_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/spamfilter_blacklist.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_spamfilter_blacklist_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/spamfilter_blacklist.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_spamfilter_blacklist_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_blacklist_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/spamfilter_blacklist.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get spamfilter user details
+ public function mail_spamfilter_user_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_spamfilter_user_get')) {
+ $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('../mail/form/spamfilter_users.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* filtr spamu użytkowników e-mail
+ public function mail_spamfilter_user_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_user_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/spamfilter_users.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_spamfilter_user_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_user_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/spamfilter_users.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_spamfilter_user_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_spamfilter_user_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/spamfilter_users.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get policy details
+ public function mail_policy_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_policy_get')) {
+ $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('../mail/form/spamfilter_policy.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* polityki filtrów spamu e-mail
+ public function mail_policy_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_policy_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/spamfilter_policy.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_policy_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_policy_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/spamfilter_policy.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_policy_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_policy_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/spamfilter_policy.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get fetchmail details
+ public function mail_fetchmail_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_fetchmail_get')) {
+ $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('../mail/form/mail_get.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* fetchmail
+ public function mail_fetchmail_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_fetchmail_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_get.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_fetchmail_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_fetchmail_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_get.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_fetchmail_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_fetchmail_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_get.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get whitelist details
+ public function mail_whitelist_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_whitelist_get')) {
+ $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('../mail/form/mail_whitelist.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* wpisy białej listy
+ public function mail_whitelist_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_whitelist_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_whitelist.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_whitelist_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_whitelist_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_whitelist.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_whitelist_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_whitelist_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_whitelist.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get Blacklist details
+ public function mail_blacklist_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_blacklist_get')) {
+ $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('../mail/form/mail_blacklist.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* wpisy białej listy
+ public function mail_blacklist_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_blacklist_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_blacklist.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_blacklist_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_blacklist_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_blacklist.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_blacklist_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_blacklist_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_blacklist.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+ //* Get filter details
+ public function mail_filter_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'mail_filter_get')) {
+ $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('../mail/form/mail_content_filter.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* wpisy filtrow e-mail
+ public function mail_filter_add($session_id, $client_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_filter_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->insertQuery('../mail/form/mail_content_filter.tform.php', $client_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_filter_update($session_id, $client_id, $primary_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'mail_filter_update'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../mail/form/mail_content_filter.tform.php', $client_id, $primary_id, $params);
+ return $affected_rows;
+ }
+
+
+ public function mail_filter_delete($session_id, $primary_id)
+ {
+ if (!$this->checkPerm($session_id, 'mail_filter_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../mail/form/mail_content_filter.tform.php', $primary_id);
+ return $affected_rows;
+ }
+
+
+
+
+/*
+ *
+ *
+ *
+ * * Client functions
+ *
+ *
+ */
+ //* Get client details
+ public function client_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;
+ }
+ $app->uses('remoting_lib');
+ $app->remoting_lib->loadFormDef('../client/form/client.tform.php');
+ return $app->remoting_lib->getDataRecord($client_id);
+ }
+
+ public function client_get_id($session_id, $sys_userid)
+ {
+ global $app;
+ if(!$this->checkPerm($session_id, 'client_get_id')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+
+ $sys_userid = intval($sys_userid);
+
+ $rec = $app->db->queryOneRecord("SELECT client_id FROM sys_user WHERE userid = ".$sys_userid);
+ if(isset($rec['client_id'])) {
+ return intval($rec['client_id']);
+ } else {
+ $this->server->fault('no_client_found', 'There is no sysuser account for this client ID.');
+ return false;
+ }
+
+ }
+
+
+ public function client_add($session_id, $reseller_id, $params)
+ {
+ if (!$this->checkPerm($session_id, 'client_add'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->klientadd('../client/form/client.tform.php',$reseller_id, $params);
+ return $affected_rows;
+
+ }
+
+ public function client_update($session_id, $client_id, $reseller_id, $params)
+ {
+ 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;
+ }
$affected_rows = $this->updateQuery('../client/form/client.tform.php', $reseller_id, $client_id, $params);
-
- $app->remoting_lib->ispconfig_sysuser_update($params,$client_id);
-
- return $affected_rows;
- }
-
-
- public function client_delete($session_id,$client_id)
- {
- global $app;
-
- if (!$this->checkPerm($session_id, 'client_delete'))
- {
- $this->server->fault('permission_denied','You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../client/form/client.tform.php',$client_id);
-
- $app->remoting_lib->ispconfig_sysuser_delete($client_id);
-
- return $affected_rows;
- }
-
+
+ $app->remoting_lib->ispconfig_sysuser_update($params,$client_id);
+
+ return $affected_rows;
+ }
+
+
+ public function client_delete($session_id,$client_id)
+ {
+ global $app;
+
+ if (!$this->checkPerm($session_id, 'client_delete'))
+ {
+ $this->server->fault('permission_denied','You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../client/form/client.tform.php',$client_id);
+
+ $app->remoting_lib->ispconfig_sysuser_delete($client_id);
+
+ return $affected_rows;
+ }
+
// -----------------------------------------------------------------------------------------------
public function client_delete_everything($session_id, $client_id)
@@ -1126,348 +1126,348 @@
return false;
}
- // Website functions ---------------------------------------------------------------------------------------
-
- //* Get cron details
- public function sites_cron_get($session_id, $cron_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'sites_cron_get')) {
- $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('../sites/form/cron.tform.php');
- return $app->remoting_lib->getDataRecord($cron_id);
- }
-
- //* Add a cron record
- public function sites_cron_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_cron_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../sites/form/cron.tform.php',$client_id,$params);
- }
-
- //* Update cron record
- public function sites_cron_update($session_id, $client_id, $cron_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_cron_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../sites/form/cron.tform.php',$client_id,$cron_id,$params);
- return $affected_rows;
- }
-
- //* Delete cron record
- public function sites_cron_delete($session_id, $cron_id)
- {
- if(!$this->checkPerm($session_id, 'sites_cron_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../sites/form/cron.tform.php',$cron_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function sites_database_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'sites_database_get')) {
- $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('../sites/form/database.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function sites_database_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_database_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../sites/form/database.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function sites_database_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_database_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../sites/form/database.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function sites_database_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'sites_database_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../sites/form/database.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function sites_ftp_user_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'sites_ftp_user_get')) {
- $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('../sites/form/ftp_user.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function sites_ftp_user_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_ftp_user_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../sites/form/ftp_user.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function sites_ftp_user_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_ftp_user_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../sites/form/ftp_user.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function sites_ftp_user_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'sites_ftp_user_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../sites/form/ftp_user.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function sites_shell_user_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'sites_shell_user_get')) {
- $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('../sites/form/shell_user.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function sites_shell_user_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_shell_user_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../sites/form/shell_user.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function sites_shell_user_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_shell_user_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../sites/form/shell_user.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function sites_shell_user_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'sites_shell_user_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../sites/form/shell_user.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function sites_web_domain_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'sites_web_domain_get')) {
- $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('../sites/form/web_domain.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
+ // Website functions ---------------------------------------------------------------------------------------
+
+ //* Get cron details
+ public function sites_cron_get($session_id, $cron_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_cron_get')) {
+ $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('../sites/form/cron.tform.php');
+ return $app->remoting_lib->getDataRecord($cron_id);
+ }
+
+ //* Add a cron record
+ public function sites_cron_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_cron_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../sites/form/cron.tform.php',$client_id,$params);
+ }
+
+ //* Update cron record
+ public function sites_cron_update($session_id, $client_id, $cron_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_cron_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../sites/form/cron.tform.php',$client_id,$cron_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete cron record
+ public function sites_cron_delete($session_id, $cron_id)
+ {
+ if(!$this->checkPerm($session_id, 'sites_cron_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../sites/form/cron.tform.php',$cron_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function sites_database_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_database_get')) {
+ $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('../sites/form/database.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function sites_database_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_database_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../sites/form/database.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function sites_database_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_database_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../sites/form/database.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function sites_database_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'sites_database_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../sites/form/database.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function sites_ftp_user_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_ftp_user_get')) {
+ $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('../sites/form/ftp_user.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function sites_ftp_user_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_ftp_user_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../sites/form/ftp_user.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function sites_ftp_user_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_ftp_user_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../sites/form/ftp_user.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function sites_ftp_user_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'sites_ftp_user_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../sites/form/ftp_user.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function sites_shell_user_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_shell_user_get')) {
+ $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('../sites/form/shell_user.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function sites_shell_user_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_shell_user_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../sites/form/shell_user.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function sites_shell_user_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_shell_user_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../sites/form/shell_user.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function sites_shell_user_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'sites_shell_user_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../sites/form/shell_user.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function sites_web_domain_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_web_domain_get')) {
+ $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('../sites/form/web_domain.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
public function sites_web_domain_add($session_id, $client_id, $params, $readonly = false)
{
global $app;
- if(!$this->checkPerm($session_id, 'sites_web_domain_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
+ if(!$this->checkPerm($session_id, 'sites_web_domain_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
$domain_id = $this->insertQuery('../sites/form/web_domain.tform.php',$client_id,$params, 'sites:web_domain:on_after_insert');
if ($readonly === true)
$app->db->query("UPDATE web_domain SET `sys_userid` = '1' WHERE domain_id = ".$domain_id);
return $domain_id;
}
- //* Update a record
- public function sites_web_domain_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_web_domain_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../sites/form/web_domain.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function sites_web_domain_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'sites_web_domain_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../sites/form/web_domain.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // -----------------------------------------------------------------------------------------------
-
- //* Get record details
- public function sites_web_aliasdomain_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_get')) {
- $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('../sites/form/web_aliasdomain.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function sites_web_aliasdomain_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../sites/form/web_aliasdomain.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function sites_web_aliasdomain_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../sites/form/web_aliasdomain.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function sites_web_aliasdomain_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../sites/form/web_aliasdomain.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function sites_web_subdomain_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'sites_web_subdomain_get')) {
- $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('../sites/form/web_subdomain.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function sites_web_subdomain_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_web_subdomain_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../sites/form/web_subdomain.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function sites_web_subdomain_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'sites_web_subdomain_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../sites/form/web_subdomain.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function sites_web_subdomain_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'sites_web_subdomain_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../sites/form/web_subdomain.tform.php',$primary_id);
- return $affected_rows;
- }
-
+ //* Update a record
+ public function sites_web_domain_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_web_domain_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../sites/form/web_domain.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function sites_web_domain_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'sites_web_domain_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../sites/form/web_domain.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
// -----------------------------------------------------------------------------------------------
-
+
+ //* Get record details
+ public function sites_web_aliasdomain_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_get')) {
+ $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('../sites/form/web_aliasdomain.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function sites_web_aliasdomain_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../sites/form/web_aliasdomain.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function sites_web_aliasdomain_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../sites/form/web_aliasdomain.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function sites_web_aliasdomain_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../sites/form/web_aliasdomain.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function sites_web_subdomain_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'sites_web_subdomain_get')) {
+ $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('../sites/form/web_subdomain.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function sites_web_subdomain_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_web_subdomain_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../sites/form/web_subdomain.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function sites_web_subdomain_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'sites_web_subdomain_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../sites/form/web_subdomain.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function sites_web_subdomain_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'sites_web_subdomain_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../sites/form/web_subdomain.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // -----------------------------------------------------------------------------------------------
+
//* Get record details
public function domains_domain_get($session_id, $primary_id)
{
@@ -1519,1074 +1519,1074 @@
}
- // DNS Function --------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_zone_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_zone_get')) {
- $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('../dns/form/dns_soa.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_zone_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_zone_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_soa.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_zone_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_zone_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_soa.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_zone_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_zone_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_soa.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_aaaa_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_aaaa_get')) {
- $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('../dns/form/dns_aaaa.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_aaaa_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_aaaa_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_aaaa.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_aaaa_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_aaaa_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_aaaa.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_aaaa_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_aaaa_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_aaaa.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_a_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_a_get')) {
- $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('../dns/form/dns_a.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_a_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_a_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_a.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_a_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_a_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_a.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_a_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_a_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_a.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_alias_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_alias_get')) {
- $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('../dns/form/dns_alias.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_alias_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_alias_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_alias.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_alias_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_alias_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_alias.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_alias_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_alias_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_alias.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_cname_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_cname_get')) {
- $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('../dns/form/dns_cname.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_cname_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_cname_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_cname.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_cname_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_cname_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_cname.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_cname_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_cname_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_cname.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_hinfo_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_hinfo_get')) {
- $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('../dns/form/dns_hinfo.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_hinfo_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_hinfo_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_hinfo.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_hinfo_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_hinfo_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_hinfo.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_hinfo_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_hinfo_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_hinfo.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_mx_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_mx_get')) {
- $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('../dns/form/dns_mx.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_mx_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_mx_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_mx.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_mx_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_mx_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_mx.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_mx_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_mx_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_mx.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_ns_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_ns_get')) {
- $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('../dns/form/dns_ns.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_ns_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_ns_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_ns.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_ns_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_ns_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_ns.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_ns_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_ns_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_ns.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_ptr_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_ptr_get')) {
- $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('../dns/form/dns_ptr.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_ptr_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_ptr_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_ptr.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_ptr_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_ptr_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_ptr.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_ptr_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_ptr_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_ptr.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_rp_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_rp_get')) {
- $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('../dns/form/dns_rp.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_rp_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_rp_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_rp.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_rp_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_rp_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_rp.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_rp_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_rp_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_rp.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_srv_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_srv_get')) {
- $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('../dns/form/dns_srv.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_srv_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_srv_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_srv.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_srv_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_srv_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_srv.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_srv_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_srv_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_srv.tform.php',$primary_id);
- return $affected_rows;
- }
-
- // ----------------------------------------------------------------------------------------------------------------
-
- //* Get record details
- public function dns_txt_get($session_id, $primary_id)
- {
- global $app;
-
- if(!$this->checkPerm($session_id, 'dns_txt_get')) {
- $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('../dns/form/dns_txt.tform.php');
- return $app->remoting_lib->getDataRecord($primary_id);
- }
-
- //* Add a record
- public function dns_txt_add($session_id, $client_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_txt_add')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return $this->insertQuery('../dns/form/dns_txt.tform.php',$client_id,$params);
- }
-
- //* Update a record
- public function dns_txt_update($session_id, $client_id, $primary_id, $params)
- {
- if(!$this->checkPerm($session_id, 'dns_txt_update')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->updateQuery('../dns/form/dns_txt.tform.php',$client_id,$primary_id,$params);
- return $affected_rows;
- }
-
- //* Delete a record
- public function dns_txt_delete($session_id, $primary_id)
- {
- if(!$this->checkPerm($session_id, 'dns_txt_delete')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $affected_rows = $this->deleteQuery('../dns/form/dns_txt.tform.php',$primary_id);
- return $affected_rows;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- //** private functions -----------------------------------------------------------------------------------
-
-
-
-
- private function klientadd($formdef_file, $reseller_id, $params)
- {
- global $app, $tform, $remoting_lib;
- $app->uses('remoting_lib');
-
- //* Load the form definition
- $app->remoting_lib->loadFormDef($formdef_file);
-
- //* load the user profile of the client
- $app->remoting_lib->loadUserProfile($reseller_id);
-
- //* load the client template
- if(isset($params['template_master']) and $params['template_master'] > 0)
- {
- $template=$app->db->queryOneRecord("SELECT * FROM client_template WHERE template_id=".intval($params['template_master']));
- $params=array_merge($params,$template);
- }
-
- //* Get the SQL query
- $sql = $app->remoting_lib->getSQL($params,'INSERT',0);
- if($app->remoting_lib->errorMessage != '') {
- $this->server->fault('data_processing_error', $app->remoting_lib->errorMessage);
- return false;
- }
-
- $app->db->query($sql);
-
- if($app->db->errorMessage != '') {
- $this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
- return false;
- }
-
-
-
- $insert_id = $app->db->insertID();
- //$app->uses('tform');
- //* Save changes to Datalog
- if($app->remoting_lib->formDef["db_history"] == 'yes') {
- $new_rec = $app->remoting_lib->getDataRecord($insert_id);
- $app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec);
- $app->remoting_lib->ispconfig_sysuser_add($params,$insert_id);
-
- if($reseller_id) {
- $client_group = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE client_id = ".$insert_id);
- $reseller_user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE client_id = ".$reseller_id);
- $app->auth->add_group_to_user($reseller_user['userid'], $client_group['groupid']);
- $app->db->query("UPDATE client SET parent_client_id = ".$reseller_id." WHERE client_id = ".$insert_id);
- }
-
- }
- return $insert_id;
- }
-
- private function insertQuery($formdef_file, $client_id, $params,$event_identifier = '')
- {
- global $app, $tform, $remoting_lib;
-
- $app->uses('remoting_lib');
-
- //* load the user profile of the client
- $app->remoting_lib->loadUserProfile($client_id);
-
- //* Load the form definition
- $app->remoting_lib->loadFormDef($formdef_file);
-
- //* Get the SQL query
- $sql = $app->remoting_lib->getSQL($params,'INSERT',0);
- if($app->remoting_lib->errorMessage != '') {
- $this->server->fault('data_processing_error', $app->remoting_lib->errorMessage);
- return false;
- }
-
- $app->db->query($sql);
-
- if($app->db->errorMessage != '') {
- $this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
- return false;
- }
-
- $insert_id = $app->db->insertID();
-
- // set a few values for compatibility with tform actions, mostly used by plugins
- $this->id = $insert_id;
- $this->dataRecord = $params;
-
- if($event_identifier != '') $app->plugin->raiseEvent($event_identifier,$this);
-
- //$app->uses('tform');
- //* Save changes to Datalog
- if($app->remoting_lib->formDef["db_history"] == 'yes') {
- $new_rec = $app->remoting_lib->getDataRecord($insert_id);
- $app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec);
- }
- return $insert_id;
- }
-
-
- private function updateQuery($formdef_file, $client_id, $primary_id, $params, $event_identifier = '')
- {
- global $app;
-
- $app->uses('remoting_lib');
-
- //* load the user profile of the client
- $app->remoting_lib->loadUserProfile($client_id);
-
- //* Load the form definition
- $app->remoting_lib->loadFormDef($formdef_file);
-
- //* Get the SQL query
- $sql = $app->remoting_lib->getSQL($params,'UPDATE',$primary_id);
- if($app->remoting_lib->errorMessage != '') {
- $this->server->fault('data_processing_error', $app->remoting_lib->errorMessage);
- return false;
- }
-
- $old_rec = $app->remoting_lib->getDataRecord($primary_id);
-
- // set a few values for compatibility with tform actions, mostly used by plugins
- $this->oldDataRecord = $old_rec;
- $this->id = $primary_id;
- $this->dataRecord = $params;
-
- $app->db->query($sql);
-
- if($app->db->errorMessage != '') {
- $this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
- return false;
- }
-
- $affected_rows = $app->db->affectedRows();
-
- if($event_identifier != '') $app->plugin->raiseEvent($event_identifier,$this);
-
- //* Save changes to Datalog
- if($app->remoting_lib->formDef["db_history"] == 'yes') {
- $new_rec = $app->remoting_lib->getDataRecord($primary_id);
- $app->remoting_lib->datalogSave('UPDATE',$primary_id,$old_rec,$new_rec);
- }
-
- return $affected_rows;
- }
-
- private function deleteQuery($formdef_file, $primary_id)
- {
- global $app;
-
- $app->uses('remoting_lib');
-
- //* load the user profile of the client
- $app->remoting_lib->loadUserProfile(0);
-
- //* Load the form definition
- $app->remoting_lib->loadFormDef($formdef_file);
-
- $old_rec = $app->remoting_lib->getDataRecord($primary_id);
-
- // set a few values for compatibility with tform actions, mostly used by plugins
- $this->oldDataRecord = $old_rec;
- $this->id = $primary_id;
- $this->dataRecord = $params;
-
- //* Get the SQL query
- $sql = $app->remoting_lib->getDeleteSQL($primary_id);
-
- $app->db->query($sql);
-
- if($app->db->errorMessage != '') {
- $this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
- return false;
- }
-
- $affected_rows = $app->db->affectedRows();
-
- //* Save changes to Datalog
- if($app->remoting_lib->formDef["db_history"] == 'yes') {
- $app->remoting_lib->datalogSave('DELETE',$primary_id,$old_rec,array());
- }
-
-
- return $affected_rows;
- }
-
-
- private function checkPerm($session_id, $function_name)
- {
- $dobre=array();
- $session = $this->getSession($session_id);
- if(!$session){
- return false;
- }
-
- $dobre= str_replace(';',',',$session['remote_functions']);
- return in_array($function_name, explode(',', $dobre) );
- }
-
-
- private function getSession($session_id)
- {
- global $app;
-
- if(empty($session_id)) {
- $this->server->fault('session_id_empty','The SessionID is empty.');
- return false;
- }
-
- $session_id = $app->db->quote($session_id);
-
- $now = time();
- $sql = "SELECT * FROM remote_session WHERE remote_session = '$session_id' AND tstamp >= $now";
- $session = $app->db->queryOneRecord($sql);
- if($session['remote_userid'] > 0) {
- return $session;
- } else {
- $this->server->fault('session_does_not_exist','The Session is expired or does not exist.');
- return false;
- }
- }
-
- //---
-
-
- /**
- * Gets sites by $sys_userid & $sys_groupid
- * @param int session id
- * @param int user id
- * @param array list of groups
- * @return mixed array with sites by user
- * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
- public function client_get_sites_by_user($session_id, $sys_userid, $sys_groupid) {
- global $app;
- if(!$this->checkPerm($session_id, 'client_get_sites_by_user')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $sys_userid = intval($sys_userid);
- $sys_groupid = explode(',', $sys_groupid);
- $new_group = array();
- foreach($sys_groupid as $group_id) {
- $new_group[] = intval( $group_id);
- }
- $group_list = implode(',', $new_group);
- $sql ="SELECT domain, domain_id, document_root, active FROM web_domain WHERE ( (sys_userid = $sys_userid AND sys_perm_user LIKE '%r%') OR (sys_groupid IN ($group_list) AND sys_perm_group LIKE '%r%') OR sys_perm_other LIKE '%r%') AND type = 'vhost'";
- $result = $app->db->queryAllRecords($sql);
- if(isset($result)) {
- return $result;
- } else {
- $this->server->fault('no_client_found', 'There is no site for this user');
- return false;
- }
- }
-
- /**
- * Change domains status
- * @param int session id
- * @param int site id
- * @param string active or inactive string
- * @return mixed false if error
- * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
-
- public function sites_web_domain_set_status($session_id, $primary_id, $status) {
- global $app;
- if(!$this->checkPerm($session_id, 'sites_web_domain_set_status')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- if(in_array($status, array('active', 'inactive'))) {
- if ($status == 'active') {
- $status = 'y';
- } else {
- $status = 'n';
- }
- $sql = "UPDATE web_domain SET active = '$status' WHERE domain_id = ".intval($primary_id);
- $app->db->query($sql);
- $result = $app->db->affectedRows();
- return $result;
- } else {
- $this->server->fault('status_undefined', 'The status is not available');
- return false;
- }
- }
-
- /**
- * Get sys_user information by username
- * @param int session id
- * @param string user's name
- * @return mixed false if error
- * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
- public function client_get_by_username($session_id, $username) {
- global $app;
- if(!$this->checkPerm($session_id, 'client_get_by_username')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $username = $app->db->quote($username);
- $rec = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE username = '".$username."'");
- if (isset($rec)) {
- return $rec;
- } else {
- $this->server->fault('no_client_found', 'There is no user account for this user name.');
- return false;
- }
- }
-
- /**
- * Changes client password
- *
- * @param int session id
- * @param int client id
- * @param string new password
- * @return bool true if success
- * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- *
- */
- public function client_change_password($session_id, $client_id, $new_password) {
- global $app;
-
- if(!$this->checkPerm($session_id, 'client_change_password')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $client_id = intval($client_id);
- $client = $app->db->queryOneRecord("SELECT client_id FROM client WHERE client_id = ".$client_id);
- if($client['client_id'] > 0) {
- $new_password = $app->db->quote($new_password);
- $sql = "UPDATE client SET password = md5('".($new_password)."') WHERE client_id = ".$client_id;
- $app->db->query($sql);
- $sql = "UPDATE sys_user SET passwort = md5('".($new_password)."') WHERE client_id = ".$client_id;
- $app->db->query($sql);
- return true;
- } else {
- $this->server->fault('no_client_found', 'There is no user account for this client_id');
- return false;
- }
- }
-
- public function mail_domain_get_by_domain($session_id, $domain) {
- global $app;
- if(!$this->checkPerm($session_id, 'mail_domain_get_by_domain')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- if (!empty($domain_id)) {
- $domain = $app->db->quote($domain);
- $sql = "SELECT * FROM mail_domain WHERE domain = $domain";
- $result = $app->db->queryAllRecords($sql);
- return $result;
- }
- return false;
- }
-
-
-
- /**
- * Get a list of functions
- * @param int session id
- * @return mixed array of the available functions
- * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
- public function get_function_list($session_id)
- {
- if(!$this->checkPerm($session_id, 'get_function_list')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- return get_class_methods($this);
- }
-
- /**
- * Get all databases by user
- * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
- public function sites_database_get_all_by_user($session_id, $client_id)
- {
- global $app;
- if(!$this->checkPerm($session_id, 'sites_database_get_all_by_user')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $client_id = intval($client_id);
- $sql = "SELECT database_id, database_name, database_user, database_password FROM web_database WHERE sys_userid = $client_id ";
- $all = $app->db->queryAllRecords($sql);
- return $all;
- }
-
- /**
- * Get all client templates
- * @param int session id
- * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
- public function client_templates_get_all($session_id) {
- global $app;
- if(!$this->checkPerm($session_id, 'client_templates_get_all')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- $sql = "SELECT * FROM client_template";
- $result = $app->db->queryAllRecords($sql);
- return $result;
- }
-
- /**
- * Get all DNS zone by user
- *@author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
- public function dns_zone_get_by_user($session_id, $client_id, $server_id) {
- global $app;
- if(!$this->checkPerm($session_id, 'dns_zone_get')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- if (!empty($client_id) && !empty($server_id)) {
- $server_id = intval($server_id);
- $client_id = intval($client_id);
- $sql = "SELECT id, origin FROM dns_soa d INNER JOIN sys_user s on(d.sys_groupid = s.default_group) WHERE client_id = $client_id AND server_id = $server_id";
- $result = $app->db->queryAllRecords($sql);
- return $result;
- }
- return false;
- }
-
-
- /**
- * Changes DNS zone status
- * @param int session id
- * @param int dns soa id
- * @param string status active or inactive string
- * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
- */
-
- public function dns_zone_set_status($session_id, $primary_id, $status) {
- global $app;
- if(!$this->checkPerm($session_id, 'dns_zone_set_status')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- if(in_array($status, array('active', 'inactive'))) {
- if ($status == 'active') {
- $status = 'Y';
- } else {
- $status = 'N';
- }
- $sql = "UPDATE dns_soa SET active = '$status' WHERE id = ".intval($primary_id);
- $app->db->query($sql);
- $result = $app->db->affectedRows();
- return $result;
- } else {
- $this->server->fault('status_undefined', 'The status is not available');
- return false;
- }
- }
-
- public function mail_domain_set_status($session_id, $primary_id, $status) {
- global $app;
- if(!$this->checkPerm($session_id, 'mail_domain_set_status')) {
- $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
- return false;
- }
- if(in_array($status, array('active', 'inactive'))) {
- if ($status == 'active') {
- $status = 'y';
- } else {
- $status = 'n';
- }
- $sql = "UPDATE mail_domain SET active = '$status' WHERE domain_id = ".intval($primary_id);
- $app->db->query($sql);
- $result = $app->db->affectedRows();
- return $result;
- } else {
- $this->server->fault('status_undefined', 'The status is not available');
- return false;
- }
- }
-}
+ // DNS Function --------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_zone_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_zone_get')) {
+ $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('../dns/form/dns_soa.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_zone_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_zone_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_soa.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_zone_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_zone_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_soa.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_zone_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_zone_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_soa.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_aaaa_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_aaaa_get')) {
+ $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('../dns/form/dns_aaaa.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_aaaa_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_aaaa_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_aaaa.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_aaaa_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_aaaa_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_aaaa.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_aaaa_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_aaaa_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_aaaa.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_a_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_a_get')) {
+ $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('../dns/form/dns_a.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_a_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_a_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_a.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_a_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_a_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_a.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_a_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_a_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_a.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_alias_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_alias_get')) {
+ $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('../dns/form/dns_alias.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_alias_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_alias_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_alias.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_alias_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_alias_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_alias.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_alias_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_alias_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_alias.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_cname_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_cname_get')) {
+ $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('../dns/form/dns_cname.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_cname_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_cname_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_cname.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_cname_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_cname_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_cname.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_cname_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_cname_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_cname.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_hinfo_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_hinfo_get')) {
+ $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('../dns/form/dns_hinfo.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_hinfo_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_hinfo_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_hinfo.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_hinfo_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_hinfo_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_hinfo.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_hinfo_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_hinfo_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_hinfo.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_mx_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_mx_get')) {
+ $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('../dns/form/dns_mx.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_mx_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_mx_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_mx.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_mx_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_mx_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_mx.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_mx_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_mx_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_mx.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_ns_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_ns_get')) {
+ $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('../dns/form/dns_ns.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_ns_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_ns_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_ns.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_ns_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_ns_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_ns.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_ns_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_ns_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_ns.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_ptr_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_ptr_get')) {
+ $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('../dns/form/dns_ptr.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_ptr_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_ptr_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_ptr.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_ptr_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_ptr_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_ptr.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_ptr_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_ptr_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_ptr.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_rp_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_rp_get')) {
+ $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('../dns/form/dns_rp.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_rp_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_rp_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_rp.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_rp_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_rp_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_rp.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_rp_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_rp_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_rp.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_srv_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_srv_get')) {
+ $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('../dns/form/dns_srv.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_srv_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_srv_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_srv.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_srv_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_srv_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_srv.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_srv_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_srv_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_srv.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
+
+ //* Get record details
+ public function dns_txt_get($session_id, $primary_id)
+ {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'dns_txt_get')) {
+ $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('../dns/form/dns_txt.tform.php');
+ return $app->remoting_lib->getDataRecord($primary_id);
+ }
+
+ //* Add a record
+ public function dns_txt_add($session_id, $client_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_txt_add')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return $this->insertQuery('../dns/form/dns_txt.tform.php',$client_id,$params);
+ }
+
+ //* Update a record
+ public function dns_txt_update($session_id, $client_id, $primary_id, $params)
+ {
+ if(!$this->checkPerm($session_id, 'dns_txt_update')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->updateQuery('../dns/form/dns_txt.tform.php',$client_id,$primary_id,$params);
+ return $affected_rows;
+ }
+
+ //* Delete a record
+ public function dns_txt_delete($session_id, $primary_id)
+ {
+ if(!$this->checkPerm($session_id, 'dns_txt_delete')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $affected_rows = $this->deleteQuery('../dns/form/dns_txt.tform.php',$primary_id);
+ return $affected_rows;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+ //** private functions -----------------------------------------------------------------------------------
+
+
+
+
+ private function klientadd($formdef_file, $reseller_id, $params)
+ {
+ global $app, $tform, $remoting_lib;
+ $app->uses('remoting_lib');
+
+ //* Load the form definition
+ $app->remoting_lib->loadFormDef($formdef_file);
+
+ //* load the user profile of the client
+ $app->remoting_lib->loadUserProfile($reseller_id);
+
+ //* load the client template
+ if(isset($params['template_master']) and $params['template_master'] > 0)
+ {
+ $template=$app->db->queryOneRecord("SELECT * FROM client_template WHERE template_id=".intval($params['template_master']));
+ $params=array_merge($params,$template);
+ }
+
+ //* Get the SQL query
+ $sql = $app->remoting_lib->getSQL($params,'INSERT',0);
+ if($app->remoting_lib->errorMessage != '') {
+ $this->server->fault('data_processing_error', $app->remoting_lib->errorMessage);
+ return false;
+ }
+
+ $app->db->query($sql);
+
+ if($app->db->errorMessage != '') {
+ $this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
+ return false;
+ }
+
+
+
+ $insert_id = $app->db->insertID();
+ //$app->uses('tform');
+ //* Save changes to Datalog
+ if($app->remoting_lib->formDef["db_history"] == 'yes') {
+ $new_rec = $app->remoting_lib->getDataRecord($insert_id);
+ $app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec);
+ $app->remoting_lib->ispconfig_sysuser_add($params,$insert_id);
+
+ if($reseller_id) {
+ $client_group = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE client_id = ".$insert_id);
+ $reseller_user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE client_id = ".$reseller_id);
+ $app->auth->add_group_to_user($reseller_user['userid'], $client_group['groupid']);
+ $app->db->query("UPDATE client SET parent_client_id = ".$reseller_id." WHERE client_id = ".$insert_id);
+ }
+
+ }
+ return $insert_id;
+ }
+
+ private function insertQuery($formdef_file, $client_id, $params,$event_identifier = '')
+ {
+ global $app, $tform, $remoting_lib;
+
+ $app->uses('remoting_lib');
+
+ //* load the user profile of the client
+ $app->remoting_lib->loadUserProfile($client_id);
+
+ //* Load the form definition
+ $app->remoting_lib->loadFormDef($formdef_file);
+
+ //* Get the SQL query
+ $sql = $app->remoting_lib->getSQL($params,'INSERT',0);
+ if($app->remoting_lib->errorMessage != '') {
+ $this->server->fault('data_processing_error', $app->remoting_lib->errorMessage);
+ return false;
+ }
+
+ $app->db->query($sql);
+
+ if($app->db->errorMessage != '') {
+ $this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
+ return false;
+ }
+
+ $insert_id = $app->db->insertID();
+
+ // set a few values for compatibility with tform actions, mostly used by plugins
+ $this->id = $insert_id;
+ $this->dataRecord = $params;
+
+ if($event_identifier != '') $app->plugin->raiseEvent($event_identifier,$this);
+
+ //$app->uses('tform');
+ //* Save changes to Datalog
+ if($app->remoting_lib->formDef["db_history"] == 'yes') {
+ $new_rec = $app->remoting_lib->getDataRecord($insert_id);
+ $app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec);
+ }
+ return $insert_id;
+ }
+
+
+ private function updateQuery($formdef_file, $client_id, $primary_id, $params, $event_identifier = '')
+ {
+ global $app;
+
+ $app->uses('remoting_lib');
+
+ //* load the user profile of the client
+ $app->remoting_lib->loadUserProfile($client_id);
+
+ //* Load the form definition
+ $app->remoting_lib->loadFormDef($formdef_file);
+
+ //* Get the SQL query
+ $sql = $app->remoting_lib->getSQL($params,'UPDATE',$primary_id);
+ if($app->remoting_lib->errorMessage != '') {
+ $this->server->fault('data_processing_error', $app->remoting_lib->errorMessage);
+ return false;
+ }
+
+ $old_rec = $app->remoting_lib->getDataRecord($primary_id);
+
+ // set a few values for compatibility with tform actions, mostly used by plugins
+ $this->oldDataRecord = $old_rec;
+ $this->id = $primary_id;
+ $this->dataRecord = $params;
+
+ $app->db->query($sql);
+
+ if($app->db->errorMessage != '') {
+ $this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
+ return false;
+ }
+
+ $affected_rows = $app->db->affectedRows();
+
+ if($event_identifier != '') $app->plugin->raiseEvent($event_identifier,$this);
+
+ //* Save changes to Datalog
+ if($app->remoting_lib->formDef["db_history"] == 'yes') {
+ $new_rec = $app->remoting_lib->getDataRecord($primary_id);
+ $app->remoting_lib->datalogSave('UPDATE',$primary_id,$old_rec,$new_rec);
+ }
+
+ return $affected_rows;
+ }
+
+ private function deleteQuery($formdef_file, $primary_id)
+ {
+ global $app;
+
+ $app->uses('remoting_lib');
+
+ //* load the user profile of the client
+ $app->remoting_lib->loadUserProfile(0);
+
+ //* Load the form definition
+ $app->remoting_lib->loadFormDef($formdef_file);
+
+ $old_rec = $app->remoting_lib->getDataRecord($primary_id);
+
+ // set a few values for compatibility with tform actions, mostly used by plugins
+ $this->oldDataRecord = $old_rec;
+ $this->id = $primary_id;
+ $this->dataRecord = $params;
+
+ //* Get the SQL query
+ $sql = $app->remoting_lib->getDeleteSQL($primary_id);
+
+ $app->db->query($sql);
+
+ if($app->db->errorMessage != '') {
+ $this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
+ return false;
+ }
+
+ $affected_rows = $app->db->affectedRows();
+
+ //* Save changes to Datalog
+ if($app->remoting_lib->formDef["db_history"] == 'yes') {
+ $app->remoting_lib->datalogSave('DELETE',$primary_id,$old_rec,array());
+ }
+
+
+ return $affected_rows;
+ }
+
+
+ private function checkPerm($session_id, $function_name)
+ {
+ $dobre=array();
+ $session = $this->getSession($session_id);
+ if(!$session){
+ return false;
+ }
+
+ $dobre= str_replace(';',',',$session['remote_functions']);
+ return in_array($function_name, explode(',', $dobre) );
+ }
+
+
+ private function getSession($session_id)
+ {
+ global $app;
+
+ if(empty($session_id)) {
+ $this->server->fault('session_id_empty','The SessionID is empty.');
+ return false;
+ }
+
+ $session_id = $app->db->quote($session_id);
+
+ $now = time();
+ $sql = "SELECT * FROM remote_session WHERE remote_session = '$session_id' AND tstamp >= $now";
+ $session = $app->db->queryOneRecord($sql);
+ if($session['remote_userid'] > 0) {
+ return $session;
+ } else {
+ $this->server->fault('session_does_not_exist','The Session is expired or does not exist.');
+ return false;
+ }
+ }
+
+ //---
+
+
+ /**
+ * Gets sites by $sys_userid & $sys_groupid
+ * @param int session id
+ * @param int user id
+ * @param array list of groups
+ * @return mixed array with sites by user
+ * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+ public function client_get_sites_by_user($session_id, $sys_userid, $sys_groupid) {
+ global $app;
+ if(!$this->checkPerm($session_id, 'client_get_sites_by_user')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $sys_userid = intval($sys_userid);
+ $sys_groupid = explode(',', $sys_groupid);
+ $new_group = array();
+ foreach($sys_groupid as $group_id) {
+ $new_group[] = intval( $group_id);
+ }
+ $group_list = implode(',', $new_group);
+ $sql ="SELECT domain, domain_id, document_root, active FROM web_domain WHERE ( (sys_userid = $sys_userid AND sys_perm_user LIKE '%r%') OR (sys_groupid IN ($group_list) AND sys_perm_group LIKE '%r%') OR sys_perm_other LIKE '%r%') AND type = 'vhost'";
+ $result = $app->db->queryAllRecords($sql);
+ if(isset($result)) {
+ return $result;
+ } else {
+ $this->server->fault('no_client_found', 'There is no site for this user');
+ return false;
+ }
+ }
+
+ /**
+ * Change domains status
+ * @param int session id
+ * @param int site id
+ * @param string active or inactive string
+ * @return mixed false if error
+ * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+
+ public function sites_web_domain_set_status($session_id, $primary_id, $status) {
+ global $app;
+ if(!$this->checkPerm($session_id, 'sites_web_domain_set_status')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ if(in_array($status, array('active', 'inactive'))) {
+ if ($status == 'active') {
+ $status = 'y';
+ } else {
+ $status = 'n';
+ }
+ $sql = "UPDATE web_domain SET active = '$status' WHERE domain_id = ".intval($primary_id);
+ $app->db->query($sql);
+ $result = $app->db->affectedRows();
+ return $result;
+ } else {
+ $this->server->fault('status_undefined', 'The status is not available');
+ return false;
+ }
+ }
+
+ /**
+ * Get sys_user information by username
+ * @param int session id
+ * @param string user's name
+ * @return mixed false if error
+ * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+ public function client_get_by_username($session_id, $username) {
+ global $app;
+ if(!$this->checkPerm($session_id, 'client_get_by_username')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $username = $app->db->quote($username);
+ $rec = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE username = '".$username."'");
+ if (isset($rec)) {
+ return $rec;
+ } else {
+ $this->server->fault('no_client_found', 'There is no user account for this user name.');
+ return false;
+ }
+ }
+
+ /**
+ * Changes client password
+ *
+ * @param int session id
+ * @param int client id
+ * @param string new password
+ * @return bool true if success
+ * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ *
+ */
+ public function client_change_password($session_id, $client_id, $new_password) {
+ global $app;
+
+ if(!$this->checkPerm($session_id, 'client_change_password')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $client_id = intval($client_id);
+ $client = $app->db->queryOneRecord("SELECT client_id FROM client WHERE client_id = ".$client_id);
+ if($client['client_id'] > 0) {
+ $new_password = $app->db->quote($new_password);
+ $sql = "UPDATE client SET password = md5('".($new_password)."') WHERE client_id = ".$client_id;
+ $app->db->query($sql);
+ $sql = "UPDATE sys_user SET passwort = md5('".($new_password)."') WHERE client_id = ".$client_id;
+ $app->db->query($sql);
+ return true;
+ } else {
+ $this->server->fault('no_client_found', 'There is no user account for this client_id');
+ return false;
+ }
+ }
+
+ public function mail_domain_get_by_domain($session_id, $domain) {
+ global $app;
+ if(!$this->checkPerm($session_id, 'mail_domain_get_by_domain')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ if (!empty($domain_id)) {
+ $domain = $app->db->quote($domain);
+ $sql = "SELECT * FROM mail_domain WHERE domain = $domain";
+ $result = $app->db->queryAllRecords($sql);
+ return $result;
+ }
+ return false;
+ }
+
+
+
+ /**
+ * Get a list of functions
+ * @param int session id
+ * @return mixed array of the available functions
+ * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+ public function get_function_list($session_id)
+ {
+ if(!$this->checkPerm($session_id, 'get_function_list')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ return get_class_methods($this);
+ }
+
+ /**
+ * Get all databases by user
+ * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+ public function sites_database_get_all_by_user($session_id, $client_id)
+ {
+ global $app;
+ if(!$this->checkPerm($session_id, 'sites_database_get_all_by_user')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $client_id = intval($client_id);
+ $sql = "SELECT database_id, database_name, database_user, database_password FROM web_database WHERE sys_userid = $client_id ";
+ $all = $app->db->queryAllRecords($sql);
+ return $all;
+ }
+
+ /**
+ * Get all client templates
+ * @param int session id
+ * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+ public function client_templates_get_all($session_id) {
+ global $app;
+ if(!$this->checkPerm($session_id, 'client_templates_get_all')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ $sql = "SELECT * FROM client_template";
+ $result = $app->db->queryAllRecords($sql);
+ return $result;
+ }
+
+ /**
+ * Get all DNS zone by user
+ *@author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+ public function dns_zone_get_by_user($session_id, $client_id, $server_id) {
+ global $app;
+ if(!$this->checkPerm($session_id, 'dns_zone_get')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ if (!empty($client_id) && !empty($server_id)) {
+ $server_id = intval($server_id);
+ $client_id = intval($client_id);
+ $sql = "SELECT id, origin FROM dns_soa d INNER JOIN sys_user s on(d.sys_groupid = s.default_group) WHERE client_id = $client_id AND server_id = $server_id";
+ $result = $app->db->queryAllRecords($sql);
+ return $result;
+ }
+ return false;
+ }
+
+
+ /**
+ * Changes DNS zone status
+ * @param int session id
+ * @param int dns soa id
+ * @param string status active or inactive string
+ * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
+ */
+
+ public function dns_zone_set_status($session_id, $primary_id, $status) {
+ global $app;
+ if(!$this->checkPerm($session_id, 'dns_zone_set_status')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ if(in_array($status, array('active', 'inactive'))) {
+ if ($status == 'active') {
+ $status = 'Y';
+ } else {
+ $status = 'N';
+ }
+ $sql = "UPDATE dns_soa SET active = '$status' WHERE id = ".intval($primary_id);
+ $app->db->query($sql);
+ $result = $app->db->affectedRows();
+ return $result;
+ } else {
+ $this->server->fault('status_undefined', 'The status is not available');
+ return false;
+ }
+ }
+
+ public function mail_domain_set_status($session_id, $primary_id, $status) {
+ global $app;
+ if(!$this->checkPerm($session_id, 'mail_domain_set_status')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+ if(in_array($status, array('active', 'inactive'))) {
+ if ($status == 'active') {
+ $status = 'y';
+ } else {
+ $status = 'n';
+ }
+ $sql = "UPDATE mail_domain SET active = '$status' WHERE domain_id = ".intval($primary_id);
+ $app->db->query($sql);
+ $result = $app->db->affectedRows();
+ return $result;
+ } else {
+ $this->server->fault('status_undefined', 'The status is not available');
+ return false;
+ }
+ }
+}
?>
\ No newline at end of file
diff --git a/interface/lib/classes/session.inc.php b/interface/lib/classes/session.inc.php
index 34dfaa5..9c9fdf0 100644
--- a/interface/lib/classes/session.inc.php
+++ b/interface/lib/classes/session.inc.php
@@ -1,129 +1,129 @@
-<?php
-
-/*
-Copyright (c) 2010, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class session {
-
- private $session_array = array();
- private $db;
-
- function __construct() {
- $this->db = new db;
- }
-
- function open ($save_path, $session_name) {
- return true;
- }
-
- function close () {
-
- if (!empty($this->session_array)) {
- $result = $this->gc(ini_get('session.gc_maxlifetime'));
- return $result;
- }
- return false;
- }
-
- function read ($session_id) {
-
- $rec = $this->db->queryOneRecord("SELECT * FROM sys_session WHERE session_id = '".$this->db->quote($session_id)."'");
-
- if (is_array($rec)) {
- $this->session_array = $rec;
- return $this->session_array['session_data'];
- } else {
- return '';
- }
- }
-
- function write ($session_id, $session_data) {
-
- if (!empty($this->session_array) && $this->session_array['session_id'] != $session_id) {
- $this->session_array = array();
- }
-
- // Dont write session_data to DB if session data has not been changed after reading it.
- if(isset($this->session_array['session_data']) && $this->session_array['session_data'] != '' && $this->session_array['session_data'] == $session_data) {
- $session_id = $this->db->quote($session_id);
- $last_updated = date('Y-m-d H:i:s');
- $this->db->query("UPDATE sys_session SET last_updated = '$last_updated' WHERE session_id = '$session_id'");
- return true;
- }
-
-
- if ($this->session_array['session_id'] == '') {
- $session_id = $this->db->quote($session_id);
- $date_created = date('Y-m-d H:i:s');
- $last_updated = date('Y-m-d H:i:s');
- $session_data = $this->db->quote($session_data);
- $sql = "INSERT INTO sys_session (session_id,date_created,last_updated,session_data) VALUES ('$session_id','$date_created','$last_updated','$session_data')";
- $this->db->query($sql);
-
- } else {
- $session_id = $this->db->quote($session_id);
- $last_updated = date('Y-m-d H:i:s');
- $session_data = $this->db->quote($session_data);
- $sql = "UPDATE sys_session SET last_updated = '$last_updated', session_data = '$session_data' WHERE session_id = '$session_id'";
- $this->db->query($sql);
-
- }
-
- return true;
- }
-
- function destroy ($session_id) {
-
- $session_id = $this->db->quote($session_id);
- $sql = "DELETE FROM sys_session WHERE session_id = '$session_id'";
- $this->db->query($sql);
-
- return true;
- }
-
- function gc ($max_lifetime) {
-
- $real_now = date('Y-m-d H:i:s');
- $dt1 = strtotime("$real_now -$max_lifetime seconds");
- $dt2 = date('Y-m-d H:i:s', $dt1);
-
- $sql = "DELETE FROM sys_session WHERE last_updated < '$dt2'";
- $this->db->query($sql);
-
- return true;
-
- }
-
- function __destruct () {
- @session_write_close();
-
- }
-
-}
-
+<?php
+
+/*
+Copyright (c) 2010, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class session {
+
+ private $session_array = array();
+ private $db;
+
+ function __construct() {
+ $this->db = new db;
+ }
+
+ function open ($save_path, $session_name) {
+ return true;
+ }
+
+ function close () {
+
+ if (!empty($this->session_array)) {
+ $result = $this->gc(ini_get('session.gc_maxlifetime'));
+ return $result;
+ }
+ return false;
+ }
+
+ function read ($session_id) {
+
+ $rec = $this->db->queryOneRecord("SELECT * FROM sys_session WHERE session_id = '".$this->db->quote($session_id)."'");
+
+ if (is_array($rec)) {
+ $this->session_array = $rec;
+ return $this->session_array['session_data'];
+ } else {
+ return '';
+ }
+ }
+
+ function write ($session_id, $session_data) {
+
+ if (!empty($this->session_array) && $this->session_array['session_id'] != $session_id) {
+ $this->session_array = array();
+ }
+
+ // Dont write session_data to DB if session data has not been changed after reading it.
+ if(isset($this->session_array['session_data']) && $this->session_array['session_data'] != '' && $this->session_array['session_data'] == $session_data) {
+ $session_id = $this->db->quote($session_id);
+ $last_updated = date('Y-m-d H:i:s');
+ $this->db->query("UPDATE sys_session SET last_updated = '$last_updated' WHERE session_id = '$session_id'");
+ return true;
+ }
+
+
+ if ($this->session_array['session_id'] == '') {
+ $session_id = $this->db->quote($session_id);
+ $date_created = date('Y-m-d H:i:s');
+ $last_updated = date('Y-m-d H:i:s');
+ $session_data = $this->db->quote($session_data);
+ $sql = "INSERT INTO sys_session (session_id,date_created,last_updated,session_data) VALUES ('$session_id','$date_created','$last_updated','$session_data')";
+ $this->db->query($sql);
+
+ } else {
+ $session_id = $this->db->quote($session_id);
+ $last_updated = date('Y-m-d H:i:s');
+ $session_data = $this->db->quote($session_data);
+ $sql = "UPDATE sys_session SET last_updated = '$last_updated', session_data = '$session_data' WHERE session_id = '$session_id'";
+ $this->db->query($sql);
+
+ }
+
+ return true;
+ }
+
+ function destroy ($session_id) {
+
+ $session_id = $this->db->quote($session_id);
+ $sql = "DELETE FROM sys_session WHERE session_id = '$session_id'";
+ $this->db->query($sql);
+
+ return true;
+ }
+
+ function gc ($max_lifetime) {
+
+ $real_now = date('Y-m-d H:i:s');
+ $dt1 = strtotime("$real_now -$max_lifetime seconds");
+ $dt2 = date('Y-m-d H:i:s', $dt1);
+
+ $sql = "DELETE FROM sys_session WHERE last_updated < '$dt2'";
+ $this->db->query($sql);
+
+ return true;
+
+ }
+
+ function __destruct () {
+ @session_write_close();
+
+ }
+
+}
+
?>
\ No newline at end of file
diff --git a/interface/lib/classes/tpl_cache.inc.php b/interface/lib/classes/tpl_cache.inc.php
index 18e7d38..a399946 100644
--- a/interface/lib/classes/tpl_cache.inc.php
+++ b/interface/lib/classes/tpl_cache.inc.php
@@ -1,186 +1,186 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP version 4.0 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 2002 Active Fish Group |
-// +----------------------------------------------------------------------+
-// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> |
-// +----------------------------------------------------------------------+
-//
-// $Id: cache.php,v 1.1 2003/07/08 12:32:06 platinum Exp $
-
-/**
- * Class uses all of vlibTemplate's functionality but caches the template files.
- * It creates an identical tree structure to your filesystem but with cached files.
- *
- * @author Kelvin Jones <kelvin@kelvinjones.co.uk>
- * @since 22/02/2002
- * @package vLIB
- * @access public
- */
-
-class tplc extends tpl {
-
-/*-----------------------------------------------------------------------------\
-| DO NOT TOUCH ANYTHING IN THIS CLASS, IT MAY NOT WORK OTHERWISE |
-\-----------------------------------------------------------------------------*/
-
- var $_cache = 1; // tells vlibTemplate that we're caching
- var $_cachefile; // full path to current cache file (even if it doesn't yet exist)
- var $_cacheexists; // has this file been cached before
- var $_cachefilelocked; // is this file currently locked whilst writing
- var $_cachefiledir; // dir of current cache file
- var $_clearcache = 0;
-
-
- /**
- * FUNCTION: clearCache
- * will unset a file, and set $this->_cacheexists to 0.
- *
- * @access public
- * @return boolean
- */
- function clearCache() {
- $this->_clearcache = 1;
- return true;
- }
-
- /**
- * FUNCTION: recache
- * alias for clearCache().
- *
- * @access public
- * @return boolean
- */
- function recache() {
- return $this->clearCache();
- }
-
- /**
- * FUNCTION: setCacheLifeTime
- * sets the lifetime of the cached file
- *
- * @param int $int number of seconds to set lifetime to
- * @access public
- * @return boolean
- */
- function setCacheLifeTime($int = null) {
- if ($int == null || !is_int($int)) return false;
- if ($int == 0) $int = 60;
- if ($int == -1) $int = 157680000; // set to 5 yrs time
- $this->OPTIONS['CACHE_LIFETIME'] = $int;
- return true;
- }
-
- /**
- * FUNCTION: setCacheExtension
- * sets the extention of the cache file
- *
- * @param str $str name of new cache extention
- * @access public
- * @return boolean
- */
- function setCacheExtension($str = null) {
- if ($str == null || !preg_match('/^[a-z0-9]+$/', strtolower($str))) return false;
- $this->OPTIONS['CACHE_EXTENSION'] = strtolower($str);
- return true;
- }
-
-
-/*----------------------------------------\
- Private Functions
------------------------------------------*/
-
- /**
- * FUNCTION: _checkCache
- * checks if there's a cache, if there is then it will read the cache file as the template.
- */
- function _checkCache ($tmplfile) {
- $this->_cachefile = $this->_getFilename($tmplfile);
- if ($this->_clearcache) {
- if (file_exists($this->_cachefile)) unlink($this->_cachefile);
- return false;
- }
-
- if (file_exists($this->_cachefile)) {
- $this->_cacheexists = 1;
-
- // if it's expired
- if ((filemtime($this->_cachefile) + $this->OPTIONS['CACHE_LIFETIME']) < date ('U')
- || filectime($this->_cachefile) < filemtime($tmplfile)) {
- $this->_cacheexists = 0;
- return false; // so that we know to recache
- }
- else {
- return true;
- }
-
- } else {
- $this->_cacheexists = 0;
- return false;
- }
- }
-
-
- /**
- * FUNCTION: _getFilename
- * gets the full pathname for the cached file
- *
- */
- function _getFilename($tmplfile) {
- return $this->OPTIONS['CACHE_DIRECTORY'].'/'.md5('vlibCachestaR'.realpath($tmplfile)).'.'.$this->OPTIONS['CACHE_EXTENSION'];
- }
-
- /**
- * FUNCTION: _createCache
- * creates the cached file
- *
- */
- function _createCache($data) {
- $cache_file = $this->_cachefile;
- if(!$this->_prepareDirs($cache_file)) return false; // prepare all of the directories
-
- $f = fopen ($cache_file, "w");
- flock($f, 2); // set an EXclusive lock
- if (!$f) vlibTemplateError::raiseError('VT_ERROR_NO_CACHE_WRITE',KILL,$cache_file);
- fputs ($f, $data); // write the parsed string from vlibTemplate
- flock($f, 3); // UNlock file
- fclose ($f);
- touch ($cache_file);
- return true;
- }
-
- /**
- * FUNCTION: _prepareDirs
- * prepares the directory structure
- *
- */
- function _prepareDirs($file) {
- if (empty($file)) die('no filename'); //do error in future
- $filepath = dirname($file);
- if (is_dir($filepath)) return true;
-
- $dirs = preg_split('/[\\/]/', $filepath);
- $currpath;
- foreach ($dirs as $dir) {
- $currpath .= $dir .'/';
- $type = @filetype($currpath);
-
- ($type=='link') and $type = 'dir';
- if ($type != 'dir' && $type != false && !empty($type)) {
- vlibTemplateError::raiseError('VT_ERROR_WRONG_CACHE_TYPE',KILL,'directory: '.$currpath.', type: '.$type);
- }
- if ($type == 'dir') {
- continue;
- }
- else {
- $s = @mkdir($currpath, 0775);
- if (!$s) vlibTemplateError::raiseError('VT_ERROR_CACHE_MKDIR_FAILURE',KILL,'directory: '.$currpath);
- }
- }
- return true;
- }
-
-} // -- end vlibTemplateCache class
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP version 4.0 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 2002 Active Fish Group |
+// +----------------------------------------------------------------------+
+// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> |
+// +----------------------------------------------------------------------+
+//
+// $Id: cache.php,v 1.1 2003/07/08 12:32:06 platinum Exp $
+
+/**
+ * Class uses all of vlibTemplate's functionality but caches the template files.
+ * It creates an identical tree structure to your filesystem but with cached files.
+ *
+ * @author Kelvin Jones <kelvin@kelvinjones.co.uk>
+ * @since 22/02/2002
+ * @package vLIB
+ * @access public
+ */
+
+class tplc extends tpl {
+
+/*-----------------------------------------------------------------------------\
+| DO NOT TOUCH ANYTHING IN THIS CLASS, IT MAY NOT WORK OTHERWISE |
+\-----------------------------------------------------------------------------*/
+
+ var $_cache = 1; // tells vlibTemplate that we're caching
+ var $_cachefile; // full path to current cache file (even if it doesn't yet exist)
+ var $_cacheexists; // has this file been cached before
+ var $_cachefilelocked; // is this file currently locked whilst writing
+ var $_cachefiledir; // dir of current cache file
+ var $_clearcache = 0;
+
+
+ /**
+ * FUNCTION: clearCache
+ * will unset a file, and set $this->_cacheexists to 0.
+ *
+ * @access public
+ * @return boolean
+ */
+ function clearCache() {
+ $this->_clearcache = 1;
+ return true;
+ }
+
+ /**
+ * FUNCTION: recache
+ * alias for clearCache().
+ *
+ * @access public
+ * @return boolean
+ */
+ function recache() {
+ return $this->clearCache();
+ }
+
+ /**
+ * FUNCTION: setCacheLifeTime
+ * sets the lifetime of the cached file
+ *
+ * @param int $int number of seconds to set lifetime to
+ * @access public
+ * @return boolean
+ */
+ function setCacheLifeTime($int = null) {
+ if ($int == null || !is_int($int)) return false;
+ if ($int == 0) $int = 60;
+ if ($int == -1) $int = 157680000; // set to 5 yrs time
+ $this->OPTIONS['CACHE_LIFETIME'] = $int;
+ return true;
+ }
+
+ /**
+ * FUNCTION: setCacheExtension
+ * sets the extention of the cache file
+ *
+ * @param str $str name of new cache extention
+ * @access public
+ * @return boolean
+ */
+ function setCacheExtension($str = null) {
+ if ($str == null || !preg_match('/^[a-z0-9]+$/', strtolower($str))) return false;
+ $this->OPTIONS['CACHE_EXTENSION'] = strtolower($str);
+ return true;
+ }
+
+
+/*----------------------------------------\
+ Private Functions
+-----------------------------------------*/
+
+ /**
+ * FUNCTION: _checkCache
+ * checks if there's a cache, if there is then it will read the cache file as the template.
+ */
+ function _checkCache ($tmplfile) {
+ $this->_cachefile = $this->_getFilename($tmplfile);
+ if ($this->_clearcache) {
+ if (file_exists($this->_cachefile)) unlink($this->_cachefile);
+ return false;
+ }
+
+ if (file_exists($this->_cachefile)) {
+ $this->_cacheexists = 1;
+
+ // if it's expired
+ if ((filemtime($this->_cachefile) + $this->OPTIONS['CACHE_LIFETIME']) < date ('U')
+ || filectime($this->_cachefile) < filemtime($tmplfile)) {
+ $this->_cacheexists = 0;
+ return false; // so that we know to recache
+ }
+ else {
+ return true;
+ }
+
+ } else {
+ $this->_cacheexists = 0;
+ return false;
+ }
+ }
+
+
+ /**
+ * FUNCTION: _getFilename
+ * gets the full pathname for the cached file
+ *
+ */
+ function _getFilename($tmplfile) {
+ return $this->OPTIONS['CACHE_DIRECTORY'].'/'.md5('vlibCachestaR'.realpath($tmplfile)).'.'.$this->OPTIONS['CACHE_EXTENSION'];
+ }
+
+ /**
+ * FUNCTION: _createCache
+ * creates the cached file
+ *
+ */
+ function _createCache($data) {
+ $cache_file = $this->_cachefile;
+ if(!$this->_prepareDirs($cache_file)) return false; // prepare all of the directories
+
+ $f = fopen ($cache_file, "w");
+ flock($f, 2); // set an EXclusive lock
+ if (!$f) vlibTemplateError::raiseError('VT_ERROR_NO_CACHE_WRITE',KILL,$cache_file);
+ fputs ($f, $data); // write the parsed string from vlibTemplate
+ flock($f, 3); // UNlock file
+ fclose ($f);
+ touch ($cache_file);
+ return true;
+ }
+
+ /**
+ * FUNCTION: _prepareDirs
+ * prepares the directory structure
+ *
+ */
+ function _prepareDirs($file) {
+ if (empty($file)) die('no filename'); //do error in future
+ $filepath = dirname($file);
+ if (is_dir($filepath)) return true;
+
+ $dirs = preg_split('/[\\/]/', $filepath);
+ $currpath;
+ foreach ($dirs as $dir) {
+ $currpath .= $dir .'/';
+ $type = @filetype($currpath);
+
+ ($type=='link') and $type = 'dir';
+ if ($type != 'dir' && $type != false && !empty($type)) {
+ vlibTemplateError::raiseError('VT_ERROR_WRONG_CACHE_TYPE',KILL,'directory: '.$currpath.', type: '.$type);
+ }
+ if ($type == 'dir') {
+ continue;
+ }
+ else {
+ $s = @mkdir($currpath, 0775);
+ if (!$s) vlibTemplateError::raiseError('VT_ERROR_CACHE_MKDIR_FAILURE',KILL,'directory: '.$currpath);
+ }
+ }
+ return true;
+ }
+
+} // -- end vlibTemplateCache class
?>
\ No newline at end of file
diff --git a/interface/lib/classes/tpl_error.inc.php b/interface/lib/classes/tpl_error.inc.php
index 29a9ae0..5f63609 100644
--- a/interface/lib/classes/tpl_error.inc.php
+++ b/interface/lib/classes/tpl_error.inc.php
@@ -1,92 +1,92 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP version 4.0 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 2002 Active Fish Group |
-// +----------------------------------------------------------------------+
-// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> |
-// +----------------------------------------------------------------------+
-//
-// $Id: error.php,v 1.1 2003/07/08 12:32:06 platinum Exp $
-
-define('FATAL', E_USER_ERROR);
-define('WARNING', E_USER_WARNING);
-define('NOTICE', E_USER_NOTICE);
-define('KILL', -1); // used for killing inside parsing.
-
-/**
- * Class is used by vlibTemplate.
- * It handles all of the error reporting for vlibTemplate.
- *
- * @author Kelvin Jones <kelvin@kelvinjones.co.uk>
- * @since 06/03/2002
- * @package vLIB
- * @access private
- */
-
-class vlibTemplateError {
-
-/*-----------------------------------------------------------------------------\
-| DO NOT TOUCH ANYTHING IN THIS CLASS IT MAY NOT WORK OTHERWISE |
-\-----------------------------------------------------------------------------*/
-
- function raiseError ($code, $level = null, $extra=null) {
- if (!($level & error_reporting())&& $level != KILL) return; // binary AND checks for reporting level
-
- $error_codes = array(
- 'VT_ERROR_NOFILE' => 'vlibTemplate Error: Template ('.$extra.') file not found.',
- 'VT_ERROR_PARSE' => 'vlibTemplate Error: Parse error!<br />To debug this file, use vlibTemplateDebug instead of vlibTemplate in the class instantiation(i.e. new vlibTemplateDebug).',
- 'VT_NOTICE_INVALID_TAG' => 'vlibTemplate Notice: Invalid tag ('.$extra.').',
- 'VT_ERROR_INVALID_TAG' => 'vlibTemplate Error: Invalid tag ('.$extra.'). To disable this you must turn of the STRICT option.',
- 'VT_NOTICE_INVALID_ATT' => 'vlibTemplate Notice: Invalid attribute ('.$extra.').',
- 'VT_WARNING_INVALID_ARR' => 'vlibTemplate Warning: Invalid loop structure passed to vlibTemplate::setLoop() (loop name: '.$extra.').',
- 'VT_ERROR_INVALID_ERROR_CODE' => 'vlibTemplate Error: Invalid error raised.',
- 'VT_ERROR_WRONG_NO_PARAMS' => 'vlibTemplate Warning: Wrond parameter count passed to '.$extra.'.',
- 'VT_ERROR_UNKNOWN_VAR' => 'vlibTemplate Error: template var not found.',
- 'VT_ERROR_NO_CACHE_WRITE' => 'vlibTemplate Error: unable to write to cache file ('.$extra.').',
- 'VT_ERROR_WRONG_CACHE_TYPE' => 'vlibTemplate Error: non-directory file found in cache root with same name as directory ('.$extra.').',
- 'VT_ERROR_CACHE_MKDIR_FAILURE' => 'vlibTemplate Error: failed to create directory in cache root ('.$extra.').',
- 'VT_WARNING_NOT_CACHE_OBJ' => 'vlibTemplate Warning: called a vlibTemplateCache function ('.$extra.') without instantiating the vlibTemplateCache class.',
- 'VT_WARNING_LOOP_NOT_SET' => 'vlibTemplate Warning: called vlibTemplate::addRow() or vlibTemplate::addLoop() with an invalid loop name.',
- 'VT_WARNING_INVALID_RESOURCE' => 'vlibTemplate Warning: Invalid resource type passed to vlibTemplate::setDbLoop() for Db "'.$extra.'".',
- 'VT_WARNING_INVALID_LOOP_DB' => 'vlibTemplate Warning: Invalid Db type passed to vlibTemplate::setDbLoop(), "'.$extra.'" not currently available.',
- 'VT_WARNING_INVALID_IF_OP' => 'vlibTemplate Warning: The Operator "'.$extra.'" is not supported by vlibTemplate.'
- );
-
- $error_levels = array(
- 'VT_ERROR_NOFILE' => FATAL,
- 'VT_ERROR_PARSE' => FATAL,
- 'VT_NOTICE_INVALID_TAG' => NOTICE,
- 'VT_ERROR_INVALID_TAG' => FATAL,
- 'VT_NOTICE_INVALID_ATT' => NOTICE,
- 'VT_WARNING_INVALID_ARR' => WARNING,
- 'VT_ERROR_INVALID_ERROR_CODE' => FATAL,
- 'VT_ERROR_WRONG_NO_PARAMS' => WARNING,
- 'VT_ERROR_UNKNOWN_VAR' => WARNING,
- 'VT_ERROR_NO_CACHE_WRITE' => KILL,
- 'VT_ERROR_WRONG_CACHE_TYPE' => KILL,
- 'VT_ERROR_CACHE_MKDIR_FAILURE' => KILL,
- 'VT_WARNING_NOT_CACHE_OBJ' => WARNING,
- 'VT_WARNING_LOOP_NOT_SET' => WARNING,
- 'VT_WARNING_INVALID_RESOURCE' => WARNING,
- 'VT_WARNING_INVALID_LOOP_DB' => WARNING,
- 'VT_WARNING_INVALID_IF_OP' => WARNING
- );
-
- ($level === null) and $level = $error_levels[$code];
- if ($level == KILL) {
- die ($error_codes[$code]);
- }
-
- if ($msg = $error_codes[$code]) {
- trigger_error($msg, $level);
- } else {
- $level = $error_levels['VT_ERROR_INVALID_ERROR_CODE'];
- $msg = $error_codes['VT_ERROR_INVALID_ERROR_CODE'];
- trigger_error($msg, $level);
- }
- return;
- }
-}
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP version 4.0 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 2002 Active Fish Group |
+// +----------------------------------------------------------------------+
+// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> |
+// +----------------------------------------------------------------------+
+//
+// $Id: error.php,v 1.1 2003/07/08 12:32:06 platinum Exp $
+
+define('FATAL', E_USER_ERROR);
+define('WARNING', E_USER_WARNING);
+define('NOTICE', E_USER_NOTICE);
+define('KILL', -1); // used for killing inside parsing.
+
+/**
+ * Class is used by vlibTemplate.
+ * It handles all of the error reporting for vlibTemplate.
+ *
+ * @author Kelvin Jones <kelvin@kelvinjones.co.uk>
+ * @since 06/03/2002
+ * @package vLIB
+ * @access private
+ */
+
+class vlibTemplateError {
+
+/*-----------------------------------------------------------------------------\
+| DO NOT TOUCH ANYTHING IN THIS CLASS IT MAY NOT WORK OTHERWISE |
+\-----------------------------------------------------------------------------*/
+
+ function raiseError ($code, $level = null, $extra=null) {
+ if (!($level & error_reporting())&& $level != KILL) return; // binary AND checks for reporting level
+
+ $error_codes = array(
+ 'VT_ERROR_NOFILE' => 'vlibTemplate Error: Template ('.$extra.') file not found.',
+ 'VT_ERROR_PARSE' => 'vlibTemplate Error: Parse error!<br />To debug this file, use vlibTemplateDebug instead of vlibTemplate in the class instantiation(i.e. new vlibTemplateDebug).',
+ 'VT_NOTICE_INVALID_TAG' => 'vlibTemplate Notice: Invalid tag ('.$extra.').',
+ 'VT_ERROR_INVALID_TAG' => 'vlibTemplate Error: Invalid tag ('.$extra.'). To disable this you must turn of the STRICT option.',
+ 'VT_NOTICE_INVALID_ATT' => 'vlibTemplate Notice: Invalid attribute ('.$extra.').',
+ 'VT_WARNING_INVALID_ARR' => 'vlibTemplate Warning: Invalid loop structure passed to vlibTemplate::setLoop() (loop name: '.$extra.').',
+ 'VT_ERROR_INVALID_ERROR_CODE' => 'vlibTemplate Error: Invalid error raised.',
+ 'VT_ERROR_WRONG_NO_PARAMS' => 'vlibTemplate Warning: Wrond parameter count passed to '.$extra.'.',
+ 'VT_ERROR_UNKNOWN_VAR' => 'vlibTemplate Error: template var not found.',
+ 'VT_ERROR_NO_CACHE_WRITE' => 'vlibTemplate Error: unable to write to cache file ('.$extra.').',
+ 'VT_ERROR_WRONG_CACHE_TYPE' => 'vlibTemplate Error: non-directory file found in cache root with same name as directory ('.$extra.').',
+ 'VT_ERROR_CACHE_MKDIR_FAILURE' => 'vlibTemplate Error: failed to create directory in cache root ('.$extra.').',
+ 'VT_WARNING_NOT_CACHE_OBJ' => 'vlibTemplate Warning: called a vlibTemplateCache function ('.$extra.') without instantiating the vlibTemplateCache class.',
+ 'VT_WARNING_LOOP_NOT_SET' => 'vlibTemplate Warning: called vlibTemplate::addRow() or vlibTemplate::addLoop() with an invalid loop name.',
+ 'VT_WARNING_INVALID_RESOURCE' => 'vlibTemplate Warning: Invalid resource type passed to vlibTemplate::setDbLoop() for Db "'.$extra.'".',
+ 'VT_WARNING_INVALID_LOOP_DB' => 'vlibTemplate Warning: Invalid Db type passed to vlibTemplate::setDbLoop(), "'.$extra.'" not currently available.',
+ 'VT_WARNING_INVALID_IF_OP' => 'vlibTemplate Warning: The Operator "'.$extra.'" is not supported by vlibTemplate.'
+ );
+
+ $error_levels = array(
+ 'VT_ERROR_NOFILE' => FATAL,
+ 'VT_ERROR_PARSE' => FATAL,
+ 'VT_NOTICE_INVALID_TAG' => NOTICE,
+ 'VT_ERROR_INVALID_TAG' => FATAL,
+ 'VT_NOTICE_INVALID_ATT' => NOTICE,
+ 'VT_WARNING_INVALID_ARR' => WARNING,
+ 'VT_ERROR_INVALID_ERROR_CODE' => FATAL,
+ 'VT_ERROR_WRONG_NO_PARAMS' => WARNING,
+ 'VT_ERROR_UNKNOWN_VAR' => WARNING,
+ 'VT_ERROR_NO_CACHE_WRITE' => KILL,
+ 'VT_ERROR_WRONG_CACHE_TYPE' => KILL,
+ 'VT_ERROR_CACHE_MKDIR_FAILURE' => KILL,
+ 'VT_WARNING_NOT_CACHE_OBJ' => WARNING,
+ 'VT_WARNING_LOOP_NOT_SET' => WARNING,
+ 'VT_WARNING_INVALID_RESOURCE' => WARNING,
+ 'VT_WARNING_INVALID_LOOP_DB' => WARNING,
+ 'VT_WARNING_INVALID_IF_OP' => WARNING
+ );
+
+ ($level === null) and $level = $error_levels[$code];
+ if ($level == KILL) {
+ die ($error_codes[$code]);
+ }
+
+ if ($msg = $error_codes[$code]) {
+ trigger_error($msg, $level);
+ } else {
+ $level = $error_levels['VT_ERROR_INVALID_ERROR_CODE'];
+ $msg = $error_codes['VT_ERROR_INVALID_ERROR_CODE'];
+ trigger_error($msg, $level);
+ }
+ return;
+ }
+}
?>
\ No newline at end of file
diff --git a/interface/lib/classes/validate_dns.inc.php b/interface/lib/classes/validate_dns.inc.php
index 4606a0c..faab6a0 100644
--- a/interface/lib/classes/validate_dns.inc.php
+++ b/interface/lib/classes/validate_dns.inc.php
@@ -1,287 +1,287 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- DNS validation
-*/
-
-class validate_dns {
-
-function validate_field($field, $area, $zoneid, $wildcard_allowed = 1){
- //$desc: Name, Data, RP mbox, RP txtref, SRV target, Zone origin, Name server, Admin email
- global $app, $conf;
-
- switch ($area) {
- case "Name":
- $desc = $app->tform->wordbook['name_txt'];
- break;
- case "Data":
- $desc = $app->tform->wordbook['data_txt'];
- break;
- case "RP mbox":
- $desc = $app->tform->wordbook['rp_mbox_txt'];
- break;
- case "RP txtref":
- $desc = $app->tform->wordbook['rp_txtref_txt'];
- break;
- case "SRV target":
- $desc = $app->tform->wordbook['srv_target_txt'];
- break;
- case "Zone origin":
- $desc = $app->tform->wordbook['zone_origin_txt'];
- break;
- case "Name server":
- $desc = $app->tform->wordbook['ns_txt'];
- break;
- case "Admin email":
- $desc = $app->tform->wordbook['mbox_txt'];
- break;
- }
-
- $error = '';
-
- $valid_characters = "*ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-_";
-
- if(strlen($field) > 255) $error .= $desc." ".$app->tform->wordbook['error_255_characters']."<br>\r\n";
-
- $parts = explode(".", $field);
- $i = 0;
- $empty = 0;
- foreach ($parts as $part){
- $i++;
-
- if(trim($part) == '') $empty += 1;
-
- if(strlen($part) > 63) $error .= $desc." ".$app->tform->wordbook['error_63_characters']."<br>\r\n";
-
- if(strspn($part, $valid_characters) != strlen($part)) $error .= $desc." ".$app->tform->wordbook['error_invalid_characters']."<br>\r\n";
-
- if(substr($part, 0, 1) == '-') $error .= $desc." ".$app->tform->wordbook['error_hyphen_begin']."<br>\r\n";
- if(substr($part, -1) == '-') $error .= $desc." ".$app->tform->wordbook['error_hyphen_end']."<br>\r\n";
-
- if(strstr($part, "*")){
- if($wildcard_allowed){
- if($i != 1) $error .= $desc." ".$app->tform->wordbook['error_wildcard_non_initial_part']."<br>\r\n";
-
- if($part != "*") $error .= $desc." ".$app->tform->wordbook['error_wildcard_mix']."<br>\r\n";
- } else {
- $error .= $desc." ".$app->tform->wordbook['error_no_wildcard_allowed']."<br>\r\n";
- }
- }
- }
-
- if(substr($field, -1) == '.'){
- if($i > 2 && $empty > 1) $error .= $desc." ".$app->tform->wordbook['error_invalid_characters']."<br>\r\n";
- } else {
- if($empty > 0 && $field != '') $error .= $desc." ".$app->tform->wordbook['error_invalid_characters']."<br>\r\n";
- }
-
- if(substr($field, -1) == '.' && $area == 'Name'){
- $soa = $app->db->queryOneRecord("SELECT * FROM soa WHERE id = ".$zoneid);
- if(substr($field, (strlen($field) - strlen($soa['origin']))) != $soa['origin']) $error .= $desc." ".$app->tform->wordbook['error_out_of_zone']."<br>\r\n";
- }
-
- return $error;
-}
-
-function validate_rp_data(&$data, $zoneid){
- global $app, $conf;
- $error = '';
- $fields = explode(" ", trim($data));
- if(count($fields) != 2) return $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_invalid_rp']."<br>\r\n";
- $mbox = $fields[0];
- $txtref = $fields[1];
-
- $error .= $this->validate_field($mbox, 'RP mbox', $zoneid, 0);
- $error .= $this->validate_field($txtref, 'RP txtref', $zoneid, 0);
-
- $data = $mbox." ".$txtref;
- return $error;
-}
-
-function validate_srv_data(&$data, $zoneid){
- global $app, $conf;
- $error = '';
-
- $fields = explode(" ", trim($data));
- if(count($fields) != 3) return $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_invalid_srv']."<br>\r\n";
-
- $weight = $fields[0];
- $port = $fields[1];
- $target = $fields[2];
- if($weight < 0 || $weight > 65535) $error .= $app->tform->wordbook['weight_txt']." (\"<i>" . htmlentities($weight,ENT_QUOTES,$conf["html_content_encoding"])."</i>\") ".$app->tform->wordbook['error_srv_out_of_range']."<br>\r\n";
- if($port < 0 || $port > 65535) $error .= $app->tform->wordbook['port_txt']." (\"<i>".htmlentities($port,ENT_QUOTES,$conf["html_content_encoding"])."</i>\") ".$app->tform->wordbook['error_srv_out_of_range']."<br>\r\n";
-
- $error .= $this->validate_field($target, "SRV target", $zoneid, 0);
-
- $data = (int)$weight." ".(int)$port." ".$target;
- return $error;
-}
-
-function is_integer($value, $fieldname, $zero_allowed = 0){
- global $app, $conf;
-
- $error = '';
-
- if(intval($value) != $value || !is_numeric($value)) $error .= $fieldname." ".$app->tform->wordbook['error_must_be_integer']."<br>\r\n";
- if($value > 2147483647) $error .= $fieldname." ".$app->tform->wordbook['error_must_not_be_greater_than_2147483647']."<br>\r\n";
- if(!$zero_allowed){
- if($value <= 0) $error .= $fieldname." ".$app->tform->wordbook['error_must_be_positive']."<br>\r\n";
- } else {
- if($value < 0) $error .= $fieldname." ".$app->tform->wordbook['error_must_not_be_negative']."<br>\r\n";
- }
-
- return $error;
-}
-
-function validate_rr(&$rr){
- global $app, $conf;
-
- $error = '';
-
- $tmp_rr = $rr;
- foreach($tmp_rr as $key => $val){
- $rr[$key] = trim($val);
- }
- unset($tmp_rr);
-
- $error .= $this->validate_field($rr['name'], 'Name', $rr['zone'], 1);
-
- switch ($rr['type']) {
- case "A":
- $ip_parts = explode(".", $rr['data']);
- if(count($ip_parts) != 4){
- $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_a']."<br>\r\n";
- } else {
- for($n = 0; $n < 4; $n++){
- $q = $ip_parts[$n];
- if(!is_numeric($q) || (int)$q < 0 || (int)$q > 255 || trim($q) !== $q) $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_a']."<br>\r\n";
- }
- }
- $rr['data'] = (int)$ip_parts[0].".".(int)$ip_parts[1].".".(int)$ip_parts[2].".".(int)$ip_parts[3];
- break;
- case "AAAA":
- $valid_chars = "ABCDEFabcdef1234567890:";
-
- if(strspn($rr['data'], $valid_chars) != strlen($rr['data'])) $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_aaaa']."<br>\r\n";
- break;
- case "ALIAS":
- $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
- break;
- case "CNAME":
- $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
- break;
- case "HINFO":
- if(!strchr($rr['data'], ' ')) $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_hinfo']."<br>\r\n";
- break;
- case "MX":
- $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
- $error .= $this->is_integer($rr['aux'], $app->tform->wordbook['aux_txt'], 1);
- break;
- case "NS":
- $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
- break;
- case "PTR":
- $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
- if(substr($rr['data'], -1) != '.') $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_ptr']."<br>\r\n";
- break;
- case "RP":
- $error .= $this->validate_rp_data($rr['data'], $rr['zone']);
- break;
- case "SRV":
- $error .= $this->validate_srv_data($rr['data'], $rr['zone']);
- $error .= $this->is_integer($rr['aux'], $app->tform->wordbook['aux_txt'], 1);
- break;
- case "TXT":
- break;
- }
-
- $error .= $this->is_integer($rr['ttl'], $app->tform->wordbook['ttl_txt']);
-
-
- return $error;
-}
-
-function validate_soa(&$soa){
- global $app, $conf;
-
- $error = '';
-
- $tmp_soa = $soa;
- foreach($tmp_soa as $key => $val){
- if($key != 'active') $soa[$key] = trim($val);
- }
- unset($tmp_soa);
-
- if($soa['origin'] == '') $error .= $app->tform->wordbook['origin_txt']." ".$app->tform->wordbook['error_empty']."<br>\r\n";
- if(substr($soa['origin'], -1) != '.') $error .= $app->tform->wordbook['origin_txt']." ".$app->tform->wordbook['error_dot']."<br>\r\n";
- $error .= $this->validate_field($soa['origin'], "Zone origin", $soa['id'], 0);
-
- $error .= $this->is_integer($soa['ttl'], $app->tform->wordbook['ttl_txt']);
-
- if($soa['ns'] == '') $error .= $app->tform->wordbook['ns_txt']." ".$app->tform->wordbook['error_empty']."<br>\r\n";
- $error .= $this->validate_field($soa['ns'], "Name server", $soa['id'], 0);
-
- if($soa['mbox'] == '') $error .= $app->tform->wordbook['mbox_txt']." ".$app->tform->wordbook['error_empty']."<br>\r\n";
- $error .= $this->validate_field($soa['mbox'], "Admin email", $soa['id'], 0);
-
- $error .= $this->is_integer($soa['refresh'], $app->tform->wordbook['refresh_txt']);
-
- $error .= $this->is_integer($soa['retry'], $app->tform->wordbook['retry_txt']);
-
- $error .= $this->is_integer($soa['expire'], $app->tform->wordbook['expire_txt']);
-
- $error .= $this->is_integer($soa['minimum'], $app->tform->wordbook['minimum_txt']);
-
- return $error;
-}
-
-function increase_serial($serial){
- global $app, $conf;
-
- // increase serial
- $serial_date = substr($serial, 0, 8);
- $count = intval(substr($serial, 8, 2));
- $current_date = date("Ymd");
- if($serial_date >= $current_date){
- $count += 1;
- if ($count > 99) {
- $serial_date += 1;
- $count = 0;
- }
- $count = str_pad($count, 2, "0", STR_PAD_LEFT);
- $new_serial = $serial_date.$count;
- } else {
- $new_serial = $current_date.'01';
- }
- return $new_serial;
-}
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ DNS validation
+*/
+
+class validate_dns {
+
+function validate_field($field, $area, $zoneid, $wildcard_allowed = 1){
+ //$desc: Name, Data, RP mbox, RP txtref, SRV target, Zone origin, Name server, Admin email
+ global $app, $conf;
+
+ switch ($area) {
+ case "Name":
+ $desc = $app->tform->wordbook['name_txt'];
+ break;
+ case "Data":
+ $desc = $app->tform->wordbook['data_txt'];
+ break;
+ case "RP mbox":
+ $desc = $app->tform->wordbook['rp_mbox_txt'];
+ break;
+ case "RP txtref":
+ $desc = $app->tform->wordbook['rp_txtref_txt'];
+ break;
+ case "SRV target":
+ $desc = $app->tform->wordbook['srv_target_txt'];
+ break;
+ case "Zone origin":
+ $desc = $app->tform->wordbook['zone_origin_txt'];
+ break;
+ case "Name server":
+ $desc = $app->tform->wordbook['ns_txt'];
+ break;
+ case "Admin email":
+ $desc = $app->tform->wordbook['mbox_txt'];
+ break;
+ }
+
+ $error = '';
+
+ $valid_characters = "*ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-_";
+
+ if(strlen($field) > 255) $error .= $desc." ".$app->tform->wordbook['error_255_characters']."<br>\r\n";
+
+ $parts = explode(".", $field);
+ $i = 0;
+ $empty = 0;
+ foreach ($parts as $part){
+ $i++;
+
+ if(trim($part) == '') $empty += 1;
+
+ if(strlen($part) > 63) $error .= $desc." ".$app->tform->wordbook['error_63_characters']."<br>\r\n";
+
+ if(strspn($part, $valid_characters) != strlen($part)) $error .= $desc." ".$app->tform->wordbook['error_invalid_characters']."<br>\r\n";
+
+ if(substr($part, 0, 1) == '-') $error .= $desc." ".$app->tform->wordbook['error_hyphen_begin']."<br>\r\n";
+ if(substr($part, -1) == '-') $error .= $desc." ".$app->tform->wordbook['error_hyphen_end']."<br>\r\n";
+
+ if(strstr($part, "*")){
+ if($wildcard_allowed){
+ if($i != 1) $error .= $desc." ".$app->tform->wordbook['error_wildcard_non_initial_part']."<br>\r\n";
+
+ if($part != "*") $error .= $desc." ".$app->tform->wordbook['error_wildcard_mix']."<br>\r\n";
+ } else {
+ $error .= $desc." ".$app->tform->wordbook['error_no_wildcard_allowed']."<br>\r\n";
+ }
+ }
+ }
+
+ if(substr($field, -1) == '.'){
+ if($i > 2 && $empty > 1) $error .= $desc." ".$app->tform->wordbook['error_invalid_characters']."<br>\r\n";
+ } else {
+ if($empty > 0 && $field != '') $error .= $desc." ".$app->tform->wordbook['error_invalid_characters']."<br>\r\n";
+ }
+
+ if(substr($field, -1) == '.' && $area == 'Name'){
+ $soa = $app->db->queryOneRecord("SELECT * FROM soa WHERE id = ".$zoneid);
+ if(substr($field, (strlen($field) - strlen($soa['origin']))) != $soa['origin']) $error .= $desc." ".$app->tform->wordbook['error_out_of_zone']."<br>\r\n";
+ }
+
+ return $error;
+}
+
+function validate_rp_data(&$data, $zoneid){
+ global $app, $conf;
+ $error = '';
+ $fields = explode(" ", trim($data));
+ if(count($fields) != 2) return $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_invalid_rp']."<br>\r\n";
+ $mbox = $fields[0];
+ $txtref = $fields[1];
+
+ $error .= $this->validate_field($mbox, 'RP mbox', $zoneid, 0);
+ $error .= $this->validate_field($txtref, 'RP txtref', $zoneid, 0);
+
+ $data = $mbox." ".$txtref;
+ return $error;
+}
+
+function validate_srv_data(&$data, $zoneid){
+ global $app, $conf;
+ $error = '';
+
+ $fields = explode(" ", trim($data));
+ if(count($fields) != 3) return $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_invalid_srv']."<br>\r\n";
+
+ $weight = $fields[0];
+ $port = $fields[1];
+ $target = $fields[2];
+ if($weight < 0 || $weight > 65535) $error .= $app->tform->wordbook['weight_txt']." (\"<i>" . htmlentities($weight,ENT_QUOTES,$conf["html_content_encoding"])."</i>\") ".$app->tform->wordbook['error_srv_out_of_range']."<br>\r\n";
+ if($port < 0 || $port > 65535) $error .= $app->tform->wordbook['port_txt']." (\"<i>".htmlentities($port,ENT_QUOTES,$conf["html_content_encoding"])."</i>\") ".$app->tform->wordbook['error_srv_out_of_range']."<br>\r\n";
+
+ $error .= $this->validate_field($target, "SRV target", $zoneid, 0);
+
+ $data = (int)$weight." ".(int)$port." ".$target;
+ return $error;
+}
+
+function is_integer($value, $fieldname, $zero_allowed = 0){
+ global $app, $conf;
+
+ $error = '';
+
+ if(intval($value) != $value || !is_numeric($value)) $error .= $fieldname." ".$app->tform->wordbook['error_must_be_integer']."<br>\r\n";
+ if($value > 2147483647) $error .= $fieldname." ".$app->tform->wordbook['error_must_not_be_greater_than_2147483647']."<br>\r\n";
+ if(!$zero_allowed){
+ if($value <= 0) $error .= $fieldname." ".$app->tform->wordbook['error_must_be_positive']."<br>\r\n";
+ } else {
+ if($value < 0) $error .= $fieldname." ".$app->tform->wordbook['error_must_not_be_negative']."<br>\r\n";
+ }
+
+ return $error;
+}
+
+function validate_rr(&$rr){
+ global $app, $conf;
+
+ $error = '';
+
+ $tmp_rr = $rr;
+ foreach($tmp_rr as $key => $val){
+ $rr[$key] = trim($val);
+ }
+ unset($tmp_rr);
+
+ $error .= $this->validate_field($rr['name'], 'Name', $rr['zone'], 1);
+
+ switch ($rr['type']) {
+ case "A":
+ $ip_parts = explode(".", $rr['data']);
+ if(count($ip_parts) != 4){
+ $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_a']."<br>\r\n";
+ } else {
+ for($n = 0; $n < 4; $n++){
+ $q = $ip_parts[$n];
+ if(!is_numeric($q) || (int)$q < 0 || (int)$q > 255 || trim($q) !== $q) $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_a']."<br>\r\n";
+ }
+ }
+ $rr['data'] = (int)$ip_parts[0].".".(int)$ip_parts[1].".".(int)$ip_parts[2].".".(int)$ip_parts[3];
+ break;
+ case "AAAA":
+ $valid_chars = "ABCDEFabcdef1234567890:";
+
+ if(strspn($rr['data'], $valid_chars) != strlen($rr['data'])) $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_aaaa']."<br>\r\n";
+ break;
+ case "ALIAS":
+ $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
+ break;
+ case "CNAME":
+ $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
+ break;
+ case "HINFO":
+ if(!strchr($rr['data'], ' ')) $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_hinfo']."<br>\r\n";
+ break;
+ case "MX":
+ $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
+ $error .= $this->is_integer($rr['aux'], $app->tform->wordbook['aux_txt'], 1);
+ break;
+ case "NS":
+ $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
+ break;
+ case "PTR":
+ $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
+ if(substr($rr['data'], -1) != '.') $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_ptr']."<br>\r\n";
+ break;
+ case "RP":
+ $error .= $this->validate_rp_data($rr['data'], $rr['zone']);
+ break;
+ case "SRV":
+ $error .= $this->validate_srv_data($rr['data'], $rr['zone']);
+ $error .= $this->is_integer($rr['aux'], $app->tform->wordbook['aux_txt'], 1);
+ break;
+ case "TXT":
+ break;
+ }
+
+ $error .= $this->is_integer($rr['ttl'], $app->tform->wordbook['ttl_txt']);
+
+
+ return $error;
+}
+
+function validate_soa(&$soa){
+ global $app, $conf;
+
+ $error = '';
+
+ $tmp_soa = $soa;
+ foreach($tmp_soa as $key => $val){
+ if($key != 'active') $soa[$key] = trim($val);
+ }
+ unset($tmp_soa);
+
+ if($soa['origin'] == '') $error .= $app->tform->wordbook['origin_txt']." ".$app->tform->wordbook['error_empty']."<br>\r\n";
+ if(substr($soa['origin'], -1) != '.') $error .= $app->tform->wordbook['origin_txt']." ".$app->tform->wordbook['error_dot']."<br>\r\n";
+ $error .= $this->validate_field($soa['origin'], "Zone origin", $soa['id'], 0);
+
+ $error .= $this->is_integer($soa['ttl'], $app->tform->wordbook['ttl_txt']);
+
+ if($soa['ns'] == '') $error .= $app->tform->wordbook['ns_txt']." ".$app->tform->wordbook['error_empty']."<br>\r\n";
+ $error .= $this->validate_field($soa['ns'], "Name server", $soa['id'], 0);
+
+ if($soa['mbox'] == '') $error .= $app->tform->wordbook['mbox_txt']." ".$app->tform->wordbook['error_empty']."<br>\r\n";
+ $error .= $this->validate_field($soa['mbox'], "Admin email", $soa['id'], 0);
+
+ $error .= $this->is_integer($soa['refresh'], $app->tform->wordbook['refresh_txt']);
+
+ $error .= $this->is_integer($soa['retry'], $app->tform->wordbook['retry_txt']);
+
+ $error .= $this->is_integer($soa['expire'], $app->tform->wordbook['expire_txt']);
+
+ $error .= $this->is_integer($soa['minimum'], $app->tform->wordbook['minimum_txt']);
+
+ return $error;
+}
+
+function increase_serial($serial){
+ global $app, $conf;
+
+ // increase serial
+ $serial_date = substr($serial, 0, 8);
+ $count = intval(substr($serial, 8, 2));
+ $current_date = date("Ymd");
+ if($serial_date >= $current_date){
+ $count += 1;
+ if ($count > 99) {
+ $serial_date += 1;
+ $count = 0;
+ }
+ $count = str_pad($count, 2, "0", STR_PAD_LEFT);
+ $new_serial = $serial_date.$count;
+ } else {
+ $new_serial = $current_date.'01';
+ }
+ return $new_serial;
+}
+
}
\ No newline at end of file
diff --git a/interface/web/admin/form/firewall.tform.php b/interface/web/admin/form/firewall.tform.php
index 2ff9d0e..4112a2a 100644
--- a/interface/web/admin/form/firewall.tform.php
+++ b/interface/web/admin/form/firewall.tform.php
@@ -1,112 +1,112 @@
-<?php
-
-/*
- Form Definition
-
- Tabledefinition
-
- Datatypes:
- - INTEGER (Forces the input to Int)
- - DOUBLE
- - CURRENCY (Formats the values to currency notation)
- - VARCHAR (no format check, maxlength: 255)
- - TEXT (no format check)
- - DATE (Dateformat, automatic conversion to timestamps)
-
- Formtype:
- - TEXT (Textfield)
- - TEXTAREA (Textarea)
- - PASSWORD (Password textfield, input is not shown when edited)
- - SELECT (Select option field)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hint:
- The ID field of the database table is not part of the datafield definition.
- The ID field must be always auto incement (int or bigint).
-
-
-*/
-
-$form["title"] = "Firewall";
-$form["description"] = "";
-$form["name"] = "firewall";
-$form["action"] = "firewall_edit.php";
-$form["db_table"] = "firewall";
-$form["db_table_idx"] = "firewall_id";
-$form["db_history"] = "yes";
-$form["tab_default"] = "firewall";
-$form["list_default"] = "firewall_list.php";
-$form["auth"] = 'yes'; // yes / no
-
-$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-$form["tabs"]['firewall'] = array (
- 'title' => "Firewall",
- 'width' => 100,
- 'template' => "templates/firewall_edit.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'server_id' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'validators' => array ( 0 => array ( 'type' => 'UNIQUE',
- 'errmsg'=> 'firewall_error_unique'),
- ),
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
- 'keyfield'=> 'server_id',
- 'valuefield'=> 'server_name'
- ),
- 'value' => ''
- ),
- 'tcp_port' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[\s0-9\,\:]{0,255}$/',
- 'errmsg'=> 'tcp_ports_error_regex'),
- ),
- 'default' => '20,21,22,25,53,80,110,143,443,3306,8080,8081,10000',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'udp_port' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[\s0-9\,\:]{0,255}$/',
- 'errmsg'=> 'tcp_ports_error_regex'),
- ),
- 'default' => '53,3306',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'active' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'y',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-
+<?php
+
+/*
+ Form Definition
+
+ Tabledefinition
+
+ Datatypes:
+ - INTEGER (Forces the input to Int)
+ - DOUBLE
+ - CURRENCY (Formats the values to currency notation)
+ - VARCHAR (no format check, maxlength: 255)
+ - TEXT (no format check)
+ - DATE (Dateformat, automatic conversion to timestamps)
+
+ Formtype:
+ - TEXT (Textfield)
+ - TEXTAREA (Textarea)
+ - PASSWORD (Password textfield, input is not shown when edited)
+ - SELECT (Select option field)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hint:
+ The ID field of the database table is not part of the datafield definition.
+ The ID field must be always auto incement (int or bigint).
+
+
+*/
+
+$form["title"] = "Firewall";
+$form["description"] = "";
+$form["name"] = "firewall";
+$form["action"] = "firewall_edit.php";
+$form["db_table"] = "firewall";
+$form["db_table_idx"] = "firewall_id";
+$form["db_history"] = "yes";
+$form["tab_default"] = "firewall";
+$form["list_default"] = "firewall_list.php";
+$form["auth"] = 'yes'; // yes / no
+
+$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+$form["tabs"]['firewall'] = array (
+ 'title' => "Firewall",
+ 'width' => 100,
+ 'template' => "templates/firewall_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'server_id' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'UNIQUE',
+ 'errmsg'=> 'firewall_error_unique'),
+ ),
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name',
+ 'keyfield'=> 'server_id',
+ 'valuefield'=> 'server_name'
+ ),
+ 'value' => ''
+ ),
+ 'tcp_port' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[\s0-9\,\:]{0,255}$/',
+ 'errmsg'=> 'tcp_ports_error_regex'),
+ ),
+ 'default' => '20,21,22,25,53,80,110,143,443,3306,8080,8081,10000',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'udp_port' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[\s0-9\,\:]{0,255}$/',
+ 'errmsg'=> 'tcp_ports_error_regex'),
+ ),
+ 'default' => '53,3306',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'active' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'y',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+
?>
\ No newline at end of file
diff --git a/interface/web/admin/form/remote_user.tform.php b/interface/web/admin/form/remote_user.tform.php
index 3cc3e6d..1a3824a 100644
--- a/interface/web/admin/form/remote_user.tform.php
+++ b/interface/web/admin/form/remote_user.tform.php
@@ -1,162 +1,162 @@
-<?php
-
-/*
- Form Definition
-
- Tabledefinition
-
- Datatypes:
- - INTEGER (Forces the input to Int)
- - DOUBLE
- - CURRENCY (Formats the values to currency notation)
- - VARCHAR (no format check, maxlength: 255)
- - TEXT (no format check)
- - DATE (Dateformat, automatic conversion to timestamps)
-
- Formtype:
- - TEXT (Textfield)
- - TEXTAREA (Textarea)
- - PASSWORD (Password textfield, input is not shown when edited)
- - SELECT (Select option field)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hint:
- The ID field of the database table is not part of the datafield definition.
- The ID field must be always auto incement (int or bigint).
-
-
-*/
-
-$function_list = array();
-$function_list['mail_domain_get,mail_domain_add,mail_domain_update,mail_domain_delete,mail_domain_set_status,mail_domain_get_by_domain'] = 'Mail domain functions';
-$function_list['mail_mailinglist_get,mail_mailinglist_add,mail_mailinglist_update,mail_mailinglist_delete'] = 'Mail mailinglist functions';
-$function_list['mail_user_get,mail_user_add,mail_user_update,mail_user_delete'] = 'Mail user functions';
-$function_list['mail_alias_get,mail_alias_add,mail_alias_update,mail_alias_delete'] = 'Mail alias functions';
-$function_list['mail_forward_get,mail_forward_add,mail_forward_update,mail_forward_delete'] = 'Mail forward functions';
-$function_list['mail_catchall_get,mail_catchall_add,mail_catchall_update,mail_catchall_delete'] = 'Mail catchall functions';
-$function_list['mail_transport_get,mail_transport_add,mail_transport_update,mail_transport_delete'] = 'Mail transport functions';
-$function_list['mail_whitelist_get,mail_whitelist_add,mail_whitelist_update,mail_whitelist_delete'] = 'Mail whitelist functions';
-$function_list['mail_blacklist_get,mail_blacklist_add,mail_blacklist_update,mail_blacklist_delete'] = 'Mail blacklist functions';
-$function_list['mail_spamfilter_user_get,mail_spamfilter_user_add,mail_spamfilter_user_update,mail_spamfilter_user_delete'] = 'Mail spamfilter user functions';
-$function_list['mail_policy_get,mail_policy_add,mail_policy_update,mail_policy_delete'] = 'Mail spamfilter policy functions';
-$function_list['mail_fetchmail_get,mail_fetchmail_add,mail_fetchmail_update,mail_fetchmail_delete'] = 'Mail fetchmail functions';
-$function_list['mail_spamfilter_whitelist_get,mail_spamfilter_whitelist_add,mail_spamfilter_whitelist_update,mail_spamfilter_whitelist_delete'] = 'Mail spamfilter whitelist functions';
-$function_list['mail_spamfilter_blacklist_get,mail_spamfilter_blacklist_add,mail_spamfilter_blacklist_update,mail_spamfilter_blacklist_delete'] = 'Mail spamfilter blacklist functions';
-$function_list['mail_user_filter_get,mail_user_filter_add,mail_user_filter_update,mail_user_filter_delete'] = 'Mail user filter functions';
-$function_list['mail_filter_get,mail_filter_add,mail_filter_update,mail_filter_delete'] = 'Mail filter functions';
+<?php
+
+/*
+ Form Definition
+
+ Tabledefinition
+
+ Datatypes:
+ - INTEGER (Forces the input to Int)
+ - DOUBLE
+ - CURRENCY (Formats the values to currency notation)
+ - VARCHAR (no format check, maxlength: 255)
+ - TEXT (no format check)
+ - DATE (Dateformat, automatic conversion to timestamps)
+
+ Formtype:
+ - TEXT (Textfield)
+ - TEXTAREA (Textarea)
+ - PASSWORD (Password textfield, input is not shown when edited)
+ - SELECT (Select option field)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hint:
+ The ID field of the database table is not part of the datafield definition.
+ The ID field must be always auto incement (int or bigint).
+
+
+*/
+
+$function_list = array();
+$function_list['mail_domain_get,mail_domain_add,mail_domain_update,mail_domain_delete,mail_domain_set_status,mail_domain_get_by_domain'] = 'Mail domain functions';
+$function_list['mail_mailinglist_get,mail_mailinglist_add,mail_mailinglist_update,mail_mailinglist_delete'] = 'Mail mailinglist functions';
+$function_list['mail_user_get,mail_user_add,mail_user_update,mail_user_delete'] = 'Mail user functions';
+$function_list['mail_alias_get,mail_alias_add,mail_alias_update,mail_alias_delete'] = 'Mail alias functions';
+$function_list['mail_forward_get,mail_forward_add,mail_forward_update,mail_forward_delete'] = 'Mail forward functions';
+$function_list['mail_catchall_get,mail_catchall_add,mail_catchall_update,mail_catchall_delete'] = 'Mail catchall functions';
+$function_list['mail_transport_get,mail_transport_add,mail_transport_update,mail_transport_delete'] = 'Mail transport functions';
+$function_list['mail_whitelist_get,mail_whitelist_add,mail_whitelist_update,mail_whitelist_delete'] = 'Mail whitelist functions';
+$function_list['mail_blacklist_get,mail_blacklist_add,mail_blacklist_update,mail_blacklist_delete'] = 'Mail blacklist functions';
+$function_list['mail_spamfilter_user_get,mail_spamfilter_user_add,mail_spamfilter_user_update,mail_spamfilter_user_delete'] = 'Mail spamfilter user functions';
+$function_list['mail_policy_get,mail_policy_add,mail_policy_update,mail_policy_delete'] = 'Mail spamfilter policy functions';
+$function_list['mail_fetchmail_get,mail_fetchmail_add,mail_fetchmail_update,mail_fetchmail_delete'] = 'Mail fetchmail functions';
+$function_list['mail_spamfilter_whitelist_get,mail_spamfilter_whitelist_add,mail_spamfilter_whitelist_update,mail_spamfilter_whitelist_delete'] = 'Mail spamfilter whitelist functions';
+$function_list['mail_spamfilter_blacklist_get,mail_spamfilter_blacklist_add,mail_spamfilter_blacklist_update,mail_spamfilter_blacklist_delete'] = 'Mail spamfilter blacklist functions';
+$function_list['mail_user_filter_get,mail_user_filter_add,mail_user_filter_update,mail_user_filter_delete'] = 'Mail user filter functions';
+$function_list['mail_filter_get,mail_filter_add,mail_filter_update,mail_filter_delete'] = 'Mail filter functions';
$function_list['client_get,client_add,client_update,client_delete,client_get_sites_by_user,client_get_by_username,client_change_password,client_get_id,client_delete_everything'] = 'Client functions';
$function_list['server_get,get_function_list,client_templates_get_all,server_get_serverid_by_ip'] = 'Server functions';
-$function_list['sites_cron_get,sites_cron_add,sites_cron_update,sites_cron_delete'] = 'Sites cron functions';
-$function_list['sites_database_get,sites_database_add,sites_database_update,sites_database_delete, sites_database_get_all_by_user'] = 'Sites database functions';
-$function_list['sites_ftp_user_get,sites_ftp_user_add,sites_ftp_user_update,sites_ftp_user_delete'] = 'Sites FTP-User functions';
-$function_list['sites_shell_user_get,sites_shell_user_add,sites_shell_user_update,sites_shell_user_delete'] = 'Sites Shell-User functions';
-$function_list['sites_web_domain_get,sites_web_domain_add,sites_web_domain_update,sites_web_domain_delete,sites_web_domain_set_status'] = 'Sites Domain functions';
-$function_list['sites_web_aliasdomain_get,sites_web_aliasdomain_add,sites_web_aliasdomain_update,sites_web_aliasdomain_delete'] = 'Sites Aliasdomain functions';
-$function_list['sites_web_subdomain_get,sites_web_subdomain_add,sites_web_subdomain_update,sites_web_subdomain_delete'] = 'Sites Subdomain functions';
-$function_list['dns_zone_get,dns_zone_add,dns_zone_update,dns_zone_delete,dns_zone_set_status'] = 'DNS zone functions';
-$function_list['dns_a_get,dns_a_add,dns_a_update,dns_a_delete'] = 'DNS a functions';
-$function_list['dns_aaaa_get,dns_aaaa_add,dns_aaaa_update,dns_aaaa_delete'] = 'DNS aaaa functions';
-$function_list['dns_alias_get,dns_alias_add,dns_alias_update,dns_alias_delete'] = 'DNS alias functions';
-$function_list['dns_cname_get,dns_cname_add,dns_cname_update,dns_cname_delete'] = 'DNS cname functions';
-$function_list['dns_hinfo_get,dns_hinfo_add,dns_hinfo_update,dns_hinfo_delete'] = 'DNS hinfo functions';
-$function_list['dns_mx_get,dns_mx_add,dns_mx_update,dns_mx_delete'] = 'DNS mx functions';
-$function_list['dns_ns_get,dns_ns_add,dns_ns_update,dns_ns_delete'] = 'DNS ns functions';
-$function_list['dns_ptr_get,dns_ptr_add,dns_ptr_update,dns_ptr_delete'] = 'DNS ptr functions';
-$function_list['dns_rp_get,dns_rp_add,dns_rp_update,dns_rp_delete'] = 'DNS rp functions';
-$function_list['dns_srv_get,dns_srv_add,dns_srv_update,dns_srv_delete'] = 'DNS srv functions';
-$function_list['dns_txt_get,dns_txt_add,dns_txt_update,dns_txt_delete'] = 'DNS txt functions';
+$function_list['sites_cron_get,sites_cron_add,sites_cron_update,sites_cron_delete'] = 'Sites cron functions';
+$function_list['sites_database_get,sites_database_add,sites_database_update,sites_database_delete, sites_database_get_all_by_user'] = 'Sites database functions';
+$function_list['sites_ftp_user_get,sites_ftp_user_add,sites_ftp_user_update,sites_ftp_user_delete'] = 'Sites FTP-User functions';
+$function_list['sites_shell_user_get,sites_shell_user_add,sites_shell_user_update,sites_shell_user_delete'] = 'Sites Shell-User functions';
+$function_list['sites_web_domain_get,sites_web_domain_add,sites_web_domain_update,sites_web_domain_delete,sites_web_domain_set_status'] = 'Sites Domain functions';
+$function_list['sites_web_aliasdomain_get,sites_web_aliasdomain_add,sites_web_aliasdomain_update,sites_web_aliasdomain_delete'] = 'Sites Aliasdomain functions';
+$function_list['sites_web_subdomain_get,sites_web_subdomain_add,sites_web_subdomain_update,sites_web_subdomain_delete'] = 'Sites Subdomain functions';
+$function_list['dns_zone_get,dns_zone_add,dns_zone_update,dns_zone_delete,dns_zone_set_status'] = 'DNS zone functions';
+$function_list['dns_a_get,dns_a_add,dns_a_update,dns_a_delete'] = 'DNS a functions';
+$function_list['dns_aaaa_get,dns_aaaa_add,dns_aaaa_update,dns_aaaa_delete'] = 'DNS aaaa functions';
+$function_list['dns_alias_get,dns_alias_add,dns_alias_update,dns_alias_delete'] = 'DNS alias functions';
+$function_list['dns_cname_get,dns_cname_add,dns_cname_update,dns_cname_delete'] = 'DNS cname functions';
+$function_list['dns_hinfo_get,dns_hinfo_add,dns_hinfo_update,dns_hinfo_delete'] = 'DNS hinfo functions';
+$function_list['dns_mx_get,dns_mx_add,dns_mx_update,dns_mx_delete'] = 'DNS mx functions';
+$function_list['dns_ns_get,dns_ns_add,dns_ns_update,dns_ns_delete'] = 'DNS ns functions';
+$function_list['dns_ptr_get,dns_ptr_add,dns_ptr_update,dns_ptr_delete'] = 'DNS ptr functions';
+$function_list['dns_rp_get,dns_rp_add,dns_rp_update,dns_rp_delete'] = 'DNS rp functions';
+$function_list['dns_srv_get,dns_srv_add,dns_srv_update,dns_srv_delete'] = 'DNS srv functions';
+$function_list['dns_txt_get,dns_txt_add,dns_txt_update,dns_txt_delete'] = 'DNS txt functions';
$function_list['domains_domain_get,domains_domain_add,domains_domain_delete,domains_get_all_by_user'] = 'Domaintool functions';
-
-$form["title"] = "Remote user";
-$form["description"] = "";
-$form["name"] = "remote_user";
-$form["action"] = "remote_user_edit.php";
-$form["db_table"] = "remote_user";
-$form["db_table_idx"] = "remote_userid";
-$form["db_history"] = "yes";
-$form["tab_default"] = "remote_user";
-$form["list_default"] = "remote_user_list.php";
-$form["auth"] = 'yes'; // yes / no
-
-$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-$form["tabs"]['remote_user'] = array (
- 'title' => "Remote User",
- 'width' => 100,
- 'template' => "templates/remote_user_edit.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'remote_userid' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT remote_userid,remote_username FROM remote_user WHERE {AUTHSQL} ORDER BY remote_username',
- 'keyfield'=> 'remote_userid',
- 'valuefield'=> 'remote_username'
- ),
- 'value' => ''
- ),
-
- 'remote_username' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'UNIQUE',
- 'errmsg'=> 'username_error_unique'),
- 1 => array ( 'type' => 'REGEX',
- 'regex' => '/^[\w\.\-]{0,64}$/',
- 'errmsg'=> 'username_error_regex'),
-2 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'username_error_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'remote_password' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'PASSWORD',
- 'encryption' => 'MD5',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'remote_functions' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'CHECKBOXARRAY',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => $function_list,
- 'separator' => ';',
- 'width' => '',
- 'maxlength' => '',
- 'rows' => '5',
- 'cols' => '30'
- )
-
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-
-
-
-
-?>
+
+$form["title"] = "Remote user";
+$form["description"] = "";
+$form["name"] = "remote_user";
+$form["action"] = "remote_user_edit.php";
+$form["db_table"] = "remote_user";
+$form["db_table_idx"] = "remote_userid";
+$form["db_history"] = "yes";
+$form["tab_default"] = "remote_user";
+$form["list_default"] = "remote_user_list.php";
+$form["auth"] = 'yes'; // yes / no
+
+$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+$form["tabs"]['remote_user'] = array (
+ 'title' => "Remote User",
+ 'width' => 100,
+ 'template' => "templates/remote_user_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'remote_userid' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT remote_userid,remote_username FROM remote_user WHERE {AUTHSQL} ORDER BY remote_username',
+ 'keyfield'=> 'remote_userid',
+ 'valuefield'=> 'remote_username'
+ ),
+ 'value' => ''
+ ),
+
+ 'remote_username' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'UNIQUE',
+ 'errmsg'=> 'username_error_unique'),
+ 1 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[\w\.\-]{0,64}$/',
+ 'errmsg'=> 'username_error_regex'),
+2 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'username_error_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'remote_password' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'PASSWORD',
+ 'encryption' => 'MD5',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'remote_functions' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => $function_list,
+ 'separator' => ';',
+ 'width' => '',
+ 'maxlength' => '',
+ 'rows' => '5',
+ 'cols' => '30'
+ )
+
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+
+
+
+
+?>
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index 7c080cc..bc3e972 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -1,270 +1,270 @@
-<?php
-
-/*
- Form Definition
-
- Tabledefinition
-
- Datatypes:
- - INTEGER (Forces the input to Int)
- - DOUBLE
- - CURRENCY (Formats the values to currency notation)
- - VARCHAR (no format check, maxlength: 255)
- - TEXT (no format check)
- - DATE (Dateformat, automatic conversion to timestamps)
-
- Formtype:
- - TEXT (Textfield)
- - TEXTAREA (Textarea)
- - PASSWORD (Password textfield, input is not shown when edited)
- - SELECT (Select option field)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hint:
- The ID field of the database table is not part of the datafield definition.
- The ID field must be always auto incement (int or bigint).
-
-
-*/
-
-$form["title"] = "System Config";
-$form["description"] = "";
-$form["name"] = "system_config";
-$form["action"] = "system_config_edit.php";
-$form["db_table"] = "sys_ini";
-$form["db_table_idx"] = "sysini_id";
-$form["db_history"] = "yes";
-$form["tab_default"] = "sites";
-$form["list_default"] = "server_list.php";
-$form["auth"] = 'yes'; // yes / no
-
-$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-$form["tabs"]['sites'] = array (
- 'title' => "Sites",
- 'width' => 70,
- 'template' => "templates/system_config_sites_edit.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'dbname_prefix' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
- 'errmsg'=> 'dbname_prefix_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'dbuser_prefix' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
- 'errmsg'=> 'dbuser_prefix_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'ftpuser_prefix' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
- 'errmsg'=> 'ftpuser_prefix_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'shelluser_prefix' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
- 'errmsg'=> 'shelluser_prefix_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'webdavuser_prefix' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
- 'errmsg'=> 'webdavuser_prefix_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'dblist_phpmyadmin_link' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'n',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- 'phpmyadmin_url' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
- 'errmsg'=> 'phpmyadmin_url_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'webftp_url' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
- 'errmsg'=> 'webftp_url_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-$form["tabs"]['mail'] = array (
- 'title' => "Mail",
- 'width' => 70,
- 'template' => "templates/system_config_mail_edit.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'mailboxlist_webmail_link' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'n',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- 'webmail_url' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
- 'errmsg'=> 'webmail_url_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'mailmailinglist_link' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'n',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- 'mailmailinglist_url' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'REGEX',
- 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
- 'errmsg'=> 'mailinglist_url_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'admin_mail' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'admin_name' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-$form["tabs"]['domains'] = array (
- 'title' => "Domains",
- 'width' => 70,
- 'template' => "templates/system_config_domains_edit.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'use_domain_module' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'n',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- 'new_domain_html' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => ''
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-$form["tabs"]['misc'] = array (
- 'title' => "Misc",
- 'width' => 70,
- 'template' => "templates/system_config_misc_edit.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'dashboard_atom_url' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => 'http://www.ispconfig.org/atom',
- 'value' => ''
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-
-?>
+<?php
+
+/*
+ Form Definition
+
+ Tabledefinition
+
+ Datatypes:
+ - INTEGER (Forces the input to Int)
+ - DOUBLE
+ - CURRENCY (Formats the values to currency notation)
+ - VARCHAR (no format check, maxlength: 255)
+ - TEXT (no format check)
+ - DATE (Dateformat, automatic conversion to timestamps)
+
+ Formtype:
+ - TEXT (Textfield)
+ - TEXTAREA (Textarea)
+ - PASSWORD (Password textfield, input is not shown when edited)
+ - SELECT (Select option field)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hint:
+ The ID field of the database table is not part of the datafield definition.
+ The ID field must be always auto incement (int or bigint).
+
+
+*/
+
+$form["title"] = "System Config";
+$form["description"] = "";
+$form["name"] = "system_config";
+$form["action"] = "system_config_edit.php";
+$form["db_table"] = "sys_ini";
+$form["db_table_idx"] = "sysini_id";
+$form["db_history"] = "yes";
+$form["tab_default"] = "sites";
+$form["list_default"] = "server_list.php";
+$form["auth"] = 'yes'; // yes / no
+
+$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+$form["tabs"]['sites'] = array (
+ 'title' => "Sites",
+ 'width' => 70,
+ 'template' => "templates/system_config_sites_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'dbname_prefix' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
+ 'errmsg'=> 'dbname_prefix_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'dbuser_prefix' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
+ 'errmsg'=> 'dbuser_prefix_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'ftpuser_prefix' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
+ 'errmsg'=> 'ftpuser_prefix_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'shelluser_prefix' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
+ 'errmsg'=> 'shelluser_prefix_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'webdavuser_prefix' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[a-zA-Z0-0\-\_\[\]]{0,50}$/',
+ 'errmsg'=> 'webdavuser_prefix_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'dblist_phpmyadmin_link' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'phpmyadmin_url' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
+ 'errmsg'=> 'phpmyadmin_url_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'webftp_url' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
+ 'errmsg'=> 'webftp_url_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['mail'] = array (
+ 'title' => "Mail",
+ 'width' => 70,
+ 'template' => "templates/system_config_mail_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'mailboxlist_webmail_link' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'webmail_url' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
+ 'errmsg'=> 'webmail_url_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'mailmailinglist_link' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'mailmailinglist_url' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[0-9a-zA-Z\:\/\-\.]{0,255}$/',
+ 'errmsg'=> 'mailinglist_url_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'admin_mail' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'admin_name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['domains'] = array (
+ 'title' => "Domains",
+ 'width' => 70,
+ 'template' => "templates/system_config_domains_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'use_domain_module' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'new_domain_html' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => ''
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['misc'] = array (
+ 'title' => "Misc",
+ 'width' => 70,
+ 'template' => "templates/system_config_misc_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'dashboard_atom_url' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => 'http://www.ispconfig.org/atom',
+ 'value' => ''
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+
+?>
diff --git a/interface/web/admin/form/users.tform.php b/interface/web/admin/form/users.tform.php
index 1edbb0c..afe5956 100644
--- a/interface/web/admin/form/users.tform.php
+++ b/interface/web/admin/form/users.tform.php
@@ -1,456 +1,456 @@
-<?php
-
-/*
-Copyright (c) 2005, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- Form Definition
-
- Tabellendefinition
-
- Datentypen:
- - INTEGER (Wandelt Ausdr�cke in Int um)
- - DOUBLE
- - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
- - VARCHAR (kein weiterer Format Check)
- - TEXT (kein weiterer Format Check)
- - DATE (Datumsformat, Timestamp Umwandlung)
-
- Formtype:
- - TEXT (normales Textfeld)
- - TEXTAREA (normales Textfeld)
- - PASSWORD (Feldinhalt wird nicht angezeigt)
- - SELECT (Gibt Werte als option Feld aus)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hinweis:
- Das ID-Feld ist nicht bei den Table Values einzuf�gen.
-
-
-*/
-
-$form['title'] = 'Users';
-$form['description'] = 'Form to edit systemusers.';
-$form['name'] = 'users';
-$form['action'] = 'users_edit.php';
-$form['db_table'] = 'sys_user';
-$form['db_table_idx'] = 'userid';
-$form["db_history"] = "no";
-$form['tab_default'] = 'users';
-$form['list_default'] = 'users_list.php';
-$form['auth'] = 'yes';
-
-//* 0 = id of the user, > 0 id must match with id of current user
-$form['auth_preset']['userid'] = 0;
-//* 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form['auth_preset']['groupid'] = 0;
-
-//** Permissions are: r = read, i = insert, u = update, d = delete
-$form['auth_preset']['perm_user'] = 'riud';
-$form['auth_preset']['perm_group'] = 'riud';
-$form['auth_preset']['perm_other'] = '';
-
-//* Pick out modules
-$modules_list = array();
-$handle = @opendir(ISPC_WEB_PATH);
-while ($file = @readdir ($handle)) {
- if ($file != '.' && $file != '..') {
- if(@is_dir(ISPC_WEB_PATH."/$file")) {
- if(is_file(ISPC_WEB_PATH."/$file/lib/module.conf.php") and $file != 'login' && $file != 'designer') {
- $modules_list[$file] = $file;
- }
- }
- }
-}
-
-//* Load themes
-$themes_list = array();
-$handle = @opendir(ISPC_THEMES_PATH);
-while ($file = @readdir ($handle)) {
- if (substr($file, 0, 1) != '.') {
- if(@is_dir(ISPC_THEMES_PATH."/$file")) {
- $themes_list[$file] = $file;
- }
- }
-}
-
-//* Languages
-$language_list = array();
-$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
-while ($file = @readdir ($handle)) {
- if ($file != '.' && $file != '..') {
- if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
- $tmp = substr($file, 0, 2);
- $language_list[$tmp] = $tmp;
- }
- }
-}
-
-//* Pick out groups
-$groups_list = array();
-$tmp_records = $app->db->queryAllRecords('SELECT groupid, name FROM sys_group ORDER BY name');
-if(is_array($tmp_records)) {
- foreach($tmp_records as $tmp_rec) {
- $groups_list[$tmp_rec['groupid']] = $tmp_rec['name'];
- }
-}
-
-$form['tabs']['users'] = array (
- 'title' => 'Users',
- 'width' => 80,
- 'template' => 'templates/users_user_edit.htm',
- 'fields' => array (
- ##################################
- # Beginn Datenbankfelder
- ##################################
- 'username' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'username_empty'),
- 1 => array ( 'type' => 'UNIQUE',
- 'errmsg'=> 'username_unique'),
- 2 => array ( 'type' => 'REGEX',
- 'regex' => '/^[\w\.\-\_]{0,64}$/',
- 'errmsg'=> 'username_err'),
- ),
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '15',
- 'maxlength' => '30',
- 'rows' => '',
- 'cols' => ''
- ),
- 'passwort' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'PASSWORD',
- 'encryption'=> 'CRYPT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '15',
- 'maxlength' => '100',
- 'rows' => '',
- 'cols' => ''
- ),
- 'modules' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOXARRAY',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => 'admin,forms',
- 'value' => $modules_list,
- 'separator' => ',',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'startmodule' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => $modules_list,
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'app_theme' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'RADIO',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => 'default',
- 'value' => $themes_list,
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'typ' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'RADIO',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => 'user',
- 'value' => array ('user' => 'user', 'admin' => 'admin'),
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'active' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'CHECKBOX',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => array(0 => 0,1 => 1),
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'language' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => $language_list,
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '2',
- 'rows' => '',
- 'cols' => ''
- )
- ##################################
- # ENDE Datenbankfelder
- ##################################
- )
-);
-/*
-$form['tabs']['address'] = array (
- 'title' => 'Address',
- 'width' => 80,
- 'template' => 'templates/users_address_edit.htm',
- 'fields' => array (
- ##################################
- # Beginn Datenbankfelder
- ##################################
- 'name' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'vorname' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'unternehmen' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'strasse' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'ort' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'plz' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'land' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'email' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'url' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'telefon' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'fax' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- )
-
- ##################################
- # ENDE Datenbankfelder
- ##################################
- )
-);
-*/
-
-$form['tabs']['groups'] = array (
- 'title' => 'Groups',
- 'width' => 80,
- 'template' => 'templates/users_groups_edit.htm',
- 'fields' => array (
- ##################################
- # Beginn Datenbankfelder
- ##################################
- 'default_group' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => $groups_list,
- 'separator' => ',',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'groups' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOXARRAY',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => $groups_list,
- 'separator' => ',',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- )
-
- ##################################
- # ENDE Datenbankfelder
- ##################################
- )
-);
-
+<?php
+
+/*
+Copyright (c) 2005, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ Form Definition
+
+ Tabellendefinition
+
+ Datentypen:
+ - INTEGER (Wandelt Ausdr�cke in Int um)
+ - DOUBLE
+ - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
+ - VARCHAR (kein weiterer Format Check)
+ - TEXT (kein weiterer Format Check)
+ - DATE (Datumsformat, Timestamp Umwandlung)
+
+ Formtype:
+ - TEXT (normales Textfeld)
+ - TEXTAREA (normales Textfeld)
+ - PASSWORD (Feldinhalt wird nicht angezeigt)
+ - SELECT (Gibt Werte als option Feld aus)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hinweis:
+ Das ID-Feld ist nicht bei den Table Values einzuf�gen.
+
+
+*/
+
+$form['title'] = 'Users';
+$form['description'] = 'Form to edit systemusers.';
+$form['name'] = 'users';
+$form['action'] = 'users_edit.php';
+$form['db_table'] = 'sys_user';
+$form['db_table_idx'] = 'userid';
+$form["db_history"] = "no";
+$form['tab_default'] = 'users';
+$form['list_default'] = 'users_list.php';
+$form['auth'] = 'yes';
+
+//* 0 = id of the user, > 0 id must match with id of current user
+$form['auth_preset']['userid'] = 0;
+//* 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form['auth_preset']['groupid'] = 0;
+
+//** Permissions are: r = read, i = insert, u = update, d = delete
+$form['auth_preset']['perm_user'] = 'riud';
+$form['auth_preset']['perm_group'] = 'riud';
+$form['auth_preset']['perm_other'] = '';
+
+//* Pick out modules
+$modules_list = array();
+$handle = @opendir(ISPC_WEB_PATH);
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_dir(ISPC_WEB_PATH."/$file")) {
+ if(is_file(ISPC_WEB_PATH."/$file/lib/module.conf.php") and $file != 'login' && $file != 'designer') {
+ $modules_list[$file] = $file;
+ }
+ }
+ }
+}
+
+//* Load themes
+$themes_list = array();
+$handle = @opendir(ISPC_THEMES_PATH);
+while ($file = @readdir ($handle)) {
+ if (substr($file, 0, 1) != '.') {
+ if(@is_dir(ISPC_THEMES_PATH."/$file")) {
+ $themes_list[$file] = $file;
+ }
+ }
+}
+
+//* Languages
+$language_list = array();
+$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
+ $tmp = substr($file, 0, 2);
+ $language_list[$tmp] = $tmp;
+ }
+ }
+}
+
+//* Pick out groups
+$groups_list = array();
+$tmp_records = $app->db->queryAllRecords('SELECT groupid, name FROM sys_group ORDER BY name');
+if(is_array($tmp_records)) {
+ foreach($tmp_records as $tmp_rec) {
+ $groups_list[$tmp_rec['groupid']] = $tmp_rec['name'];
+ }
+}
+
+$form['tabs']['users'] = array (
+ 'title' => 'Users',
+ 'width' => 80,
+ 'template' => 'templates/users_user_edit.htm',
+ 'fields' => array (
+ ##################################
+ # Beginn Datenbankfelder
+ ##################################
+ 'username' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'username_empty'),
+ 1 => array ( 'type' => 'UNIQUE',
+ 'errmsg'=> 'username_unique'),
+ 2 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[\w\.\-\_]{0,64}$/',
+ 'errmsg'=> 'username_err'),
+ ),
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '15',
+ 'maxlength' => '30',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'passwort' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'PASSWORD',
+ 'encryption'=> 'CRYPT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '15',
+ 'maxlength' => '100',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'modules' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => 'admin,forms',
+ 'value' => $modules_list,
+ 'separator' => ',',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'startmodule' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => $modules_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'app_theme' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'RADIO',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => 'default',
+ 'value' => $themes_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'typ' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'RADIO',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => 'user',
+ 'value' => array ('user' => 'user', 'admin' => 'admin'),
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'active' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'CHECKBOX',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => array(0 => 0,1 => 1),
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'language' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => $language_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '2',
+ 'rows' => '',
+ 'cols' => ''
+ )
+ ##################################
+ # ENDE Datenbankfelder
+ ##################################
+ )
+);
+/*
+$form['tabs']['address'] = array (
+ 'title' => 'Address',
+ 'width' => 80,
+ 'template' => 'templates/users_address_edit.htm',
+ 'fields' => array (
+ ##################################
+ # Beginn Datenbankfelder
+ ##################################
+ 'name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'vorname' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'unternehmen' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'strasse' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'ort' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'plz' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'land' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'email' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'url' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'telefon' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'fax' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ )
+
+ ##################################
+ # ENDE Datenbankfelder
+ ##################################
+ )
+);
+*/
+
+$form['tabs']['groups'] = array (
+ 'title' => 'Groups',
+ 'width' => 80,
+ 'template' => 'templates/users_groups_edit.htm',
+ 'fields' => array (
+ ##################################
+ # Beginn Datenbankfelder
+ ##################################
+ 'default_group' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => $groups_list,
+ 'separator' => ',',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'groups' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => $groups_list,
+ 'separator' => ',',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ )
+
+ ##################################
+ # ENDE Datenbankfelder
+ ##################################
+ )
+);
+
?>
\ No newline at end of file
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index c97ca0e..f672e99 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -1,84 +1,84 @@
-<?php
-$wb["try_rescue_txt"] = 'Activate rescue of all services installed at this server';
-$wb["do_not_try_rescue_apache_txt"] = 'If rescue ist activated, do NOT try to rescue Apache';
-$wb["do_not_try_rescue_mysql_txt"] = 'If rescue ist activated, do NOT try to rescue mysql';
-$wb["do_not_try_rescue_mail_txt"] = 'If rescue ist activated, do NOT try to rescue mail';
-$wb["jailkit_chroot_home_txt"] = 'Jailkit chroot home';
-$wb["jailkit_chroot_app_sections_txt"] = 'Jailkit chroot app sections';
-$wb["jailkit_chroot_app_programs_txt"] = 'Jailkit chrooted applications';
-$wb["jailkit_chroot_cron_programs_txt"] = 'Jailkit cron chrooted applications';
-$wb["website_path_txt"] = 'Website path';
-$wb["website_symlinks_txt"] = 'Website symlinks';
-$wb["website_basedir_txt"] = 'Website basedir';
-$wb["vhost_conf_dir_txt"] = 'Vhost config dir';
-$wb["vhost_conf_enabled_dir_txt"] = 'Vhost config enabled dir';
-$wb["getmail_config_dir_txt"] = 'Getmail config dir';
-$wb["fastcgi_starter_path_txt"] = 'FastCGI starter path';
-$wb["fastcgi_starter_script_txt"] = 'FastCGI starter script';
-$wb["fastcgi_alias_txt"] = 'FastCGI Alias';
-$wb["fastcgi_phpini_path_txt"] = 'FastCGI php.ini Path';
-$wb["fastcgi_children_txt"] = 'FastCGI Children';
-$wb["fastcgi_max_requests_txt"] = 'FastCGI max. Requests';
-$wb["fastcgi_bin_txt"] = 'FastCGI Bin';
-$wb["module_txt"] = 'Module';
-$wb["maildir_path_txt"] = 'Maildir Path';
-$wb["homedir_path_txt"] = 'Homedir Path';
-$wb["mailuser_uid_txt"] = 'Mailuser UID';
-$wb["mailuser_gid_txt"] = 'Mailuser GID';
-$wb["mailuser_name_txt"] = 'Mailuser Name';
-$wb["mailuser_group_txt"] = 'Mailuser Group';
-$wb["relayhost_txt"] = 'Relayhost';
-$wb["relayhost_user_txt"] = 'Relayhost User';
-$wb["relayhost_password_txt"] = 'Relayhost Password';
-$wb["mailbox_size_limit_txt"] = 'Mailbox Size Limit';
-$wb["message_size_limit_txt"] = 'Message Size Limit';
-$wb["ip_address_txt"] = 'IP Address';
-$wb["netmask_txt"] = 'Netmask';
-$wb["gateway_txt"] = 'Gateway';
-$wb["hostname_txt"] = 'Hostname';
-$wb["nameservers_txt"] = 'Nameservers';
-$wb["auto_network_configuration_txt"] = 'Network Configuration';
-$wb["ip_address_error_wrong"] = 'Invalid IP address format.';
-$wb["netmask_error_wrong"] = 'Invalid Netmask format.';
-$wb["gateway_error_wrong"] = 'Invalid Gateway format.';
-$wb["hostname_error_empty"] = 'Hostname is empty.';
-$wb["nameservers_error_empty"] = 'Nameserver is empty.';
-$wb["config_dir_txt"] = 'Config directory';
-$wb["init_script_txt"] = 'Cron init script name';
-$wb["crontab_dir_txt"] = 'Path for individual crontabs';
-$wb["wget_txt"] = 'Path to wget program';
-$wb["web_user_txt"] = 'Apache user';
-$wb["web_group_txt"] = 'Apache group';
-$wb["security_level_txt"] = 'Security level';
-$wb["loglevel_txt"] = 'Loglevel';
-$wb["apps_vhost_port_txt"] = 'Apps-vhost port';
-$wb["apps_vhost_ip_txt"] = 'Apps-vhost IP';
-$wb["apps_vhost_servername_txt"] = 'Apps-vhost Domain';
-$wb["bind_user_txt"] = 'BIND User';
-$wb["bind_group_txt"] = 'BIND Group';
-$wb["bind_zonefiles_dir_txt"] = 'BIND zonefiles directory';
-$wb["named_conf_path_txt"] = 'BIND named.conf path';
-$wb["bind_user_error_empty"] = 'BIND user is empty.';
-$wb["bind_group_error_empty"] = 'BIND group is empty.';
-$wb["bind_zonefiles_dir_error_empty"] = 'BIND zonefiles directory is empty.';
-$wb["named_conf_path_error_empty"] = 'BIND named.conf path is empty.';
-$wb["named_conf_local_path_error_empty"] = 'BIND named.conf.local path is empty.';
-$wb["mail_filter_syntax_txt"] = 'Mailfilter Syntax';
-$wb["pop3_imap_daemon_txt"] = 'POP3/IMAP Daemon';
-$wb["php_open_basedir_txt"] = 'PHP open_basedir';
-$wb["php_open_basedir_error_empty"] = 'PHP open_basedir is empty.';
-$wb["htaccess_allow_override_txt"] = '.htaccess AllowOverride';
-$wb["htaccess_allow_override_error_empty"] = '.htaccess AllowOverride is empty.';
-$wb["awstats_conf_dir_txt"] = 'awstats conf folder';
-$wb["awstats_data_dir_txt"] = 'awstats data folder';
-$wb["awstats_pl_txt"] = 'awstats.pl script';
-$wb["awstats_buildstaticpages_pl_txt"] = 'awstats_buildstaticpages.pl script';
-$wb["backup_dir_txt"] = 'Backup directory';
-$wb["named_conf_local_path_txt"] = 'BIND named.conf.local path';
-$wb["php_ini_path_cgi_txt"] = 'CGI php.ini path';
-$wb["php_ini_path_apache_txt"] = 'Apache php.ini path';
-$wb["check_apache_config_txt"] = 'Test apache configuration on restart';
-$wb["network_config_warning_txt"] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.';
+<?php
+$wb["try_rescue_txt"] = 'Activate rescue of all services installed at this server';
+$wb["do_not_try_rescue_apache_txt"] = 'If rescue ist activated, do NOT try to rescue Apache';
+$wb["do_not_try_rescue_mysql_txt"] = 'If rescue ist activated, do NOT try to rescue mysql';
+$wb["do_not_try_rescue_mail_txt"] = 'If rescue ist activated, do NOT try to rescue mail';
+$wb["jailkit_chroot_home_txt"] = 'Jailkit chroot home';
+$wb["jailkit_chroot_app_sections_txt"] = 'Jailkit chroot app sections';
+$wb["jailkit_chroot_app_programs_txt"] = 'Jailkit chrooted applications';
+$wb["jailkit_chroot_cron_programs_txt"] = 'Jailkit cron chrooted applications';
+$wb["website_path_txt"] = 'Website path';
+$wb["website_symlinks_txt"] = 'Website symlinks';
+$wb["website_basedir_txt"] = 'Website basedir';
+$wb["vhost_conf_dir_txt"] = 'Vhost config dir';
+$wb["vhost_conf_enabled_dir_txt"] = 'Vhost config enabled dir';
+$wb["getmail_config_dir_txt"] = 'Getmail config dir';
+$wb["fastcgi_starter_path_txt"] = 'FastCGI starter path';
+$wb["fastcgi_starter_script_txt"] = 'FastCGI starter script';
+$wb["fastcgi_alias_txt"] = 'FastCGI Alias';
+$wb["fastcgi_phpini_path_txt"] = 'FastCGI php.ini Path';
+$wb["fastcgi_children_txt"] = 'FastCGI Children';
+$wb["fastcgi_max_requests_txt"] = 'FastCGI max. Requests';
+$wb["fastcgi_bin_txt"] = 'FastCGI Bin';
+$wb["module_txt"] = 'Module';
+$wb["maildir_path_txt"] = 'Maildir Path';
+$wb["homedir_path_txt"] = 'Homedir Path';
+$wb["mailuser_uid_txt"] = 'Mailuser UID';
+$wb["mailuser_gid_txt"] = 'Mailuser GID';
+$wb["mailuser_name_txt"] = 'Mailuser Name';
+$wb["mailuser_group_txt"] = 'Mailuser Group';
+$wb["relayhost_txt"] = 'Relayhost';
+$wb["relayhost_user_txt"] = 'Relayhost User';
+$wb["relayhost_password_txt"] = 'Relayhost Password';
+$wb["mailbox_size_limit_txt"] = 'Mailbox Size Limit';
+$wb["message_size_limit_txt"] = 'Message Size Limit';
+$wb["ip_address_txt"] = 'IP Address';
+$wb["netmask_txt"] = 'Netmask';
+$wb["gateway_txt"] = 'Gateway';
+$wb["hostname_txt"] = 'Hostname';
+$wb["nameservers_txt"] = 'Nameservers';
+$wb["auto_network_configuration_txt"] = 'Network Configuration';
+$wb["ip_address_error_wrong"] = 'Invalid IP address format.';
+$wb["netmask_error_wrong"] = 'Invalid Netmask format.';
+$wb["gateway_error_wrong"] = 'Invalid Gateway format.';
+$wb["hostname_error_empty"] = 'Hostname is empty.';
+$wb["nameservers_error_empty"] = 'Nameserver is empty.';
+$wb["config_dir_txt"] = 'Config directory';
+$wb["init_script_txt"] = 'Cron init script name';
+$wb["crontab_dir_txt"] = 'Path for individual crontabs';
+$wb["wget_txt"] = 'Path to wget program';
+$wb["web_user_txt"] = 'Apache user';
+$wb["web_group_txt"] = 'Apache group';
+$wb["security_level_txt"] = 'Security level';
+$wb["loglevel_txt"] = 'Loglevel';
+$wb["apps_vhost_port_txt"] = 'Apps-vhost port';
+$wb["apps_vhost_ip_txt"] = 'Apps-vhost IP';
+$wb["apps_vhost_servername_txt"] = 'Apps-vhost Domain';
+$wb["bind_user_txt"] = 'BIND User';
+$wb["bind_group_txt"] = 'BIND Group';
+$wb["bind_zonefiles_dir_txt"] = 'BIND zonefiles directory';
+$wb["named_conf_path_txt"] = 'BIND named.conf path';
+$wb["bind_user_error_empty"] = 'BIND user is empty.';
+$wb["bind_group_error_empty"] = 'BIND group is empty.';
+$wb["bind_zonefiles_dir_error_empty"] = 'BIND zonefiles directory is empty.';
+$wb["named_conf_path_error_empty"] = 'BIND named.conf path is empty.';
+$wb["named_conf_local_path_error_empty"] = 'BIND named.conf.local path is empty.';
+$wb["mail_filter_syntax_txt"] = 'Mailfilter Syntax';
+$wb["pop3_imap_daemon_txt"] = 'POP3/IMAP Daemon';
+$wb["php_open_basedir_txt"] = 'PHP open_basedir';
+$wb["php_open_basedir_error_empty"] = 'PHP open_basedir is empty.';
+$wb["htaccess_allow_override_txt"] = '.htaccess AllowOverride';
+$wb["htaccess_allow_override_error_empty"] = '.htaccess AllowOverride is empty.';
+$wb["awstats_conf_dir_txt"] = 'awstats conf folder';
+$wb["awstats_data_dir_txt"] = 'awstats data folder';
+$wb["awstats_pl_txt"] = 'awstats.pl script';
+$wb["awstats_buildstaticpages_pl_txt"] = 'awstats_buildstaticpages.pl script';
+$wb["backup_dir_txt"] = 'Backup directory';
+$wb["named_conf_local_path_txt"] = 'BIND named.conf.local path';
+$wb["php_ini_path_cgi_txt"] = 'CGI php.ini path';
+$wb["php_ini_path_apache_txt"] = 'Apache php.ini path';
+$wb["check_apache_config_txt"] = 'Test apache configuration on restart';
+$wb["network_config_warning_txt"] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.';
$wb["CA_path_txt"] = 'CA Path';
$wb["CA_pass_txt"] = 'CA passphrase';
?>
\ No newline at end of file
diff --git a/interface/web/admin/lib/lang/en_users.lng b/interface/web/admin/lib/lang/en_users.lng
index 0f9a1c5..df00438 100644
--- a/interface/web/admin/lib/lang/en_users.lng
+++ b/interface/web/admin/lib/lang/en_users.lng
@@ -1,28 +1,28 @@
-<?php
-$wb["username_txt"] = 'Username';
-$wb["username_err"] = 'The username is too long or contains invalid characters.';
-$wb["username_empty"] = 'The username is empty.';
-$wb["username_unique"] = 'There is already a user with this username.';
-$wb["passwort_txt"] = 'Password';
-$wb["password_strength_txt"] = 'Password strength';
-$wb["modules_txt"] = 'Module';
-$wb["startmodule_txt"] = 'Startmodule';
-$wb["app_theme_txt"] = 'Design';
-$wb["typ_txt"] = 'Type';
-$wb["active_txt"] = 'Active';
-$wb["language_txt"] = 'Language';
-$wb["name_txt"] = 'Name';
-$wb["vorname_txt"] = 'Forename';
-$wb["unternehmen_txt"] = 'Company';
-$wb["strasse_txt"] = 'Street';
-$wb["ort_txt"] = 'City';
-$wb["plz_txt"] = 'ZIP';
-$wb["land_txt"] = 'Country';
-$wb["email_txt"] = 'Email';
-$wb["url_txt"] = 'Url';
-$wb["telefon_txt"] = 'Telephone';
-$wb["fax_txt"] = 'Fax';
-$wb["groups_txt"] = 'Groups';
-$wb["default_group_txt"] = 'Default Group';
-$wb["startmodule_err"] = 'Start module is not within modules.';
-?>
+<?php
+$wb["username_txt"] = 'Username';
+$wb["username_err"] = 'The username is too long or contains invalid characters.';
+$wb["username_empty"] = 'The username is empty.';
+$wb["username_unique"] = 'There is already a user with this username.';
+$wb["passwort_txt"] = 'Password';
+$wb["password_strength_txt"] = 'Password strength';
+$wb["modules_txt"] = 'Module';
+$wb["startmodule_txt"] = 'Startmodule';
+$wb["app_theme_txt"] = 'Design';
+$wb["typ_txt"] = 'Type';
+$wb["active_txt"] = 'Active';
+$wb["language_txt"] = 'Language';
+$wb["name_txt"] = 'Name';
+$wb["vorname_txt"] = 'Forename';
+$wb["unternehmen_txt"] = 'Company';
+$wb["strasse_txt"] = 'Street';
+$wb["ort_txt"] = 'City';
+$wb["plz_txt"] = 'ZIP';
+$wb["land_txt"] = 'Country';
+$wb["email_txt"] = 'Email';
+$wb["url_txt"] = 'Url';
+$wb["telefon_txt"] = 'Telephone';
+$wb["fax_txt"] = 'Fax';
+$wb["groups_txt"] = 'Groups';
+$wb["default_group_txt"] = 'Default Group';
+$wb["startmodule_err"] = 'Start module is not within modules.';
+?>
diff --git a/interface/web/admin/templates/firewall_edit.htm b/interface/web/admin/templates/firewall_edit.htm
index 554f7d0..4c59b55 100644
--- a/interface/web/admin/templates/firewall_edit.htm
+++ b/interface/web/admin/templates/firewall_edit.htm
@@ -1,38 +1,38 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_firewall">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="tcp_port">{tmpl_var name='tcp_port_txt'}</label>
- <input name="tcp_port" id="tcp_port" value="{tmpl_var name='tcp_port'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="udp_port">{tmpl_var name='udp_port_txt'}</label>
- <input name="udp_port" id="udp_port" value="{tmpl_var name='udp_port'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/firewall_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/firewall_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_firewall">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="tcp_port">{tmpl_var name='tcp_port_txt'}</label>
+ <input name="tcp_port" id="tcp_port" value="{tmpl_var name='tcp_port'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="udp_port">{tmpl_var name='udp_port_txt'}</label>
+ <input name="udp_port" id="udp_port" value="{tmpl_var name='udp_port'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/firewall_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/firewall_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/groups_edit.htm b/interface/web/admin/templates/groups_edit.htm
index 6a34347..34f1d81 100644
--- a/interface/web/admin/templates/groups_edit.htm
+++ b/interface/web/admin/templates/groups_edit.htm
@@ -1,26 +1,26 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_groups">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="name">{tmpl_var name='name_txt'}</label>
- <input name="name" id="name" value="{tmpl_var name='name'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
- </div>
- <div class="ctrlHolder">
- <label for="description">{tmpl_var name='description_txt'}</label>
- <textarea name="description" id="description" rows='5' cols='30'>{tmpl_var name='description'}</textarea>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/groups_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/groups_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_groups">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="name">{tmpl_var name='name_txt'}</label>
+ <input name="name" id="name" value="{tmpl_var name='name'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="description">{tmpl_var name='description_txt'}</label>
+ <textarea name="description" id="description" rows='5' cols='30'>{tmpl_var name='description'}</textarea>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/groups_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/groups_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/language_add.htm b/interface/web/admin/templates/language_add.htm
index b0ebde4..e395c69 100644
--- a/interface/web/admin/templates/language_add.htm
+++ b/interface/web/admin/templates/language_add.htm
@@ -1,32 +1,32 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_language_add">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Language Add</legend>
- <div class="ctrlHolder">
- <label for="lng_select">{tmpl_var name='language_select_txt'}</label>
- <select name="lng_select" id="language" class="selectInput withicons">
- {tmpl_var name='language_option'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="lng_new">{tmpl_var name='language_new_txt'}</label>
- <input name="lng_new" id="lng_new" value="" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
- <p class="formHint">{tmpl_var name='language_new_hint_txt'}</p>
- </div>
-
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/language_add.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/language_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
-
- </fieldset>
-
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_add">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Language Add</legend>
+ <div class="ctrlHolder">
+ <label for="lng_select">{tmpl_var name='language_select_txt'}</label>
+ <select name="lng_select" id="language" class="selectInput withicons">
+ {tmpl_var name='language_option'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="lng_new">{tmpl_var name='language_new_txt'}</label>
+ <input name="lng_new" id="lng_new" value="" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
+ <p class="formHint">{tmpl_var name='language_new_hint_txt'}</p>
+ </div>
+
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/language_add.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/language_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+
+ </fieldset>
+
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/language_edit.htm b/interface/web/admin/templates/language_edit.htm
index 1e5d306..75376df 100644
--- a/interface/web/admin/templates/language_edit.htm
+++ b/interface/web/admin/templates/language_edit.htm
@@ -1,32 +1,32 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_language_edit">
-
- <div class="pnl_formsarea">
- <fieldset id="wf_area_language_edit"><legend>Language File Edit: {tmpl_var name="file_path"}</legend>
- <span class="wf_oneField">
- <tmpl_loop name="records">
- <span class="wf_oneField">
- <label for="records[{tmpl_var name="key"}]" class="wf_preField">{tmpl_var name="key"}</label>
- <input type="text" id="records[{tmpl_var name="key"}]" name="records[{tmpl_var name="key"}]" value="{tmpl_var name='val'}" size="50" maxlength="255">
- </span>
- </tmpl_loop>
- </span>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- <input type="hidden" name="lang" value="{tmpl_var name='lang'}">
- <input type="hidden" name="lang_file" value="{tmpl_var name='lang_file'}">
- <input type="hidden" name="module" value="{tmpl_var name='module'}">
-
- <div class="wf_actions buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/language_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/language_list.php?lng_select={tmpl_var name='lang'}');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
-
-
-
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_edit">
+
+ <div class="pnl_formsarea">
+ <fieldset id="wf_area_language_edit"><legend>Language File Edit: {tmpl_var name="file_path"}</legend>
+ <span class="wf_oneField">
+ <tmpl_loop name="records">
+ <span class="wf_oneField">
+ <label for="records[{tmpl_var name="key"}]" class="wf_preField">{tmpl_var name="key"}</label>
+ <input type="text" id="records[{tmpl_var name="key"}]" name="records[{tmpl_var name="key"}]" value="{tmpl_var name='val'}" size="50" maxlength="255">
+ </span>
+ </tmpl_loop>
+ </span>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ <input type="hidden" name="lang" value="{tmpl_var name='lang'}">
+ <input type="hidden" name="lang_file" value="{tmpl_var name='lang_file'}">
+ <input type="hidden" name="module" value="{tmpl_var name='module'}">
+
+ <div class="wf_actions buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/language_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/language_list.php?lng_select={tmpl_var name='lang'}');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+
+
+
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/language_list.htm b/interface/web/admin/templates/language_list.htm
index 4c8fb0c..1c05fd3 100644
--- a/interface/web/admin/templates/language_list.htm
+++ b/interface/web/admin/templates/language_list.htm
@@ -1,47 +1,47 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_language_groups">
-
- <div class="pnl_toolsarea">
- <fieldset class="inlineLabels"><legend>Tools</legend>
- <div class="buttons">
- <div class="ctrlHolder">
- <label for="lng_select">{tmpl_var name='language_select_txt'}</label>
- <select name="lng_select" id="language" class="selectInput withicons" onChange="submitForm('pageForm','admin/language_list.php');">
- {tmpl_var name='language_option'}
- </select>
- </div>
- </div>
- </fieldset>
- </div>
-
- <div class="pnl_listarea">
- <fieldset><legend><tmpl_var name="list_head_txt"></legend>
- <table class="list">
- <thead>
- <tr>
- <th class="tbl_col_module" scope="col"><tmpl_var name="module_txt"></th>
- <th class="tbl_col_lang_file" scope="col"><tmpl_var name="lang_file_txt"></th>
- <th scope="col"><tmpl_var name="lang_file_date_txt"></th>
- </tr>
- </thead>
- <tbody>
- <tmpl_loop name="records">
- <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_module"><a href="#" onClick="loadContent('admin/language_edit.php?lang_file={tmpl_var name="lang_file"}&module={tmpl_var name="module"}&lang={tmpl_var name="lang"}');">{tmpl_var name="module"}</a></td>
- <td class="tbl_col_lang_file"><a href="#" onClick="loadContent('admin/language_edit.php?lang_file={tmpl_var name="lang_file"}&module={tmpl_var name="module"}&lang={tmpl_var name="lang"}');">{tmpl_var name="lang_file"}</a></td>
- <td><a href="#" onClick="loadContent('admin/language_edit.php?lang_file={tmpl_var name="lang_file"}&module={tmpl_var name="module"}&lang={tmpl_var name="lang"}');">{tmpl_var name="lang_file_date"}</a></td>
- </tr>
- </tmpl_loop>
- </tbody>
- <tfoot>
- <tr>
- <td class="tbl_footer tbl_paging" colspan="3"><tmpl_var name="paging"></td>
- </tr>
- </tfoot>
- </table>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_groups">
+
+ <div class="pnl_toolsarea">
+ <fieldset class="inlineLabels"><legend>Tools</legend>
+ <div class="buttons">
+ <div class="ctrlHolder">
+ <label for="lng_select">{tmpl_var name='language_select_txt'}</label>
+ <select name="lng_select" id="language" class="selectInput withicons" onChange="submitForm('pageForm','admin/language_list.php');">
+ {tmpl_var name='language_option'}
+ </select>
+ </div>
+ </div>
+ </fieldset>
+ </div>
+
+ <div class="pnl_listarea">
+ <fieldset><legend><tmpl_var name="list_head_txt"></legend>
+ <table class="list">
+ <thead>
+ <tr>
+ <th class="tbl_col_module" scope="col"><tmpl_var name="module_txt"></th>
+ <th class="tbl_col_lang_file" scope="col"><tmpl_var name="lang_file_txt"></th>
+ <th scope="col"><tmpl_var name="lang_file_date_txt"></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tmpl_loop name="records">
+ <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+ <td class="tbl_col_module"><a href="#" onClick="loadContent('admin/language_edit.php?lang_file={tmpl_var name="lang_file"}&module={tmpl_var name="module"}&lang={tmpl_var name="lang"}');">{tmpl_var name="module"}</a></td>
+ <td class="tbl_col_lang_file"><a href="#" onClick="loadContent('admin/language_edit.php?lang_file={tmpl_var name="lang_file"}&module={tmpl_var name="module"}&lang={tmpl_var name="lang"}');">{tmpl_var name="lang_file"}</a></td>
+ <td><a href="#" onClick="loadContent('admin/language_edit.php?lang_file={tmpl_var name="lang_file"}&module={tmpl_var name="module"}&lang={tmpl_var name="lang"}');">{tmpl_var name="lang_file_date"}</a></td>
+ </tr>
+ </tmpl_loop>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td class="tbl_footer tbl_paging" colspan="3"><tmpl_var name="paging"></td>
+ </tr>
+ </tfoot>
+ </table>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/remote_action_ispcupdate.htm b/interface/web/admin/templates/remote_action_ispcupdate.htm
index 8726622..156949a 100644
--- a/interface/web/admin/templates/remote_action_ispcupdate.htm
+++ b/interface/web/admin/templates/remote_action_ispcupdate.htm
@@ -1,25 +1,25 @@
-<h2><tmpl_var name="do_ispcupdate_caption"></h2>
-<p><tmpl_var name="do_ispcupdate_desc"></p>
-
-<div class="panel panel_language_add">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>{tmpl_var name='do_ispcupdate_caption'}</legend>
- <div class="ctrlHolder">
- <label for="server_select">{tmpl_var name='select_server_txt'}</label>
- <select name="server_select" id="server" class="selectInput" onchange="document.getElementById('OKMsg').style.visibility = 'hidden'; ">
- {tmpl_var name='server_option'}
- </select>
- </div>
- </fieldset>
-
- <tmpl_if name="msg">
- <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
- </tmpl_if>
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_do_txt'}" onClick="submitForm('pageForm','admin/remote_action_ispcupdate.php');"><span>{tmpl_var name='btn_do_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="do_ispcupdate_caption"></h2>
+<p><tmpl_var name="do_ispcupdate_desc"></p>
+
+<div class="panel panel_language_add">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>{tmpl_var name='do_ispcupdate_caption'}</legend>
+ <div class="ctrlHolder">
+ <label for="server_select">{tmpl_var name='select_server_txt'}</label>
+ <select name="server_select" id="server" class="selectInput" onchange="document.getElementById('OKMsg').style.visibility = 'hidden'; ">
+ {tmpl_var name='server_option'}
+ </select>
+ </div>
+ </fieldset>
+
+ <tmpl_if name="msg">
+ <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+ </tmpl_if>
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_do_txt'}" onClick="submitForm('pageForm','admin/remote_action_ispcupdate.php');"><span>{tmpl_var name='btn_do_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/remote_action_osupdate.htm b/interface/web/admin/templates/remote_action_osupdate.htm
index 27dc8e9..4e2ac5a 100644
--- a/interface/web/admin/templates/remote_action_osupdate.htm
+++ b/interface/web/admin/templates/remote_action_osupdate.htm
@@ -1,25 +1,25 @@
-<h2><tmpl_var name="do_osupdate_caption"></h2>
-<p><tmpl_var name="do_osupdate_desc"></p>
-
-<div class="panel panel_language_add">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>{tmpl_var name='do_osupdate_caption'}</legend>
- <div class="ctrlHolder">
- <label for="server_select">{tmpl_var name='select_server_txt'}</label>
- <select name="server_select" id="server" class="selectInput" onchange="document.getElementById('OKMsg').style.visibility = 'hidden'; ">
- {tmpl_var name='server_option'}
- </select>
- </div>
- </fieldset>
-
- <tmpl_if name="msg">
- <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
- </tmpl_if>
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_do_txt'}" onClick="submitForm('pageForm','admin/remote_action_osupdate.php');"><span>{tmpl_var name='btn_do_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="do_osupdate_caption"></h2>
+<p><tmpl_var name="do_osupdate_desc"></p>
+
+<div class="panel panel_language_add">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>{tmpl_var name='do_osupdate_caption'}</legend>
+ <div class="ctrlHolder">
+ <label for="server_select">{tmpl_var name='select_server_txt'}</label>
+ <select name="server_select" id="server" class="selectInput" onchange="document.getElementById('OKMsg').style.visibility = 'hidden'; ">
+ {tmpl_var name='server_option'}
+ </select>
+ </div>
+ </fieldset>
+
+ <tmpl_if name="msg">
+ <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+ </tmpl_if>
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_do_txt'}" onClick="submitForm('pageForm','admin/remote_action_osupdate.php');"><span>{tmpl_var name='btn_do_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/server_config_cron_edit.htm b/interface/web/admin/templates/server_config_cron_edit.htm
index 066693e..c378938 100644
--- a/interface/web/admin/templates/server_config_cron_edit.htm
+++ b/interface/web/admin/templates/server_config_cron_edit.htm
@@ -1,30 +1,30 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_server_config">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="init_script">{tmpl_var name='init_script_txt'}</label>
- <input name="init_script" id="init_script" value="{tmpl_var name='init_script'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="crontab_dir">{tmpl_var name='crontab_dir_txt'}</label>
- <input name="crontab_dir" id="crontab_dir" value="{tmpl_var name='crontab_dir'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="wget">{tmpl_var name='wget_txt'}</label>
- <input name="wget" id="wget" value="{tmpl_var name='wget'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_server_config">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="init_script">{tmpl_var name='init_script_txt'}</label>
+ <input name="init_script" id="init_script" value="{tmpl_var name='init_script'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="crontab_dir">{tmpl_var name='crontab_dir_txt'}</label>
+ <input name="crontab_dir" id="crontab_dir" value="{tmpl_var name='crontab_dir'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="wget">{tmpl_var name='wget_txt'}</label>
+ <input name="wget" id="wget" value="{tmpl_var name='wget'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/server_config_fastcgi_edit.htm b/interface/web/admin/templates/server_config_fastcgi_edit.htm
index 8551d87..6e1bfea 100644
--- a/interface/web/admin/templates/server_config_fastcgi_edit.htm
+++ b/interface/web/admin/templates/server_config_fastcgi_edit.htm
@@ -1,46 +1,46 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_server_config">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="fastcgi_starter_path">{tmpl_var name='fastcgi_starter_path_txt'}</label>
- <input name="fastcgi_starter_path" id="fastcgi_starter_path" value="{tmpl_var name='fastcgi_starter_path'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="fastcgi_starter_script">{tmpl_var name='fastcgi_starter_script_txt'}</label>
- <input name="fastcgi_starter_script" id="fastcgi_starter_script" value="{tmpl_var name='fastcgi_starter_script'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="fastcgi_alias">{tmpl_var name='fastcgi_alias_txt'}</label>
- <input name="fastcgi_alias" id="fastcgi_alias" value="{tmpl_var name='fastcgi_alias'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="fastcgi_phpini_path">{tmpl_var name='fastcgi_phpini_path_txt'}</label>
- <input name="fastcgi_phpini_path" id="fastcgi_phpini_path" value="{tmpl_var name='fastcgi_phpini_path'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="fastcgi_children">{tmpl_var name='fastcgi_children_txt'}</label>
- <input name="fastcgi_children" id="fastcgi_children" value="{tmpl_var name='fastcgi_children'}" size="40" maxlength="255" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="fastcgi_max_requests">{tmpl_var name='fastcgi_max_requests_txt'}</label>
- <input name="fastcgi_max_requests" id="fastcgi_max_requests" value="{tmpl_var name='fastcgi_max_requests'}" size="40" maxlength="255" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="fastcgi_bin">{tmpl_var name='fastcgi_bin_txt'}</label>
- <input name="fastcgi_bin" id="fastcgi_bin" value="{tmpl_var name='fastcgi_bin'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_server_config">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="fastcgi_starter_path">{tmpl_var name='fastcgi_starter_path_txt'}</label>
+ <input name="fastcgi_starter_path" id="fastcgi_starter_path" value="{tmpl_var name='fastcgi_starter_path'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="fastcgi_starter_script">{tmpl_var name='fastcgi_starter_script_txt'}</label>
+ <input name="fastcgi_starter_script" id="fastcgi_starter_script" value="{tmpl_var name='fastcgi_starter_script'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="fastcgi_alias">{tmpl_var name='fastcgi_alias_txt'}</label>
+ <input name="fastcgi_alias" id="fastcgi_alias" value="{tmpl_var name='fastcgi_alias'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="fastcgi_phpini_path">{tmpl_var name='fastcgi_phpini_path_txt'}</label>
+ <input name="fastcgi_phpini_path" id="fastcgi_phpini_path" value="{tmpl_var name='fastcgi_phpini_path'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="fastcgi_children">{tmpl_var name='fastcgi_children_txt'}</label>
+ <input name="fastcgi_children" id="fastcgi_children" value="{tmpl_var name='fastcgi_children'}" size="40" maxlength="255" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="fastcgi_max_requests">{tmpl_var name='fastcgi_max_requests_txt'}</label>
+ <input name="fastcgi_max_requests" id="fastcgi_max_requests" value="{tmpl_var name='fastcgi_max_requests'}" size="40" maxlength="255" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="fastcgi_bin">{tmpl_var name='fastcgi_bin_txt'}</label>
+ <input name="fastcgi_bin" id="fastcgi_bin" value="{tmpl_var name='fastcgi_bin'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/server_config_getmail_edit.htm b/interface/web/admin/templates/server_config_getmail_edit.htm
index fc86eb4..e8112cc 100644
--- a/interface/web/admin/templates/server_config_getmail_edit.htm
+++ b/interface/web/admin/templates/server_config_getmail_edit.htm
@@ -1,22 +1,22 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_server_config">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="getmail_config_dir">{tmpl_var name='getmail_config_dir_txt'}</label>
- <input name="getmail_config_dir" id="getmail_config_dir" value="{tmpl_var name='getmail_config_dir'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_server_config">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="getmail_config_dir">{tmpl_var name='getmail_config_dir_txt'}</label>
+ <input name="getmail_config_dir" id="getmail_config_dir" value="{tmpl_var name='getmail_config_dir'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/server_config_jailkit_edit.htm b/interface/web/admin/templates/server_config_jailkit_edit.htm
index 320fb87..2dd6035 100644
--- a/interface/web/admin/templates/server_config_jailkit_edit.htm
+++ b/interface/web/admin/templates/server_config_jailkit_edit.htm
@@ -1,34 +1,34 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_server_config">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="jailkit_chroot_home">{tmpl_var name='jailkit_chroot_home_txt'}</label>
- <input name="jailkit_chroot_home" id="jailkit_chroot_home" value="{tmpl_var name='jailkit_chroot_home'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="jailkit_chroot_app_sections">{tmpl_var name='jailkit_chroot_app_sections_txt'}</label>
- <input name="jailkit_chroot_app_sections" id="jailkit_chroot_app_sections" value="{tmpl_var name='jailkit_chroot_app_sections'}" size="40" maxlength="1000" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="jailkit_chroot_app_programs">{tmpl_var name='jailkit_chroot_app_programs_txt'}</label>
- <input name="jailkit_chroot_app_programs" id="jailkit_chroot_app_programs" value="{tmpl_var name='jailkit_chroot_app_programs'}" size="40" maxlength="1000" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="jailkit_chroot_cron_programs">{tmpl_var name='jailkit_chroot_cron_programs_txt'}</label>
- <input name="jailkit_chroot_cron_programs" id="jailkit_chroot_cron_programs" value="{tmpl_var name='jailkit_chroot_cron_programs'}" size="40" maxlength="1000" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_server_config">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="jailkit_chroot_home">{tmpl_var name='jailkit_chroot_home_txt'}</label>
+ <input name="jailkit_chroot_home" id="jailkit_chroot_home" value="{tmpl_var name='jailkit_chroot_home'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="jailkit_chroot_app_sections">{tmpl_var name='jailkit_chroot_app_sections_txt'}</label>
+ <input name="jailkit_chroot_app_sections" id="jailkit_chroot_app_sections" value="{tmpl_var name='jailkit_chroot_app_sections'}" size="40" maxlength="1000" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="jailkit_chroot_app_programs">{tmpl_var name='jailkit_chroot_app_programs_txt'}</label>
+ <input name="jailkit_chroot_app_programs" id="jailkit_chroot_app_programs" value="{tmpl_var name='jailkit_chroot_app_programs'}" size="40" maxlength="1000" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="jailkit_chroot_cron_programs">{tmpl_var name='jailkit_chroot_cron_programs_txt'}</label>
+ <input name="jailkit_chroot_cron_programs" id="jailkit_chroot_cron_programs" value="{tmpl_var name='jailkit_chroot_cron_programs'}" size="40" maxlength="1000" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/server_config_vlogger_edit.htm b/interface/web/admin/templates/server_config_vlogger_edit.htm
index bf6a82a..f468fae 100644
--- a/interface/web/admin/templates/server_config_vlogger_edit.htm
+++ b/interface/web/admin/templates/server_config_vlogger_edit.htm
@@ -1,22 +1,22 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_server_config">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="config_dir">{tmpl_var name='config_dir_txt'}</label>
- <input name="config_dir" id="config_dir" value="{tmpl_var name='config_dir'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_server_config">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="config_dir">{tmpl_var name='config_dir_txt'}</label>
+ <input name="config_dir" id="config_dir" value="{tmpl_var name='config_dir'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/server_edit_config.htm b/interface/web/admin/templates/server_edit_config.htm
index 02f6ef3..31208dc 100644
--- a/interface/web/admin/templates/server_edit_config.htm
+++ b/interface/web/admin/templates/server_edit_config.htm
@@ -1,22 +1,22 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_server">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="config">{tmpl_var name='config_txt'}</label>
- <textarea name="config" id="config" rows='20' cols='40'>{tmpl_var name='config'}</textarea>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_server">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="config">{tmpl_var name='config_txt'}</label>
+ <textarea name="config" id="config" rows='20' cols='40'>{tmpl_var name='config'}</textarea>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/server_ip_edit.htm b/interface/web/admin/templates/server_ip_edit.htm
index 1ebe8bd..87e3d4b 100644
--- a/interface/web/admin/templates/server_ip_edit.htm
+++ b/interface/web/admin/templates/server_ip_edit.htm
@@ -1,34 +1,34 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_server_ip">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="ip_address">{tmpl_var name='ip_address_txt'}</label>
- <input name="ip_address" id="ip_address" value="{tmpl_var name='ip_address'}" size="15" maxlength="15" type="text" class="textInput formLengthIPv4" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='virtualhost_txt'}</p>
- <div class="multiField">
- {tmpl_var name='virtualhost'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_ip_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_ip_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_server_ip">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="ip_address">{tmpl_var name='ip_address_txt'}</label>
+ <input name="ip_address" id="ip_address" value="{tmpl_var name='ip_address'}" size="15" maxlength="15" type="text" class="textInput formLengthIPv4" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='virtualhost_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='virtualhost'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_ip_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_ip_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/software_package_install.htm b/interface/web/admin/templates/software_package_install.htm
index d034de7..fddda4f 100644
--- a/interface/web/admin/templates/software_package_install.htm
+++ b/interface/web/admin/templates/software_package_install.htm
@@ -1,30 +1,30 @@
-<h2><tmpl_var name="head_txt"></h2>
-<p><tmpl_var name="desc_txt"></p>
-
-<div class="panel panel_software_repo">
-<tmpl_if name="message_err">
-<div id="errorMsg"><tmpl_var name="message_err"></div>
-</tmpl_if>
-<tmpl_if name="message_ok">
-<div id="OKMsg"><tmpl_var name="message_ok"></div>
-</tmpl_if>
-<tmpl_if name="insert_key">
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <p> </p>
- <div class="ctrlHolder">
- <label for="install_key">{tmpl_var name='install_key_txt'}</label>
- <input name="install_key" id="install_key" value="{tmpl_var name='install_key'}" size="40" maxlength="40" type="text" class="textInput" />
- </div>
-
- <input type="hidden" name="package" value="{tmpl_var name='package_name'}">
- <input type="hidden" name="server_id" value="{tmpl_var name='server_id'}">
- <p> </p>
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/software_package_install.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/software_package_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </fieldset>
- </div>
-</tmpl_if>
+<h2><tmpl_var name="head_txt"></h2>
+<p><tmpl_var name="desc_txt"></p>
+
+<div class="panel panel_software_repo">
+<tmpl_if name="message_err">
+<div id="errorMsg"><tmpl_var name="message_err"></div>
+</tmpl_if>
+<tmpl_if name="message_ok">
+<div id="OKMsg"><tmpl_var name="message_ok"></div>
+</tmpl_if>
+<tmpl_if name="insert_key">
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <p> </p>
+ <div class="ctrlHolder">
+ <label for="install_key">{tmpl_var name='install_key_txt'}</label>
+ <input name="install_key" id="install_key" value="{tmpl_var name='install_key'}" size="40" maxlength="40" type="text" class="textInput" />
+ </div>
+
+ <input type="hidden" name="package" value="{tmpl_var name='package_name'}">
+ <input type="hidden" name="server_id" value="{tmpl_var name='server_id'}">
+ <p> </p>
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/software_package_install.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/software_package_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </fieldset>
+ </div>
+</tmpl_if>
</div>
\ No newline at end of file
diff --git a/interface/web/admin/templates/software_package_list.htm b/interface/web/admin/templates/software_package_list.htm
index 2c16c58..7a94318 100644
--- a/interface/web/admin/templates/software_package_list.htm
+++ b/interface/web/admin/templates/software_package_list.htm
@@ -1,46 +1,46 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_list_package">
-
- <div class="pnl_toolsarea">
- <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
- <div class="buttons">
- <button class="iconstxt icoAdd" type="button" onClick="loadContent('admin/software_package_list.php?action=repoupdate');">
- <span>{tmpl_var name="repoupdate_txt"}</span>
- </button>
- </div>
- </fieldset>
- </div>
-
- <div class="pnl_listarea">
- <fieldset><legend><tmpl_var name="list_head_txt"></legend>
- <table class="list">
- <thead>
- <tr>
- <th class="tbl_col_installed" scope="col"><tmpl_var name="installed_txt"></th>
- <th class="tbl_col_package_title" scope="col"><tmpl_var name="package_title_txt"></th>
- <th class="tbl_col_package_description" scope="col"><tmpl_var name="package_description_txt"></th>
- <th class="tbl_col_package_description" scope="col"><tmpl_var name="package_id_txt"></th>
- </tr>
- </thead>
- <tbody>
- <tmpl_loop name="records">
- <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_installed">{tmpl_var name="installed"}</td>
- <td class="tbl_col_package_title">{tmpl_var name="package_title"}</td>
- <td class="tbl_col_package_description">{tmpl_var name="package_description"}</td>
- <td class="tbl_col_package_description">ispapp{tmpl_var name="package_id"}</td>
- </tr>
- </tmpl_loop>
- </tbody>
- <tfoot>
- <tr>
- <td class="tbl_footer tbl_paging" colspan="4"></td>
- </tr>
- </tfoot>
- </table>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_list_package">
+
+ <div class="pnl_toolsarea">
+ <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
+ <div class="buttons">
+ <button class="iconstxt icoAdd" type="button" onClick="loadContent('admin/software_package_list.php?action=repoupdate');">
+ <span>{tmpl_var name="repoupdate_txt"}</span>
+ </button>
+ </div>
+ </fieldset>
+ </div>
+
+ <div class="pnl_listarea">
+ <fieldset><legend><tmpl_var name="list_head_txt"></legend>
+ <table class="list">
+ <thead>
+ <tr>
+ <th class="tbl_col_installed" scope="col"><tmpl_var name="installed_txt"></th>
+ <th class="tbl_col_package_title" scope="col"><tmpl_var name="package_title_txt"></th>
+ <th class="tbl_col_package_description" scope="col"><tmpl_var name="package_description_txt"></th>
+ <th class="tbl_col_package_description" scope="col"><tmpl_var name="package_id_txt"></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tmpl_loop name="records">
+ <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+ <td class="tbl_col_installed">{tmpl_var name="installed"}</td>
+ <td class="tbl_col_package_title">{tmpl_var name="package_title"}</td>
+ <td class="tbl_col_package_description">{tmpl_var name="package_description"}</td>
+ <td class="tbl_col_package_description">ispapp{tmpl_var name="package_id"}</td>
+ </tr>
+ </tmpl_loop>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td class="tbl_footer tbl_paging" colspan="4"></td>
+ </tr>
+ </tfoot>
+ </table>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/software_repo_edit.htm b/interface/web/admin/templates/software_repo_edit.htm
index af335ec..31b5db0 100644
--- a/interface/web/admin/templates/software_repo_edit.htm
+++ b/interface/web/admin/templates/software_repo_edit.htm
@@ -1,40 +1,40 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_software_repo">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="repo_name">{tmpl_var name='repo_name_txt'}</label>
- <input name="repo_name" id="repo_name" value="{tmpl_var name='repo_name'}" size="40" maxlength="40" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="repo_url">{tmpl_var name='repo_url_txt'}</label>
- <input name="repo_url" id="repo_url" value="{tmpl_var name='repo_url'}" size="40" maxlength="40" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="repo_username">{tmpl_var name='repo_username_txt'}</label>
- <input name="repo_username" id="repo_username" value="{tmpl_var name='repo_username'}" size="30" maxlength="30" type="text" class="textInput formLengthHalf" />
- </div>
- <div class="ctrlHolder">
- <label for="repo_password">{tmpl_var name='repo_password_txt'}</label>
- <input name="repo_password" id="repo_password" value="{tmpl_var name='repo_password'}" size="30" maxlength="30" type="password" class="textInput formLengthHalf" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/software_repo_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/software_repo_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_software_repo">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="repo_name">{tmpl_var name='repo_name_txt'}</label>
+ <input name="repo_name" id="repo_name" value="{tmpl_var name='repo_name'}" size="40" maxlength="40" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="repo_url">{tmpl_var name='repo_url_txt'}</label>
+ <input name="repo_url" id="repo_url" value="{tmpl_var name='repo_url'}" size="40" maxlength="40" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="repo_username">{tmpl_var name='repo_username_txt'}</label>
+ <input name="repo_username" id="repo_username" value="{tmpl_var name='repo_username'}" size="30" maxlength="30" type="text" class="textInput formLengthHalf" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="repo_password">{tmpl_var name='repo_password_txt'}</label>
+ <input name="repo_password" id="repo_password" value="{tmpl_var name='repo_password'}" size="30" maxlength="30" type="password" class="textInput formLengthHalf" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/software_repo_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/software_repo_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/software_update_list.htm b/interface/web/admin/templates/software_update_list.htm
index db2b036..d707fc9 100644
--- a/interface/web/admin/templates/software_update_list.htm
+++ b/interface/web/admin/templates/software_update_list.htm
@@ -1,49 +1,49 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_list_software_update">
-
- <div class="pnl_toolsarea">
- <fieldset class="inlineLabels"><legend>Tools</legend>
- <div class="buttons">
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_select_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput" onChange="submitForm('pageForm','admin/software_update_list.php');">
- <tmpl_loop name="servers">
- <option value="{tmpl_var name='server_id'}" {tmpl_var name='selected'}>{tmpl_var name='server_name'}</option>
- </tmpl_loop>
- </select>
- </div>
- </div>
- </fieldset>
- </div>
-
- <div class="pnl_listarea">
- <fieldset><legend><tmpl_var name="list_head_txt"></legend>
- <table class="list">
- <thead>
- <tr>
- <th class="tbl_col_installed" scope="col"><tmpl_var name="installed_txt"></th>
- <th class="tbl_col_update_title" scope="col"><tmpl_var name="update_title_txt"></th>
- <th class="tbl_col_version" scope="col"><tmpl_var name="version_txt"></th>
- </tr>
- </thead>
- <tbody>
- <tmpl_loop name="records">
- <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_installed">{tmpl_var name="installed"}</td>
- <td class="tbl_col_update_title">{tmpl_var name="update_title"}</td>
- <td class="tbl_col_version">{tmpl_var name="version"}</td>
- </tr>
- </tmpl_loop>
- </tbody>
- <tfoot>
- <tr>
- <td class="tbl_footer tbl_paging" colspan="3"></td>
- </tr>
- </tfoot>
- </table>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_list_software_update">
+
+ <div class="pnl_toolsarea">
+ <fieldset class="inlineLabels"><legend>Tools</legend>
+ <div class="buttons">
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_select_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput" onChange="submitForm('pageForm','admin/software_update_list.php');">
+ <tmpl_loop name="servers">
+ <option value="{tmpl_var name='server_id'}" {tmpl_var name='selected'}>{tmpl_var name='server_name'}</option>
+ </tmpl_loop>
+ </select>
+ </div>
+ </div>
+ </fieldset>
+ </div>
+
+ <div class="pnl_listarea">
+ <fieldset><legend><tmpl_var name="list_head_txt"></legend>
+ <table class="list">
+ <thead>
+ <tr>
+ <th class="tbl_col_installed" scope="col"><tmpl_var name="installed_txt"></th>
+ <th class="tbl_col_update_title" scope="col"><tmpl_var name="update_title_txt"></th>
+ <th class="tbl_col_version" scope="col"><tmpl_var name="version_txt"></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tmpl_loop name="records">
+ <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+ <td class="tbl_col_installed">{tmpl_var name="installed"}</td>
+ <td class="tbl_col_update_title">{tmpl_var name="update_title"}</td>
+ <td class="tbl_col_version">{tmpl_var name="version"}</td>
+ </tr>
+ </tmpl_loop>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td class="tbl_footer tbl_paging" colspan="3"></td>
+ </tr>
+ </tfoot>
+ </table>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/users_groups_edit.htm b/interface/web/admin/templates/users_groups_edit.htm
index 004c7db..0a1a979 100644
--- a/interface/web/admin/templates/users_groups_edit.htm
+++ b/interface/web/admin/templates/users_groups_edit.htm
@@ -1,30 +1,30 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_users">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="default_group">{tmpl_var name='default_group_txt'}</label>
- <select name="default_group" id="default_group" class="selectInput">
- {tmpl_var name='default_group'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='groups_txt'}</p>
- <div class="multiField">
- {tmpl_var name='groups'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/users_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/users_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_users">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="default_group">{tmpl_var name='default_group_txt'}</label>
+ <select name="default_group" id="default_group" class="selectInput">
+ {tmpl_var name='default_group'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='groups_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='groups'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/users_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/users_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/admin/templates/users_user_edit.htm b/interface/web/admin/templates/users_user_edit.htm
index ce00178..f16e9eb 100644
--- a/interface/web/admin/templates/users_user_edit.htm
+++ b/interface/web/admin/templates/users_user_edit.htm
@@ -1,67 +1,67 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_users">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="username">{tmpl_var name='username_txt'}</label>
- <input name="username" id="username" value="{tmpl_var name='username'}" size="15" maxlength="30" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="passwort">{tmpl_var name='passwort_txt'}</label>
- <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='password_strength_txt'}</p>
- <div id="passBar"></div>
- <p class="formHint"><span id="passText"> </span></p>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='modules_txt'}</p>
- <div class="multiField">
- {tmpl_var name='modules'}
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="startmodule">{tmpl_var name='startmodule_txt'}</label>
- <select name="startmodule" id="startmodule" class="selectInput formLengthHalf">
- {tmpl_var name='startmodule'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='app_theme_txt'}</p>
- <div class="multiField">
- {tmpl_var name='app_theme'}
- </div>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='typ_txt'}</p>
- <div class="multiField">
- {tmpl_var name='typ'}
- </div>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="language">{tmpl_var name='language_txt'}</label>
- <select name="language" id="language" class="selectInput withicons">
- {tmpl_var name='language'}
- </select>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/users_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/users_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_users">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="username">{tmpl_var name='username_txt'}</label>
+ <input name="username" id="username" value="{tmpl_var name='username'}" size="15" maxlength="30" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="passwort">{tmpl_var name='passwort_txt'}</label>
+ <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='password_strength_txt'}</p>
+ <div id="passBar"></div>
+ <p class="formHint"><span id="passText"> </span></p>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='modules_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='modules'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="startmodule">{tmpl_var name='startmodule_txt'}</label>
+ <select name="startmodule" id="startmodule" class="selectInput formLengthHalf">
+ {tmpl_var name='startmodule'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='app_theme_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='app_theme'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='typ_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='typ'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="language">{tmpl_var name='language_txt'}</label>
+ <select name="language" id="language" class="selectInput withicons">
+ {tmpl_var name='language'}
+ </select>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/users_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/users_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/capp.php b/interface/web/capp.php
index 354652c..02f5c7f 100644
--- a/interface/web/capp.php
+++ b/interface/web/capp.php
@@ -1,56 +1,56 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-require_once('../lib/config.inc.php');
-require_once('../lib/app.inc.php');
-
-// importiere Modul
-$mod = $_REQUEST["mod"];
-
-// Checke ob User eingeloggt
-if($_SESSION["s"]["user"]['active'] != 1) {
- header("Location: index.php?phpsessid=".$_SESSION["s"]["id"]);
- die();
-}
-
-// checke ob User Modul verwenden darf
-$user_modules = explode(",",$_SESSION["s"]["user"]["modules"]);
-
-if(!in_array($mod,$user_modules)) $app->error($app->lng(301));
-
-// lade Moduldaten in Session
-if(is_file($mod."/lib/module.conf.php")) {
- include_once($mod."/lib/module.conf.php");
- $_SESSION["s"]["module"] = $module;
- echo "HEADER_REDIRECT:".$_SESSION["s"]["module"]["startpage"];
-} else {
- $app->error($app->lng(302));
-}
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../lib/config.inc.php');
+require_once('../lib/app.inc.php');
+
+// importiere Modul
+$mod = $_REQUEST["mod"];
+
+// Checke ob User eingeloggt
+if($_SESSION["s"]["user"]['active'] != 1) {
+ header("Location: index.php?phpsessid=".$_SESSION["s"]["id"]);
+ die();
+}
+
+// checke ob User Modul verwenden darf
+$user_modules = explode(",",$_SESSION["s"]["user"]["modules"]);
+
+if(!in_array($mod,$user_modules)) $app->error($app->lng(301));
+
+// lade Moduldaten in Session
+if(is_file($mod."/lib/module.conf.php")) {
+ include_once($mod."/lib/module.conf.php");
+ $_SESSION["s"]["module"] = $module;
+ echo "HEADER_REDIRECT:".$_SESSION["s"]["module"]["startpage"];
+} else {
+ $app->error($app->lng(302));
+}
?>
\ No newline at end of file
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 61daec1..b6a54ae 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -1,860 +1,860 @@
-<?php
-
-/*
- Form Definition
-
- Tabledefinition
-
- Datatypes:
- - INTEGER (Forces the input to Int)
- - DOUBLE
- - CURRENCY (Formats the values to currency notation)
- - VARCHAR (no format check, maxlength: 255)
- - TEXT (no format check)
- - DATE (Dateformat, automatic conversion to timestamps)
-
- Formtype:
- - TEXT (Textfield)
- - TEXTAREA (Textarea)
- - PASSWORD (Password textfield, input is not shown when edited)
- - SELECT (Select option field)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hint:
- The ID field of the database table is not part of the datafield definition.
- The ID field must be always auto incement (int or bigint).
-
-
-*/
-
-$form["title"] = "Client";
-$form["description"] = "";
-$form["name"] = "client";
-$form["action"] = "client_edit.php";
-$form["db_table"] = "client";
-$form["db_table_idx"] = "client_id";
-$form["db_history"] = "yes";
-$form["tab_default"] = "address";
-$form["list_default"] = "client_list.php";
-$form["auth"] = 'yes';
-
-$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-//* Languages
-$language_list = array();
-$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
-while ($file = @readdir ($handle)) {
- if ($file != '.' && $file != '..') {
- if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
- $tmp = substr($file, 0, 2);
- $language_list[$tmp] = $tmp;
- }
- }
-}
-
-//* Load themes
-$themes_list = array();
-$handle = @opendir(ISPC_THEMES_PATH);
-while ($file = @readdir ($handle)) {
- if (substr($file, 0, 1) != '.') {
- if(@is_dir(ISPC_THEMES_PATH."/$file")) {
- $themes_list[$file] = $file;
- }
- }
-}
-
-$form["tabs"]['address'] = array (
- 'title' => "Address",
- 'width' => 100,
- 'template' => "templates/client_edit_address.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'company_name' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'contact_name' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'contact_error_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'customer_no' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'username' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'username_error_empty'),
- 1 => array ( 'type' => 'CUSTOM',
- 'class' => 'validate_client',
- 'function' => 'username_unique',
- 'errmsg'=> 'username_error_unique'),
- 2 => array ( 'type' => 'REGEX',
- 'regex' => '/^[\w\.\-\_]{0,64}$/',
- 'errmsg'=> 'username_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'password' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'PASSWORD',
- 'encryption'=> 'CRYPT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'language' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => $conf["language"],
- 'value' => $language_list,
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'usertheme' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => 'default',
- 'value' => $themes_list,
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'street' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'zip' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'city' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'state' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'country' => array (
- 'datatype' => 'VARCHAR',
-
- 'formtype' => 'SELECT',
- 'default' => 'DE',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT iso,printable_name FROM country ORDER BY printable_name',
- 'keyfield'=> 'iso',
- 'valuefield'=> 'printable_name'
- ),
- 'value' => ''
- ),
- 'telephone' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'mobile' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'fax' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'email' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'internet' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => 'http://',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'icq' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'vat_id' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'company_id' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '20',
- 'rows' => '',
- 'cols' => ''
- ),
- 'notes' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'TEXTAREA',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '',
- 'maxlength' => '',
- 'rows' => '10',
- 'cols' => '30'
- ),
- ##################################
- # END Datatable fields
- ##################################
- )
-);
-
-$form["tabs"]['limits'] = array (
- 'title' => "Limits",
- 'width' => 80,
- 'template' => "templates/client_edit_limits.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'template_master' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'CUSTOM',
- 'class'=> 'custom_datasource',
- 'function'=> 'master_templates'
- ),
- 'value' => ''
- ),
- 'template_additional' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- ),
- 'default_mailserver' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'CUSTOM',
- 'class'=> 'custom_datasource',
- 'function'=> 'client_servers'
- ),
- 'value' => '',
- 'name' => 'default_mailserver'
- ),
- 'limit_maildomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_maildomain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailbox' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailbox_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailalias' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailalias_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailaliasdomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailaliasdomain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailmailinglist' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailmailinglist_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailforward' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailforward_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailcatchall' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailcatchall_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailrouting' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailrouting_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailfilter' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailfilter_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_fetchmail' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailfetchmail_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailquota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailquota_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_wblist' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_wblist_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_user_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_policy' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_policy_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'default_webserver' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'CUSTOM',
- 'class'=> 'custom_datasource',
- 'function'=> 'client_servers'
- ),
- 'value' => '',
- 'name' => 'default_webserver'
- ),
- 'limit_web_domain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_domain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_web_quota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_quota_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'web_php_options' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOXARRAY',
- 'default' => '',
- 'separator' => ',',
- 'valuelimit' => 'client:web_php_options',
- 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP')
- ),
- 'limit_web_aliasdomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_aliasdomain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_web_subdomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_subdomain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_ftp_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_ftp_user_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_shell_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_shell_user_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'ssh_chroot' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOXARRAY',
- 'default' => '',
- 'separator' => ',',
- 'valuelimit' => 'client:ssh_chroot',
- 'value' => array('no' => 'None', 'jailkit' => 'Jailkit')
- ),
- 'limit_webdav_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_webdav_user_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'default_dnsserver' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'CUSTOM',
- 'class'=> 'custom_datasource',
- 'function'=> 'client_servers'
- ),
- 'value' => '',
- 'name' => 'default_dnsserver'
- ),
- 'limit_dns_zone' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_zone_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_dns_slave_zone' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_slave_zone_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_dns_record' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_record_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_client' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_client_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'default_dbserver' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'CUSTOM',
- 'class'=> 'custom_datasource',
- 'function'=> 'client_servers'
- ),
- 'value' => '',
- 'name' => 'default_dbserver'
- ),
- 'limit_database' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_database_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_cron' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_cron_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_cron_type' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'value' => array('full' => 'Full Cron','chrooted' => 'Chrooted Cron','url' => 'URL Cron')
- ),
- 'limit_cron_frequency' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_cron_error_frequency'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_traffic_quota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_traffic_quota_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- ##################################
- # END Datatable fields
- ##################################
- )
-);
-
-/*
-$form["tabs"]['ipaddress'] = array (
- 'title' => "IP Addresses",
- 'width' => 100,
- 'template' => "templates/client_edit_ipaddress.htm",
- 'fields' => array (
- ##################################
- # Beginn Datatable fields
- ##################################
- 'ip_address' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'CHECKBOXARRAY',
- 'default' => '',
- 'value' => array('192.168.0.1' => '192.168.0.1', '192.168.0.2' => '192.168.0.2'),
- 'separator' => ';'
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-*/
-
-
-?>
+<?php
+
+/*
+ Form Definition
+
+ Tabledefinition
+
+ Datatypes:
+ - INTEGER (Forces the input to Int)
+ - DOUBLE
+ - CURRENCY (Formats the values to currency notation)
+ - VARCHAR (no format check, maxlength: 255)
+ - TEXT (no format check)
+ - DATE (Dateformat, automatic conversion to timestamps)
+
+ Formtype:
+ - TEXT (Textfield)
+ - TEXTAREA (Textarea)
+ - PASSWORD (Password textfield, input is not shown when edited)
+ - SELECT (Select option field)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hint:
+ The ID field of the database table is not part of the datafield definition.
+ The ID field must be always auto incement (int or bigint).
+
+
+*/
+
+$form["title"] = "Client";
+$form["description"] = "";
+$form["name"] = "client";
+$form["action"] = "client_edit.php";
+$form["db_table"] = "client";
+$form["db_table_idx"] = "client_id";
+$form["db_history"] = "yes";
+$form["tab_default"] = "address";
+$form["list_default"] = "client_list.php";
+$form["auth"] = 'yes';
+
+$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+//* Languages
+$language_list = array();
+$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
+ $tmp = substr($file, 0, 2);
+ $language_list[$tmp] = $tmp;
+ }
+ }
+}
+
+//* Load themes
+$themes_list = array();
+$handle = @opendir(ISPC_THEMES_PATH);
+while ($file = @readdir ($handle)) {
+ if (substr($file, 0, 1) != '.') {
+ if(@is_dir(ISPC_THEMES_PATH."/$file")) {
+ $themes_list[$file] = $file;
+ }
+ }
+}
+
+$form["tabs"]['address'] = array (
+ 'title' => "Address",
+ 'width' => 100,
+ 'template' => "templates/client_edit_address.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'company_name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'contact_name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'contact_error_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'customer_no' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'username' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'username_error_empty'),
+ 1 => array ( 'type' => 'CUSTOM',
+ 'class' => 'validate_client',
+ 'function' => 'username_unique',
+ 'errmsg'=> 'username_error_unique'),
+ 2 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[\w\.\-\_]{0,64}$/',
+ 'errmsg'=> 'username_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'password' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'PASSWORD',
+ 'encryption'=> 'CRYPT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'language' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => $conf["language"],
+ 'value' => $language_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'usertheme' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => 'default',
+ 'value' => $themes_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'street' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'zip' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'city' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'state' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'country' => array (
+ 'datatype' => 'VARCHAR',
+
+ 'formtype' => 'SELECT',
+ 'default' => 'DE',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT iso,printable_name FROM country ORDER BY printable_name',
+ 'keyfield'=> 'iso',
+ 'valuefield'=> 'printable_name'
+ ),
+ 'value' => ''
+ ),
+ 'telephone' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'mobile' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'fax' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'email' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'internet' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => 'http://',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'icq' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'vat_id' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'company_id' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '20',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'notes' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXTAREA',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '',
+ 'maxlength' => '',
+ 'rows' => '10',
+ 'cols' => '30'
+ ),
+ ##################################
+ # END Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['limits'] = array (
+ 'title' => "Limits",
+ 'width' => 80,
+ 'template' => "templates/client_edit_limits.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'template_master' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'CUSTOM',
+ 'class'=> 'custom_datasource',
+ 'function'=> 'master_templates'
+ ),
+ 'value' => ''
+ ),
+ 'template_additional' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ ),
+ 'default_mailserver' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'CUSTOM',
+ 'class'=> 'custom_datasource',
+ 'function'=> 'client_servers'
+ ),
+ 'value' => '',
+ 'name' => 'default_mailserver'
+ ),
+ 'limit_maildomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_maildomain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailbox' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailbox_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailalias' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailalias_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailaliasdomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailaliasdomain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailmailinglist' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailmailinglist_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailforward' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailforward_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailcatchall' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailcatchall_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailrouting' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailrouting_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailfilter' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailfilter_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_fetchmail' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailfetchmail_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailquota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailquota_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_wblist' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_wblist_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_user_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_policy' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_policy_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'default_webserver' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'CUSTOM',
+ 'class'=> 'custom_datasource',
+ 'function'=> 'client_servers'
+ ),
+ 'value' => '',
+ 'name' => 'default_webserver'
+ ),
+ 'limit_web_domain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_domain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_web_quota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_quota_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'web_php_options' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'separator' => ',',
+ 'valuelimit' => 'client:web_php_options',
+ 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP')
+ ),
+ 'limit_web_aliasdomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_aliasdomain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_web_subdomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_subdomain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_ftp_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_ftp_user_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_shell_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_shell_user_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'ssh_chroot' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'separator' => ',',
+ 'valuelimit' => 'client:ssh_chroot',
+ 'value' => array('no' => 'None', 'jailkit' => 'Jailkit')
+ ),
+ 'limit_webdav_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_webdav_user_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'default_dnsserver' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'CUSTOM',
+ 'class'=> 'custom_datasource',
+ 'function'=> 'client_servers'
+ ),
+ 'value' => '',
+ 'name' => 'default_dnsserver'
+ ),
+ 'limit_dns_zone' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_zone_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_dns_slave_zone' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_slave_zone_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_dns_record' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_record_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_client' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_client_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'default_dbserver' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'CUSTOM',
+ 'class'=> 'custom_datasource',
+ 'function'=> 'client_servers'
+ ),
+ 'value' => '',
+ 'name' => 'default_dbserver'
+ ),
+ 'limit_database' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_database_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_cron' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_cron_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_cron_type' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'value' => array('full' => 'Full Cron','chrooted' => 'Chrooted Cron','url' => 'URL Cron')
+ ),
+ 'limit_cron_frequency' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_cron_error_frequency'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_traffic_quota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_traffic_quota_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ ##################################
+ # END Datatable fields
+ ##################################
+ )
+);
+
+/*
+$form["tabs"]['ipaddress'] = array (
+ 'title' => "IP Addresses",
+ 'width' => 100,
+ 'template' => "templates/client_edit_ipaddress.htm",
+ 'fields' => array (
+ ##################################
+ # Beginn Datatable fields
+ ##################################
+ 'ip_address' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'value' => array('192.168.0.1' => '192.168.0.1', '192.168.0.2' => '192.168.0.2'),
+ 'separator' => ';'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+*/
+
+
+?>
diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php
index dc1627c..628def1 100644
--- a/interface/web/client/form/client_template.tform.php
+++ b/interface/web/client/form/client_template.tform.php
@@ -1,524 +1,524 @@
-<?php
-
-/*
- Form Definition
-
- Tabledefinition
-
- Datatypes:
- - INTEGER (Forces the input to Int)
- - DOUBLE
- - CURRENCY (Formats the values to currency notation)
- - VARCHAR (no format check, maxlength: 255)
- - TEXT (no format check)
- - DATE (Dateformat, automatic conversion to timestamps)
-
- Formtype:
- - TEXT (Textfield)
- - TEXTAREA (Textarea)
- - PASSWORD (Password textfield, input is not shown when edited)
- - SELECT (Select option field)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hint:
- The ID field of the database table is not part of the datafield definition.
- The ID field must be always auto incement (int or bigint).
-
-
-*/
-
-$form["title"] = "Client-Templates";
-$form["description"] = "";
-$form["name"] = "client_template";
-$form["action"] = "client_template_edit.php";
-$form["db_table"] = "client_template";
-$form["db_table_idx"] = "template_id";
-$form["db_history"] = "no";
-$form["tab_default"] = "template";
-$form["list_default"] = "client_template_list.php";
-$form["auth"] = 'yes';
-
-$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-//* Languages
-$language_list = array();
-$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
-while ($file = @readdir ($handle)) {
- if ($file != '.' && $file != '..') {
- if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
- $tmp = substr($file, 0, 2);
- $language_list[$tmp] = $tmp;
- }
- }
-}
-
-$form["tabs"]['template'] = array (
- 'title' => "Template",
- 'width' => 80,
- 'template' => "templates/client_template_edit_template.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'template_type' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => 'm',
- 'value' => array('m' => "Main Template",'a' => "Additional Template"),
- ),
- 'template_name' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'error_template_name_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- ##################################
- # END Datatable fields
- ##################################
- )
-);
-
-$form["tabs"]['limits'] = array (
- 'title' => "Limits",
- 'width' => 80,
- 'template' => "templates/client_template_edit_limits.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'limit_maildomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_maildomain_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailbox' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailbox_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailalias' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailalias_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailaliasdomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailaliasdomain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailmailinglist' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailmailinglist_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailforward' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailforward_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailcatchall' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailcatchall_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailrouting' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailrouting_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailfilter' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailfilter_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_fetchmail' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailfetchmail_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailquota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailquota_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_wblist' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_wblist_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_user_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_policy' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_policy_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_web_domain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_domain_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_web_quota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_quota_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_web_aliasdomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_aliasdomain_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_web_subdomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_subdomain_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_ftp_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_ftp_user_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_shell_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_shell_user_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_webdav_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_webdav_user_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_dns_zone' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_zone_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_dns_slave_zone' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_slave_zone_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_dns_record' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_record_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- /*
- 'limit_client' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_client_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- */
- 'limit_database' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_database_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_cron' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_cron_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_cron_type' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'value' => array('full' => 'Full Cron','chrooted' => 'Chrooted Cron','url' => 'URL Cron')
- ),
- 'limit_cron_frequency' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_cron_error_frequency'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_traffic_quota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_traffic_quota_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- ##################################
- # END Datatable fields
- ##################################
- )
-);
-
-?>
+<?php
+
+/*
+ Form Definition
+
+ Tabledefinition
+
+ Datatypes:
+ - INTEGER (Forces the input to Int)
+ - DOUBLE
+ - CURRENCY (Formats the values to currency notation)
+ - VARCHAR (no format check, maxlength: 255)
+ - TEXT (no format check)
+ - DATE (Dateformat, automatic conversion to timestamps)
+
+ Formtype:
+ - TEXT (Textfield)
+ - TEXTAREA (Textarea)
+ - PASSWORD (Password textfield, input is not shown when edited)
+ - SELECT (Select option field)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hint:
+ The ID field of the database table is not part of the datafield definition.
+ The ID field must be always auto incement (int or bigint).
+
+
+*/
+
+$form["title"] = "Client-Templates";
+$form["description"] = "";
+$form["name"] = "client_template";
+$form["action"] = "client_template_edit.php";
+$form["db_table"] = "client_template";
+$form["db_table_idx"] = "template_id";
+$form["db_history"] = "no";
+$form["tab_default"] = "template";
+$form["list_default"] = "client_template_list.php";
+$form["auth"] = 'yes';
+
+$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+//* Languages
+$language_list = array();
+$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
+ $tmp = substr($file, 0, 2);
+ $language_list[$tmp] = $tmp;
+ }
+ }
+}
+
+$form["tabs"]['template'] = array (
+ 'title' => "Template",
+ 'width' => 80,
+ 'template' => "templates/client_template_edit_template.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'template_type' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => 'm',
+ 'value' => array('m' => "Main Template",'a' => "Additional Template"),
+ ),
+ 'template_name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'error_template_name_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # END Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['limits'] = array (
+ 'title' => "Limits",
+ 'width' => 80,
+ 'template' => "templates/client_template_edit_limits.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'limit_maildomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_maildomain_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailbox' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailbox_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailalias' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailalias_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailaliasdomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailaliasdomain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailmailinglist' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailmailinglist_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailforward' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailforward_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailcatchall' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailcatchall_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailrouting' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailrouting_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailfilter' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailfilter_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_fetchmail' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailfetchmail_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailquota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailquota_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_wblist' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_wblist_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_user_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_policy' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_policy_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_web_domain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_domain_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_web_quota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_quota_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_web_aliasdomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_aliasdomain_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_web_subdomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_subdomain_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_ftp_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_ftp_user_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_shell_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_shell_user_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_webdav_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_webdav_user_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_dns_zone' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_zone_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_dns_slave_zone' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_slave_zone_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_dns_record' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_record_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ /*
+ 'limit_client' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_client_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ */
+ 'limit_database' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_database_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_cron' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_cron_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_cron_type' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'value' => array('full' => 'Full Cron','chrooted' => 'Chrooted Cron','url' => 'URL Cron')
+ ),
+ 'limit_cron_frequency' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_cron_error_frequency'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_traffic_quota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_traffic_quota_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ ##################################
+ # END Datatable fields
+ ##################################
+ )
+);
+
+?>
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index ebd8af7..e35447f 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -1,640 +1,640 @@
-<?php
-
-/*
- Form Definition
-
- Tabledefinition
-
- Datatypes:
- - INTEGER (Forces the input to Int)
- - DOUBLE
- - CURRENCY (Formats the values to currency notation)
- - VARCHAR (no format check, maxlength: 255)
- - TEXT (no format check)
- - DATE (Dateformat, automatic conversion to timestamps)
-
- Formtype:
- - TEXT (Textfield)
- - TEXTAREA (Textarea)
- - PASSWORD (Password textfield, input is not shown when edited)
- - SELECT (Select option field)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hint:
- The ID field of the database table is not part of the datafield definition.
- The ID field must be always auto incement (int or bigint).
-
-
-*/
-
-$form["title"] = "Reseller";
-$form["description"] = "";
-$form["name"] = "reseller";
-$form["action"] = "reseller_edit.php";
-$form["db_table"] = "client";
-$form["db_table_idx"] = "client_id";
-$form["db_history"] = "yes";
-$form["tab_default"] = "address";
-$form["list_default"] = "reseller_list.php";
-$form["auth"] = 'yes';
-
-$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-//* Languages
-$language_list = array();
-$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
-while ($file = @readdir ($handle)) {
- if ($file != '.' && $file != '..') {
- if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
- $tmp = substr($file, 0, 2);
- $language_list[$tmp] = $tmp;
- }
- }
-}
-
-$form["tabs"]['address'] = array (
- 'title' => "Address",
- 'width' => 100,
- 'template' => "templates/reseller_edit_address.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'company_name' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'contact_name' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'contact_error_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'customer_no' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'username' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'username_error_empty'),
- 1 => array ( 'type' => 'CUSTOM',
- 'class' => 'validate_client',
- 'function' => 'username_unique',
- 'errmsg'=> 'username_error_unique'),
- 2 => array ( 'type' => 'REGEX',
- 'regex' => '/^[\w\.\-\_]{0,64}$/',
- 'errmsg'=> 'username_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'password' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'PASSWORD',
- 'encryption'=> 'CRYPT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'language' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => $conf["language"],
- 'value' => $language_list,
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'usertheme' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => 'default',
- 'value' => array('default' => 'default'),
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'street' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'zip' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'city' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'state' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'country' => array (
- 'datatype' => 'VARCHAR',
-
- 'formtype' => 'SELECT',
- 'default' => 'DE',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT iso,printable_name FROM country ORDER BY printable_name',
- 'keyfield'=> 'iso',
- 'valuefield'=> 'printable_name'
- ),
- 'value' => ''
- ),
- 'telephone' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'mobile' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'fax' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'email' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'internet' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => 'http://',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'icq' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'vat_id' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '255',
- 'rows' => '',
- 'cols' => ''
- ),
- 'notes' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'TEXTAREA',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '',
- 'maxlength' => '',
- 'rows' => '10',
- 'cols' => '30'
- ),
- ##################################
- # END Datatable fields
- ##################################
- )
-);
-
-$form["tabs"]['limits'] = array (
- 'title' => "Limits",
- 'width' => 80,
- 'template' => "templates/reseller_edit_limits.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'template_master' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'CUSTOM',
- 'class'=> 'custom_datasource',
- 'function'=> 'master_templates'
- ),
- 'value' => ''
- ),
- 'template_additional' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- ),
- 'default_mailserver' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT server_id,server_name FROM server WHERE mail_server = 1 AND {AUTHSQL} ORDER BY server_name',
- 'keyfield'=> 'server_id',
- 'valuefield'=> 'server_name'
- ),
- 'value' => ''
- ),
- 'limit_maildomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_maildomain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailmailinglist' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailmailinglist_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailbox' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailbox_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailalias' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailalias_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailforward' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailforward_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailcatchall' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailcatchall_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailrouting' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailrouting_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailfilter' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailfilter_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_fetchmail' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailfetchmail_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_mailquota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_mailquota_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_wblist' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_wblist_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_user_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_spamfilter_policy' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_spamfilter_policy_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'default_webserver' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT server_id,server_name FROM server WHERE web_server = 1 AND {AUTHSQL} ORDER BY server_name',
- 'keyfield'=> 'server_id',
- 'valuefield'=> 'server_name'
- ),
- 'value' => ''
- ),
- 'limit_web_domain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_domain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_web_quota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_quota_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'web_php_options' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOXARRAY',
- 'default' => '',
- 'separator' => ',',
- 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP')
- ),
- 'limit_web_aliasdomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_aliasdomain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_web_subdomain' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_web_subdomain_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_ftp_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_ftp_user_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_shell_user' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_shell_user_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'ssh_chroot' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOXARRAY',
- 'default' => '',
- 'separator' => ',',
- 'value' => array('no' => 'None', 'jailkit' => 'Jailkit')
- ),
+<?php
+
+/*
+ Form Definition
+
+ Tabledefinition
+
+ Datatypes:
+ - INTEGER (Forces the input to Int)
+ - DOUBLE
+ - CURRENCY (Formats the values to currency notation)
+ - VARCHAR (no format check, maxlength: 255)
+ - TEXT (no format check)
+ - DATE (Dateformat, automatic conversion to timestamps)
+
+ Formtype:
+ - TEXT (Textfield)
+ - TEXTAREA (Textarea)
+ - PASSWORD (Password textfield, input is not shown when edited)
+ - SELECT (Select option field)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hint:
+ The ID field of the database table is not part of the datafield definition.
+ The ID field must be always auto incement (int or bigint).
+
+
+*/
+
+$form["title"] = "Reseller";
+$form["description"] = "";
+$form["name"] = "reseller";
+$form["action"] = "reseller_edit.php";
+$form["db_table"] = "client";
+$form["db_table_idx"] = "client_id";
+$form["db_history"] = "yes";
+$form["tab_default"] = "address";
+$form["list_default"] = "reseller_list.php";
+$form["auth"] = 'yes';
+
+$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+//* Languages
+$language_list = array();
+$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
+ $tmp = substr($file, 0, 2);
+ $language_list[$tmp] = $tmp;
+ }
+ }
+}
+
+$form["tabs"]['address'] = array (
+ 'title' => "Address",
+ 'width' => 100,
+ 'template' => "templates/reseller_edit_address.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'company_name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'contact_name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'contact_error_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'customer_no' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'username' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'username_error_empty'),
+ 1 => array ( 'type' => 'CUSTOM',
+ 'class' => 'validate_client',
+ 'function' => 'username_unique',
+ 'errmsg'=> 'username_error_unique'),
+ 2 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[\w\.\-\_]{0,64}$/',
+ 'errmsg'=> 'username_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'password' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'PASSWORD',
+ 'encryption'=> 'CRYPT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'language' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => $conf["language"],
+ 'value' => $language_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'usertheme' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => 'default',
+ 'value' => array('default' => 'default'),
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'street' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'zip' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'city' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'state' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'country' => array (
+ 'datatype' => 'VARCHAR',
+
+ 'formtype' => 'SELECT',
+ 'default' => 'DE',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT iso,printable_name FROM country ORDER BY printable_name',
+ 'keyfield'=> 'iso',
+ 'valuefield'=> 'printable_name'
+ ),
+ 'value' => ''
+ ),
+ 'telephone' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'mobile' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'fax' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'email' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'internet' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => 'http://',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'icq' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'vat_id' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'notes' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXTAREA',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '',
+ 'maxlength' => '',
+ 'rows' => '10',
+ 'cols' => '30'
+ ),
+ ##################################
+ # END Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['limits'] = array (
+ 'title' => "Limits",
+ 'width' => 80,
+ 'template' => "templates/reseller_edit_limits.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'template_master' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'CUSTOM',
+ 'class'=> 'custom_datasource',
+ 'function'=> 'master_templates'
+ ),
+ 'value' => ''
+ ),
+ 'template_additional' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ ),
+ 'default_mailserver' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT server_id,server_name FROM server WHERE mail_server = 1 AND {AUTHSQL} ORDER BY server_name',
+ 'keyfield'=> 'server_id',
+ 'valuefield'=> 'server_name'
+ ),
+ 'value' => ''
+ ),
+ 'limit_maildomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_maildomain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailmailinglist' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailmailinglist_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailbox' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailbox_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailalias' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailalias_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailforward' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailforward_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailcatchall' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailcatchall_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailrouting' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailrouting_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailfilter' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailfilter_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_fetchmail' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailfetchmail_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_mailquota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_mailquota_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_wblist' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_wblist_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_user_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_spamfilter_policy' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_spamfilter_policy_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'default_webserver' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT server_id,server_name FROM server WHERE web_server = 1 AND {AUTHSQL} ORDER BY server_name',
+ 'keyfield'=> 'server_id',
+ 'valuefield'=> 'server_name'
+ ),
+ 'value' => ''
+ ),
+ 'limit_web_domain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_domain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_web_quota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_quota_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'web_php_options' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'separator' => ',',
+ 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP')
+ ),
+ 'limit_web_aliasdomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_aliasdomain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_web_subdomain' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_web_subdomain_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_ftp_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_ftp_user_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_shell_user' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_shell_user_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'ssh_chroot' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'separator' => ',',
+ 'value' => array('no' => 'None', 'jailkit' => 'Jailkit')
+ ),
'limit_webdav_user' => array (
'datatype' => 'INTEGER',
'formtype' => 'TEXT',
@@ -649,177 +649,177 @@
'rows' => '',
'cols' => ''
),
- 'default_dnsserver' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT server_id,server_name FROM server WHERE dns_server = 1 AND {AUTHSQL} ORDER BY server_name',
- 'keyfield'=> 'server_id',
- 'valuefield'=> 'server_name'
- ),
- 'value' => ''
- ),
- 'limit_dns_zone' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_zone_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_dns_slave_zone' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_slave_zone_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_dns_record' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_dns_record_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_client' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_client_error_notint'),
- 1 => array ( 'type' => 'CUSTOM',
- 'class' => 'validate_reseller',
- 'function' => 'limit_client'),
- ),
- 'default' => '1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'default_dbserver' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '1',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT server_id,server_name FROM server WHERE db_server = 1 AND {AUTHSQL} ORDER BY server_name',
- 'keyfield'=> 'server_id',
- 'valuefield'=> 'server_name'
- ),
- 'value' => ''
- ),
- 'limit_database' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_database_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_cron' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_cron_error_notint'),
- ),
- 'default' => '0',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_cron_type' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'value' => array('full' => 'Full Cron','chrooted' => 'Chrooted Cron','url' => 'URL Cron')
- ),
- 'limit_cron_frequency' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_cron_error_frequency'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- 'limit_traffic_quota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISINT',
- 'errmsg'=> 'limit_traffic_quota_error_notint'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'separator' => '',
- 'width' => '10',
- 'maxlength' => '10',
- 'rows' => '',
- 'cols' => ''
- ),
- ##################################
- # END Datatable fields
- ##################################
- )
-);
-
-/*
-$form["tabs"]['ipaddress'] = array (
- 'title' => "IP Addresses",
- 'width' => 100,
- 'template' => "templates/client_edit_ipaddress.htm",
- 'fields' => array (
- ##################################
- # Beginn Datatable fields
- ##################################
- 'ip_address' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'CHECKBOXARRAY',
- 'default' => '',
- 'value' => array('192.168.0.1' => '192.168.0.1', '192.168.0.2' => '192.168.0.2'),
- 'separator' => ';'
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-*/
-
-
-?>
+ 'default_dnsserver' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT server_id,server_name FROM server WHERE dns_server = 1 AND {AUTHSQL} ORDER BY server_name',
+ 'keyfield'=> 'server_id',
+ 'valuefield'=> 'server_name'
+ ),
+ 'value' => ''
+ ),
+ 'limit_dns_zone' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_zone_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_dns_slave_zone' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_slave_zone_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_dns_record' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_dns_record_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_client' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_client_error_notint'),
+ 1 => array ( 'type' => 'CUSTOM',
+ 'class' => 'validate_reseller',
+ 'function' => 'limit_client'),
+ ),
+ 'default' => '1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'default_dbserver' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '1',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT server_id,server_name FROM server WHERE db_server = 1 AND {AUTHSQL} ORDER BY server_name',
+ 'keyfield'=> 'server_id',
+ 'valuefield'=> 'server_name'
+ ),
+ 'value' => ''
+ ),
+ 'limit_database' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_database_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_cron' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_cron_error_notint'),
+ ),
+ 'default' => '0',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_cron_type' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'value' => array('full' => 'Full Cron','chrooted' => 'Chrooted Cron','url' => 'URL Cron')
+ ),
+ 'limit_cron_frequency' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_cron_error_frequency'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'limit_traffic_quota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISINT',
+ 'errmsg'=> 'limit_traffic_quota_error_notint'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '10',
+ 'maxlength' => '10',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ ##################################
+ # END Datatable fields
+ ##################################
+ )
+);
+
+/*
+$form["tabs"]['ipaddress'] = array (
+ 'title' => "IP Addresses",
+ 'width' => 100,
+ 'template' => "templates/client_edit_ipaddress.htm",
+ 'fields' => array (
+ ##################################
+ # Beginn Datatable fields
+ ##################################
+ 'ip_address' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'value' => array('192.168.0.1' => '192.168.0.1', '192.168.0.2' => '192.168.0.2'),
+ 'separator' => ';'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+*/
+
+
+?>
diff --git a/interface/web/client/lib/admin.conf.php b/interface/web/client/lib/admin.conf.php
index a45d440..67c94a5 100644
--- a/interface/web/client/lib/admin.conf.php
+++ b/interface/web/client/lib/admin.conf.php
@@ -1,2 +1,2 @@
-<?php
+<?php
?>
\ No newline at end of file
diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm
index 520c3fa..8508046 100644
--- a/interface/web/client/templates/client_edit_address.htm
+++ b/interface/web/client/templates/client_edit_address.htm
@@ -1,114 +1,114 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_client">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Address</legend>
- <div class="ctrlHolder">
- <label for="company_name">{tmpl_var name='company_name_txt'}</label>
- <input name="company_name" id="company_name" value="{tmpl_var name='company_name'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="contact_name">{tmpl_var name='contact_name_txt'}*</label>
- <input name="contact_name" id="contact_name" value="{tmpl_var name='contact_name'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="customer_no">{tmpl_var name='customer_no_txt'}</label>
- <input name="customer_no" id="customer_no" value="{tmpl_var name='customer_no'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="username">{tmpl_var name='username_txt'}*</label>
- <input name="username" id="username" value="{tmpl_var name='username'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="password">{tmpl_var name='password_txt'}</label>
- <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='password_strength_txt'}</p>
- <div id="passBar"></div>
- <p class="formHint"><span id="passText"> </span></p>
- </div>
- <div class="ctrlHolder">
- <label for="language">{tmpl_var name='language_txt'}</label>
- <select name="language" id="language" class="selectInput withicons">
- {tmpl_var name='language'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="usertheme">{tmpl_var name='usertheme_txt'}</label>
- <select name="usertheme" id="usertheme" class="selectInput">
- {tmpl_var name='usertheme'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="street">{tmpl_var name='street_txt'}</label>
- <input name="street" id="street" value="{tmpl_var name='street'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="zip">{tmpl_var name='zip_txt'}</label>
- <input name="zip" id="zip" value="{tmpl_var name='zip'}" size="10" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="city">{tmpl_var name='city_txt'}</label>
- <input name="city" id="city" value="{tmpl_var name='city'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="state">{tmpl_var name='state_txt'}</label>
- <input name="state" id="state" value="{tmpl_var name='state'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="country">{tmpl_var name='country_txt'}</label>
- <select name="country" id="country" class="selectInput withicons">
- {tmpl_var name='country'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="telephone">{tmpl_var name='telephone_txt'}</label>
- <input name="telephone" id="telephone" value="{tmpl_var name='telephone'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="mobile">{tmpl_var name='mobile_txt'}</label>
- <input name="mobile" id="mobile" value="{tmpl_var name='mobile'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="fax">{tmpl_var name='fax_txt'}</label>
- <input name="fax" id="fax" value="{tmpl_var name='fax'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="email">{tmpl_var name='email_txt'}</label>
- <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="internet">{tmpl_var name='internet_txt'}</label>
- <input name="internet" id="internet" value="{tmpl_var name='internet'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="icq">{tmpl_var name='icq_txt'}</label>
- <input name="icq" id="icq" value="{tmpl_var name='icq'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="vat_id">{tmpl_var name='vat_id_txt'}</label>
- <input name="vat_id" id="vat_id" value="{tmpl_var name='vat_id'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="company_id">{tmpl_var name='company_id_txt'}</label>
- <input name="company_id" id="company_id" value="{tmpl_var name='company_id'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="notes">{tmpl_var name='notes_txt'}</label>
- <textarea name="notes" id="notes" rows='10' cols='30'>{tmpl_var name='notes'}</textarea>
- </div>
- {tmpl_var name='required_fields_txt'}
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_client">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Address</legend>
+ <div class="ctrlHolder">
+ <label for="company_name">{tmpl_var name='company_name_txt'}</label>
+ <input name="company_name" id="company_name" value="{tmpl_var name='company_name'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="contact_name">{tmpl_var name='contact_name_txt'}*</label>
+ <input name="contact_name" id="contact_name" value="{tmpl_var name='contact_name'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="customer_no">{tmpl_var name='customer_no_txt'}</label>
+ <input name="customer_no" id="customer_no" value="{tmpl_var name='customer_no'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="username">{tmpl_var name='username_txt'}*</label>
+ <input name="username" id="username" value="{tmpl_var name='username'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="password">{tmpl_var name='password_txt'}</label>
+ <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='password_strength_txt'}</p>
+ <div id="passBar"></div>
+ <p class="formHint"><span id="passText"> </span></p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="language">{tmpl_var name='language_txt'}</label>
+ <select name="language" id="language" class="selectInput withicons">
+ {tmpl_var name='language'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="usertheme">{tmpl_var name='usertheme_txt'}</label>
+ <select name="usertheme" id="usertheme" class="selectInput">
+ {tmpl_var name='usertheme'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="street">{tmpl_var name='street_txt'}</label>
+ <input name="street" id="street" value="{tmpl_var name='street'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="zip">{tmpl_var name='zip_txt'}</label>
+ <input name="zip" id="zip" value="{tmpl_var name='zip'}" size="10" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="city">{tmpl_var name='city_txt'}</label>
+ <input name="city" id="city" value="{tmpl_var name='city'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="state">{tmpl_var name='state_txt'}</label>
+ <input name="state" id="state" value="{tmpl_var name='state'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="country">{tmpl_var name='country_txt'}</label>
+ <select name="country" id="country" class="selectInput withicons">
+ {tmpl_var name='country'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="telephone">{tmpl_var name='telephone_txt'}</label>
+ <input name="telephone" id="telephone" value="{tmpl_var name='telephone'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="mobile">{tmpl_var name='mobile_txt'}</label>
+ <input name="mobile" id="mobile" value="{tmpl_var name='mobile'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="fax">{tmpl_var name='fax_txt'}</label>
+ <input name="fax" id="fax" value="{tmpl_var name='fax'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="email">{tmpl_var name='email_txt'}</label>
+ <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="internet">{tmpl_var name='internet_txt'}</label>
+ <input name="internet" id="internet" value="{tmpl_var name='internet'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="icq">{tmpl_var name='icq_txt'}</label>
+ <input name="icq" id="icq" value="{tmpl_var name='icq'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="vat_id">{tmpl_var name='vat_id_txt'}</label>
+ <input name="vat_id" id="vat_id" value="{tmpl_var name='vat_id'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="company_id">{tmpl_var name='company_id_txt'}</label>
+ <input name="company_id" id="company_id" value="{tmpl_var name='company_id'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="notes">{tmpl_var name='notes_txt'}</label>
+ <textarea name="notes" id="notes" rows='10' cols='30'>{tmpl_var name='notes'}</textarea>
+ </div>
+ {tmpl_var name='required_fields_txt'}
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm
index ae6ad73..c8b8819 100644
--- a/interface/web/client/templates/client_edit_limits.htm
+++ b/interface/web/client/templates/client_edit_limits.htm
@@ -1,202 +1,202 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_client">
-
- <tmpl_if name="is_admin">
- <div class="pnl_toolsarea">
- <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
- <div class="buttons">
- <button class="positive iconstxt icoAdd" type="button" value="Add additional template" onClick="addAdditionalTemplate();"><span>Add additional template</span></button>
- <button class="negative iconstxt icoDelete" type="button" value="Delete additional template" onClick="delAdditionalTemplate();"><span>Delete additional template</span></button>
- </div>
- </fieldset>
- </div>
- </tmpl_if>
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Limits</legend>
- <tmpl_if name="is_admin">
- <div class="ctrlHolder">
- <label for="template_master">{tmpl_var name='template_master_txt'}</label>
- <select name="template_master" id="template_master" class="selectInput">
- {tmpl_var name='template_master'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="template_additional">{tmpl_var name='template_additional_txt'}</label>
- <select name="tpl_add_select" id="tpl_add_select" class="selectInput">
- {tmpl_var name='tpl_add_select'}
- </select>
- <div id="template_additional_list"><br /><br />{tmpl_var name='template_additional_list'}</div>
- <input type="hidden" id="template_additional" name="template_additional" value="{tmpl_var name='template_additional'}">
- </div>
- <div class="ctrlHolder">
-
- </div>
- </tmpl_if>
- <div class="ctrlHolder">
- <label for="default_mailserver">{tmpl_var name='default_mailserver_txt'}</label>
- <select name="default_mailserver" id="default_mailserver" class="selectInput">
- {tmpl_var name='default_mailserver'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_maildomain">{tmpl_var name='limit_maildomain_txt'}</label>
- <input name="limit_maildomain" id="limit_maildomain" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailbox">{tmpl_var name='limit_mailbox_txt'}</label>
- <input name="limit_mailbox" id="limit_mailbox" value="{tmpl_var name='limit_mailbox'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailalias">{tmpl_var name='limit_mailalias_txt'}</label>
- <input name="limit_mailalias" id="limit_mailalias" value="{tmpl_var name='limit_mailalias'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailaliasdomain">{tmpl_var name='limit_mailaliasdomain_txt'}</label>
- <input name="limit_mailaliasdomain" id="limit_mailaliasdomain" value="{tmpl_var name='limit_mailaliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailmailinglist">{tmpl_var name='limit_mailmailinglist_txt'}</label>
- <input name="limit_mailmailinglist" id="limit_mailmailinglist" value="{tmpl_var name='limit_mailmailinglist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailforward">{tmpl_var name='limit_mailforward_txt'}</label>
- <input name="limit_mailforward" id="limit_mailforward" value="{tmpl_var name='limit_mailforward'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailcatchall">{tmpl_var name='limit_mailcatchall_txt'}</label>
- <input name="limit_mailcatchall" id="limit_mailcatchall" value="{tmpl_var name='limit_mailcatchall'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailrouting">{tmpl_var name='limit_mailrouting_txt'}</label>
- <input name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailfilter">{tmpl_var name='limit_mailfilter_txt'}</label>
- <input name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_fetchmail">{tmpl_var name='limit_fetchmail_txt'}</label>
- <input name="limit_fetchmail" id="limit_fetchmail" value="{tmpl_var name='limit_fetchmail'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailquota">{tmpl_var name='limit_mailquota_txt'}</label>
- <input name="limit_mailquota" id="limit_mailquota" value="{tmpl_var name='limit_mailquota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_wblist">{tmpl_var name='limit_spamfilter_wblist_txt'}</label>
- <input name="limit_spamfilter_wblist" id="limit_spamfilter_wblist" value="{tmpl_var name='limit_spamfilter_wblist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_user">{tmpl_var name='limit_spamfilter_user_txt'}</label>
- <input name="limit_spamfilter_user" id="limit_spamfilter_user" value="{tmpl_var name='limit_spamfilter_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_policy">{tmpl_var name='limit_spamfilter_policy_txt'}</label>
- <input name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="default_webserver">{tmpl_var name='default_webserver_txt'}</label>
- <select name="default_webserver" id="default_webserver" class="selectInput">
- {tmpl_var name='default_webserver'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_domain">{tmpl_var name='limit_web_domain_txt'}</label>
- <input name="limit_web_domain" id="limit_web_domain" value="{tmpl_var name='limit_web_domain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_quota">{tmpl_var name='limit_web_quota_txt'}</label>
- <input name="limit_web_quota" id="limit_web_quota" value="{tmpl_var name='limit_web_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='web_php_options_txt'}</p>
- <div class="multiField">
- {tmpl_var name='web_php_options'}
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
- <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_subdomain">{tmpl_var name='limit_web_subdomain_txt'}</label>
- <input name="limit_web_subdomain" id="limit_web_subdomain" value="{tmpl_var name='limit_web_subdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_ftp_user">{tmpl_var name='limit_ftp_user_txt'}</label>
- <input name="limit_ftp_user" id="limit_ftp_user" value="{tmpl_var name='limit_ftp_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_shell_user">{tmpl_var name='limit_shell_user_txt'}</label>
- <input name="limit_shell_user" id="limit_shell_user" value="{tmpl_var name='limit_shell_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='ssh_chroot_txt'}</p>
- <div class="multiField">
- {tmpl_var name='ssh_chroot'}
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="limit_webdav_user">{tmpl_var name='limit_webdav_user_txt'}</label>
- <input name="limit_webdav_user" id="limit_webdav_user" value="{tmpl_var name='limit_webdav_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="default_dnsserver">{tmpl_var name='default_dnsserver_txt'}</label>
- <select name="default_dnsserver" id="default_dnsserver" class="selectInput">
- {tmpl_var name='default_dnsserver'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
- <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
- <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
- <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="default_dbserver">{tmpl_var name='default_dbserver_txt'}</label>
- <select name="default_dbserver" id="default_dbserver" class="selectInput">
- {tmpl_var name='default_dbserver'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_database">{tmpl_var name='limit_database_txt'}</label>
- <input name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron">{tmpl_var name='limit_cron_txt'}</label>
- <input name="limit_cron" id="limit_cron" value="{tmpl_var name='limit_cron'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron_type">{tmpl_var name='limit_cron_type_txt'}</label>
- <select name="limit_cron_type" id="limit_cron_type" class="selectInput formLengthHalf">
- {tmpl_var name='limit_cron_type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron_frequency">{tmpl_var name='limit_cron_frequency_txt'}</label>
- <input name="limit_cron_frequency" id="limit_cron_frequency" value="{tmpl_var name='limit_cron_frequency'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_traffic_quota">{tmpl_var name='limit_traffic_quota_txt'}</label>
- <input name="limit_traffic_quota" id="limit_traffic_quota" value="{tmpl_var name='limit_traffic_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_client">
+
+ <tmpl_if name="is_admin">
+ <div class="pnl_toolsarea">
+ <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
+ <div class="buttons">
+ <button class="positive iconstxt icoAdd" type="button" value="Add additional template" onClick="addAdditionalTemplate();"><span>Add additional template</span></button>
+ <button class="negative iconstxt icoDelete" type="button" value="Delete additional template" onClick="delAdditionalTemplate();"><span>Delete additional template</span></button>
+ </div>
+ </fieldset>
+ </div>
+ </tmpl_if>
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Limits</legend>
+ <tmpl_if name="is_admin">
+ <div class="ctrlHolder">
+ <label for="template_master">{tmpl_var name='template_master_txt'}</label>
+ <select name="template_master" id="template_master" class="selectInput">
+ {tmpl_var name='template_master'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="template_additional">{tmpl_var name='template_additional_txt'}</label>
+ <select name="tpl_add_select" id="tpl_add_select" class="selectInput">
+ {tmpl_var name='tpl_add_select'}
+ </select>
+ <div id="template_additional_list"><br /><br />{tmpl_var name='template_additional_list'}</div>
+ <input type="hidden" id="template_additional" name="template_additional" value="{tmpl_var name='template_additional'}">
+ </div>
+ <div class="ctrlHolder">
+
+ </div>
+ </tmpl_if>
+ <div class="ctrlHolder">
+ <label for="default_mailserver">{tmpl_var name='default_mailserver_txt'}</label>
+ <select name="default_mailserver" id="default_mailserver" class="selectInput">
+ {tmpl_var name='default_mailserver'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_maildomain">{tmpl_var name='limit_maildomain_txt'}</label>
+ <input name="limit_maildomain" id="limit_maildomain" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailbox">{tmpl_var name='limit_mailbox_txt'}</label>
+ <input name="limit_mailbox" id="limit_mailbox" value="{tmpl_var name='limit_mailbox'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailalias">{tmpl_var name='limit_mailalias_txt'}</label>
+ <input name="limit_mailalias" id="limit_mailalias" value="{tmpl_var name='limit_mailalias'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailaliasdomain">{tmpl_var name='limit_mailaliasdomain_txt'}</label>
+ <input name="limit_mailaliasdomain" id="limit_mailaliasdomain" value="{tmpl_var name='limit_mailaliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailmailinglist">{tmpl_var name='limit_mailmailinglist_txt'}</label>
+ <input name="limit_mailmailinglist" id="limit_mailmailinglist" value="{tmpl_var name='limit_mailmailinglist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailforward">{tmpl_var name='limit_mailforward_txt'}</label>
+ <input name="limit_mailforward" id="limit_mailforward" value="{tmpl_var name='limit_mailforward'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailcatchall">{tmpl_var name='limit_mailcatchall_txt'}</label>
+ <input name="limit_mailcatchall" id="limit_mailcatchall" value="{tmpl_var name='limit_mailcatchall'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailrouting">{tmpl_var name='limit_mailrouting_txt'}</label>
+ <input name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailfilter">{tmpl_var name='limit_mailfilter_txt'}</label>
+ <input name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_fetchmail">{tmpl_var name='limit_fetchmail_txt'}</label>
+ <input name="limit_fetchmail" id="limit_fetchmail" value="{tmpl_var name='limit_fetchmail'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailquota">{tmpl_var name='limit_mailquota_txt'}</label>
+ <input name="limit_mailquota" id="limit_mailquota" value="{tmpl_var name='limit_mailquota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_wblist">{tmpl_var name='limit_spamfilter_wblist_txt'}</label>
+ <input name="limit_spamfilter_wblist" id="limit_spamfilter_wblist" value="{tmpl_var name='limit_spamfilter_wblist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_user">{tmpl_var name='limit_spamfilter_user_txt'}</label>
+ <input name="limit_spamfilter_user" id="limit_spamfilter_user" value="{tmpl_var name='limit_spamfilter_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_policy">{tmpl_var name='limit_spamfilter_policy_txt'}</label>
+ <input name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="default_webserver">{tmpl_var name='default_webserver_txt'}</label>
+ <select name="default_webserver" id="default_webserver" class="selectInput">
+ {tmpl_var name='default_webserver'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_domain">{tmpl_var name='limit_web_domain_txt'}</label>
+ <input name="limit_web_domain" id="limit_web_domain" value="{tmpl_var name='limit_web_domain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_quota">{tmpl_var name='limit_web_quota_txt'}</label>
+ <input name="limit_web_quota" id="limit_web_quota" value="{tmpl_var name='limit_web_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='web_php_options_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='web_php_options'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
+ <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_subdomain">{tmpl_var name='limit_web_subdomain_txt'}</label>
+ <input name="limit_web_subdomain" id="limit_web_subdomain" value="{tmpl_var name='limit_web_subdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_ftp_user">{tmpl_var name='limit_ftp_user_txt'}</label>
+ <input name="limit_ftp_user" id="limit_ftp_user" value="{tmpl_var name='limit_ftp_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_shell_user">{tmpl_var name='limit_shell_user_txt'}</label>
+ <input name="limit_shell_user" id="limit_shell_user" value="{tmpl_var name='limit_shell_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='ssh_chroot_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='ssh_chroot'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_webdav_user">{tmpl_var name='limit_webdav_user_txt'}</label>
+ <input name="limit_webdav_user" id="limit_webdav_user" value="{tmpl_var name='limit_webdav_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="default_dnsserver">{tmpl_var name='default_dnsserver_txt'}</label>
+ <select name="default_dnsserver" id="default_dnsserver" class="selectInput">
+ {tmpl_var name='default_dnsserver'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
+ <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
+ <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
+ <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="default_dbserver">{tmpl_var name='default_dbserver_txt'}</label>
+ <select name="default_dbserver" id="default_dbserver" class="selectInput">
+ {tmpl_var name='default_dbserver'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_database">{tmpl_var name='limit_database_txt'}</label>
+ <input name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron">{tmpl_var name='limit_cron_txt'}</label>
+ <input name="limit_cron" id="limit_cron" value="{tmpl_var name='limit_cron'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron_type">{tmpl_var name='limit_cron_type_txt'}</label>
+ <select name="limit_cron_type" id="limit_cron_type" class="selectInput formLengthHalf">
+ {tmpl_var name='limit_cron_type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron_frequency">{tmpl_var name='limit_cron_frequency_txt'}</label>
+ <input name="limit_cron_frequency" id="limit_cron_frequency" value="{tmpl_var name='limit_cron_frequency'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_traffic_quota">{tmpl_var name='limit_traffic_quota_txt'}</label>
+ <input name="limit_traffic_quota" id="limit_traffic_quota" value="{tmpl_var name='limit_traffic_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm
index 5e405a1..a1c6712 100644
--- a/interface/web/client/templates/client_template_edit_limits.htm
+++ b/interface/web/client/templates/client_template_edit_limits.htm
@@ -1,136 +1,136 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_client_template">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Limits</legend>
- <div class="ctrlHolder">
- <label for="limit_maildomain">{tmpl_var name='limit_maildomain_txt'}</label>
- <input name="limit_maildomain" id="limit_maildomain" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailbox">{tmpl_var name='limit_mailbox_txt'}</label>
- <input name="limit_mailbox" id="limit_mailbox" value="{tmpl_var name='limit_mailbox'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailalias">{tmpl_var name='limit_mailalias_txt'}</label>
- <input name="limit_mailalias" id="limit_mailalias" value="{tmpl_var name='limit_mailalias'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailaliasdomain">{tmpl_var name='limit_mailaliasdomain_txt'}</label>
- <input name="limit_mailaliasdomain" id="limit_mailaliasdomain" value="{tmpl_var name='limit_mailaliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailmailinglist">{tmpl_var name='limit_mailmailinglist_txt'}</label>
- <input name="limit_mailmailinglist" id="limit_mailmailinglist" value="{tmpl_var name='limit_mailmailinglist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailforward">{tmpl_var name='limit_mailforward_txt'}</label>
- <input name="limit_mailforward" id="limit_mailforward" value="{tmpl_var name='limit_mailforward'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailcatchall">{tmpl_var name='limit_mailcatchall_txt'}</label>
- <input name="limit_mailcatchall" id="limit_mailcatchall" value="{tmpl_var name='limit_mailcatchall'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailrouting">{tmpl_var name='limit_mailrouting_txt'}</label>
- <input name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailfilter">{tmpl_var name='limit_mailfilter_txt'}</label>
- <input name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_fetchmail">{tmpl_var name='limit_fetchmail_txt'}</label>
- <input name="limit_fetchmail" id="limit_fetchmail" value="{tmpl_var name='limit_fetchmail'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailquota">{tmpl_var name='limit_mailquota_txt'}</label>
- <input name="limit_mailquota" id="limit_mailquota" value="{tmpl_var name='limit_mailquota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_wblist">{tmpl_var name='limit_spamfilter_wblist_txt'}</label>
- <input name="limit_spamfilter_wblist" id="limit_spamfilter_wblist" value="{tmpl_var name='limit_spamfilter_wblist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_user">{tmpl_var name='limit_spamfilter_user_txt'}</label>
- <input name="limit_spamfilter_user" id="limit_spamfilter_user" value="{tmpl_var name='limit_spamfilter_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_policy">{tmpl_var name='limit_spamfilter_policy_txt'}</label>
- <input name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_domain">{tmpl_var name='limit_web_domain_txt'}</label>
- <input name="limit_web_domain" id="limit_web_domain" value="{tmpl_var name='limit_web_domain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_quota">{tmpl_var name='limit_web_quota_txt'}</label>
- <input name="limit_web_quota" id="limit_web_quota" value="{tmpl_var name='limit_web_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
- <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_subdomain">{tmpl_var name='limit_web_subdomain_txt'}</label>
- <input name="limit_web_subdomain" id="limit_web_subdomain" value="{tmpl_var name='limit_web_subdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_ftp_user">{tmpl_var name='limit_ftp_user_txt'}</label>
- <input name="limit_ftp_user" id="limit_ftp_user" value="{tmpl_var name='limit_ftp_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_shell_user">{tmpl_var name='limit_shell_user_txt'}</label>
- <input name="limit_shell_user" id="limit_shell_user" value="{tmpl_var name='limit_shell_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_webdav_user">{tmpl_var name='limit_webdav_user_txt'}</label>
- <input name="limit_webdav_user" id="limit_webdav_user" value="{tmpl_var name='limit_webdav_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
- <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
- <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
- <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_database">{tmpl_var name='limit_database_txt'}</label>
- <input name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron">{tmpl_var name='limit_cron_txt'}</label>
- <input name="limit_cron" id="limit_cron" value="{tmpl_var name='limit_cron'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron_type">{tmpl_var name='limit_cron_type_txt'}</label>
- <select name="limit_cron_type" id="limit_cron_type" class="selectInput formLengthHalf">
- {tmpl_var name='limit_cron_type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron_frequency">{tmpl_var name='limit_cron_frequency_txt'}</label>
- <input name="limit_cron_frequency" id="limit_cron_frequency" value="{tmpl_var name='limit_cron_frequency'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_traffic_quota">{tmpl_var name='limit_traffic_quota_txt'}</label>
- <input name="limit_traffic_quota" id="limit_traffic_quota" value="{tmpl_var name='limit_traffic_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_template_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_template_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_client_template">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Limits</legend>
+ <div class="ctrlHolder">
+ <label for="limit_maildomain">{tmpl_var name='limit_maildomain_txt'}</label>
+ <input name="limit_maildomain" id="limit_maildomain" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailbox">{tmpl_var name='limit_mailbox_txt'}</label>
+ <input name="limit_mailbox" id="limit_mailbox" value="{tmpl_var name='limit_mailbox'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailalias">{tmpl_var name='limit_mailalias_txt'}</label>
+ <input name="limit_mailalias" id="limit_mailalias" value="{tmpl_var name='limit_mailalias'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailaliasdomain">{tmpl_var name='limit_mailaliasdomain_txt'}</label>
+ <input name="limit_mailaliasdomain" id="limit_mailaliasdomain" value="{tmpl_var name='limit_mailaliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailmailinglist">{tmpl_var name='limit_mailmailinglist_txt'}</label>
+ <input name="limit_mailmailinglist" id="limit_mailmailinglist" value="{tmpl_var name='limit_mailmailinglist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailforward">{tmpl_var name='limit_mailforward_txt'}</label>
+ <input name="limit_mailforward" id="limit_mailforward" value="{tmpl_var name='limit_mailforward'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailcatchall">{tmpl_var name='limit_mailcatchall_txt'}</label>
+ <input name="limit_mailcatchall" id="limit_mailcatchall" value="{tmpl_var name='limit_mailcatchall'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailrouting">{tmpl_var name='limit_mailrouting_txt'}</label>
+ <input name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailfilter">{tmpl_var name='limit_mailfilter_txt'}</label>
+ <input name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_fetchmail">{tmpl_var name='limit_fetchmail_txt'}</label>
+ <input name="limit_fetchmail" id="limit_fetchmail" value="{tmpl_var name='limit_fetchmail'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailquota">{tmpl_var name='limit_mailquota_txt'}</label>
+ <input name="limit_mailquota" id="limit_mailquota" value="{tmpl_var name='limit_mailquota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_wblist">{tmpl_var name='limit_spamfilter_wblist_txt'}</label>
+ <input name="limit_spamfilter_wblist" id="limit_spamfilter_wblist" value="{tmpl_var name='limit_spamfilter_wblist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_user">{tmpl_var name='limit_spamfilter_user_txt'}</label>
+ <input name="limit_spamfilter_user" id="limit_spamfilter_user" value="{tmpl_var name='limit_spamfilter_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_policy">{tmpl_var name='limit_spamfilter_policy_txt'}</label>
+ <input name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_domain">{tmpl_var name='limit_web_domain_txt'}</label>
+ <input name="limit_web_domain" id="limit_web_domain" value="{tmpl_var name='limit_web_domain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_quota">{tmpl_var name='limit_web_quota_txt'}</label>
+ <input name="limit_web_quota" id="limit_web_quota" value="{tmpl_var name='limit_web_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
+ <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_subdomain">{tmpl_var name='limit_web_subdomain_txt'}</label>
+ <input name="limit_web_subdomain" id="limit_web_subdomain" value="{tmpl_var name='limit_web_subdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_ftp_user">{tmpl_var name='limit_ftp_user_txt'}</label>
+ <input name="limit_ftp_user" id="limit_ftp_user" value="{tmpl_var name='limit_ftp_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_shell_user">{tmpl_var name='limit_shell_user_txt'}</label>
+ <input name="limit_shell_user" id="limit_shell_user" value="{tmpl_var name='limit_shell_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_webdav_user">{tmpl_var name='limit_webdav_user_txt'}</label>
+ <input name="limit_webdav_user" id="limit_webdav_user" value="{tmpl_var name='limit_webdav_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
+ <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
+ <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
+ <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_database">{tmpl_var name='limit_database_txt'}</label>
+ <input name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron">{tmpl_var name='limit_cron_txt'}</label>
+ <input name="limit_cron" id="limit_cron" value="{tmpl_var name='limit_cron'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron_type">{tmpl_var name='limit_cron_type_txt'}</label>
+ <select name="limit_cron_type" id="limit_cron_type" class="selectInput formLengthHalf">
+ {tmpl_var name='limit_cron_type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron_frequency">{tmpl_var name='limit_cron_frequency_txt'}</label>
+ <input name="limit_cron_frequency" id="limit_cron_frequency" value="{tmpl_var name='limit_cron_frequency'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_traffic_quota">{tmpl_var name='limit_traffic_quota_txt'}</label>
+ <input name="limit_traffic_quota" id="limit_traffic_quota" value="{tmpl_var name='limit_traffic_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_template_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_template_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/client/templates/client_template_edit_template.htm b/interface/web/client/templates/client_template_edit_template.htm
index 6c9d905..a3a8fe5 100644
--- a/interface/web/client/templates/client_template_edit_template.htm
+++ b/interface/web/client/templates/client_template_edit_template.htm
@@ -1,28 +1,28 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_client_template">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Template</legend>
- <div class="ctrlHolder">
- <label for="template_type">{tmpl_var name='template_type_txt'}</label>
- <select name="template_type" id="template_type" class="selectInput">
- {tmpl_var name='template_type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="template_name">{tmpl_var name='template_name_txt'}</label>
- <input name="template_name" id="template_name" value="{tmpl_var name='template_name'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_template_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_template_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_client_template">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Template</legend>
+ <div class="ctrlHolder">
+ <label for="template_type">{tmpl_var name='template_type_txt'}</label>
+ <select name="template_type" id="template_type" class="selectInput">
+ {tmpl_var name='template_type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="template_name">{tmpl_var name='template_name_txt'}</label>
+ <input name="template_name" id="template_name" value="{tmpl_var name='template_name'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/client_template_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_template_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm
index 280a24e..7ac3519 100644
--- a/interface/web/client/templates/reseller_edit_limits.htm
+++ b/interface/web/client/templates/reseller_edit_limits.htm
@@ -1,191 +1,191 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_client">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Limits</legend>
-<tmpl_if name="is_admin">
- <div class="ctrlHolder">
- <label for="template_master">{tmpl_var name='template_master_txt'}</label>
- <select name="template_master" id="template_master" class="selectInput">
- {tmpl_var name='template_master'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="template_additional">{tmpl_var name='template_additional_txt'}</label>
- <select name="tpl_add_select" id="tpl_add_select" class="selectInput">
- {tmpl_var name='tpl_add_select'}
- </select>
- <span id="template_additional_list">{tmpl_var name='template_additional_list'}</span>
- <input type="hidden" id="template_additional" name="template_additional" value="{tmpl_var name='template_additional'}">
- </div>
- <div class="ctrlHolder">
-
- </div>
-</tmpl_if>
- <div class="ctrlHolder">
- <label for="default_mailserver">{tmpl_var name='default_mailserver_txt'}</label>
- <select name="default_mailserver" id="default_mailserver" class="selectInput">
- {tmpl_var name='default_mailserver'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_maildomain">{tmpl_var name='limit_maildomain_txt'}</label>
- <input name="limit_maildomain" id="limit_maildomain" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailmailinglist">{tmpl_var name='limit_mailmailinglist_txt'}</label>
- <input name="limit_mailmailinglist" id="limit_mailmailinglist" value="{tmpl_var name='limit_mailmailinglist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailbox">{tmpl_var name='limit_mailbox_txt'}</label>
- <input name="limit_mailbox" id="limit_mailbox" value="{tmpl_var name='limit_mailbox'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailalias">{tmpl_var name='limit_mailalias_txt'}</label>
- <input name="limit_mailalias" id="limit_mailalias" value="{tmpl_var name='limit_mailalias'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailforward">{tmpl_var name='limit_mailforward_txt'}</label>
- <input name="limit_mailforward" id="limit_mailforward" value="{tmpl_var name='limit_mailforward'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailcatchall">{tmpl_var name='limit_mailcatchall_txt'}</label>
- <input name="limit_mailcatchall" id="limit_mailcatchall" value="{tmpl_var name='limit_mailcatchall'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailrouting">{tmpl_var name='limit_mailrouting_txt'}</label>
- <input name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailfilter">{tmpl_var name='limit_mailfilter_txt'}</label>
- <input name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_fetchmail">{tmpl_var name='limit_fetchmail_txt'}</label>
- <input name="limit_fetchmail" id="limit_fetchmail" value="{tmpl_var name='limit_fetchmail'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_mailquota">{tmpl_var name='limit_mailquota_txt'}</label>
- <input name="limit_mailquota" id="limit_mailquota" value="{tmpl_var name='limit_mailquota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_wblist">{tmpl_var name='limit_spamfilter_wblist_txt'}</label>
- <input name="limit_spamfilter_wblist" id="limit_spamfilter_wblist" value="{tmpl_var name='limit_spamfilter_wblist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_user">{tmpl_var name='limit_spamfilter_user_txt'}</label>
- <input name="limit_spamfilter_user" id="limit_spamfilter_user" value="{tmpl_var name='limit_spamfilter_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_spamfilter_policy">{tmpl_var name='limit_spamfilter_policy_txt'}</label>
- <input name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="default_webserver">{tmpl_var name='default_webserver_txt'}</label>
- <select name="default_webserver" id="default_webserver" class="selectInput">
- {tmpl_var name='default_webserver'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_domain">{tmpl_var name='limit_web_domain_txt'}</label>
- <input name="limit_web_domain" id="limit_web_domain" value="{tmpl_var name='limit_web_domain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_quota">{tmpl_var name='limit_web_quota_txt'}</label>
- <input name="limit_web_quota" id="limit_web_quota" value="{tmpl_var name='limit_web_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='web_php_options_txt'}</p>
- <div class="multiField">
- {tmpl_var name='web_php_options'}
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
- <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_web_subdomain">{tmpl_var name='limit_web_subdomain_txt'}</label>
- <input name="limit_web_subdomain" id="limit_web_subdomain" value="{tmpl_var name='limit_web_subdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_ftp_user">{tmpl_var name='limit_ftp_user_txt'}</label>
- <input name="limit_ftp_user" id="limit_ftp_user" value="{tmpl_var name='limit_ftp_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_shell_user">{tmpl_var name='limit_shell_user_txt'}</label>
- <input name="limit_shell_user" id="limit_shell_user" value="{tmpl_var name='limit_shell_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='ssh_chroot_txt'}</p>
- <div class="multiField">
- {tmpl_var name='ssh_chroot'}
- </div>
- </div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_client">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Limits</legend>
+<tmpl_if name="is_admin">
+ <div class="ctrlHolder">
+ <label for="template_master">{tmpl_var name='template_master_txt'}</label>
+ <select name="template_master" id="template_master" class="selectInput">
+ {tmpl_var name='template_master'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="template_additional">{tmpl_var name='template_additional_txt'}</label>
+ <select name="tpl_add_select" id="tpl_add_select" class="selectInput">
+ {tmpl_var name='tpl_add_select'}
+ </select>
+ <span id="template_additional_list">{tmpl_var name='template_additional_list'}</span>
+ <input type="hidden" id="template_additional" name="template_additional" value="{tmpl_var name='template_additional'}">
+ </div>
+ <div class="ctrlHolder">
+
+ </div>
+</tmpl_if>
+ <div class="ctrlHolder">
+ <label for="default_mailserver">{tmpl_var name='default_mailserver_txt'}</label>
+ <select name="default_mailserver" id="default_mailserver" class="selectInput">
+ {tmpl_var name='default_mailserver'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_maildomain">{tmpl_var name='limit_maildomain_txt'}</label>
+ <input name="limit_maildomain" id="limit_maildomain" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailmailinglist">{tmpl_var name='limit_mailmailinglist_txt'}</label>
+ <input name="limit_mailmailinglist" id="limit_mailmailinglist" value="{tmpl_var name='limit_mailmailinglist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailbox">{tmpl_var name='limit_mailbox_txt'}</label>
+ <input name="limit_mailbox" id="limit_mailbox" value="{tmpl_var name='limit_mailbox'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailalias">{tmpl_var name='limit_mailalias_txt'}</label>
+ <input name="limit_mailalias" id="limit_mailalias" value="{tmpl_var name='limit_mailalias'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailforward">{tmpl_var name='limit_mailforward_txt'}</label>
+ <input name="limit_mailforward" id="limit_mailforward" value="{tmpl_var name='limit_mailforward'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailcatchall">{tmpl_var name='limit_mailcatchall_txt'}</label>
+ <input name="limit_mailcatchall" id="limit_mailcatchall" value="{tmpl_var name='limit_mailcatchall'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailrouting">{tmpl_var name='limit_mailrouting_txt'}</label>
+ <input name="limit_mailrouting" id="limit_mailrouting" value="{tmpl_var name='limit_mailrouting'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailfilter">{tmpl_var name='limit_mailfilter_txt'}</label>
+ <input name="limit_mailfilter" id="limit_mailfilter" value="{tmpl_var name='limit_mailfilter'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_fetchmail">{tmpl_var name='limit_fetchmail_txt'}</label>
+ <input name="limit_fetchmail" id="limit_fetchmail" value="{tmpl_var name='limit_fetchmail'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_mailquota">{tmpl_var name='limit_mailquota_txt'}</label>
+ <input name="limit_mailquota" id="limit_mailquota" value="{tmpl_var name='limit_mailquota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_wblist">{tmpl_var name='limit_spamfilter_wblist_txt'}</label>
+ <input name="limit_spamfilter_wblist" id="limit_spamfilter_wblist" value="{tmpl_var name='limit_spamfilter_wblist'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_user">{tmpl_var name='limit_spamfilter_user_txt'}</label>
+ <input name="limit_spamfilter_user" id="limit_spamfilter_user" value="{tmpl_var name='limit_spamfilter_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_spamfilter_policy">{tmpl_var name='limit_spamfilter_policy_txt'}</label>
+ <input name="limit_spamfilter_policy" id="limit_spamfilter_policy" value="{tmpl_var name='limit_spamfilter_policy'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="default_webserver">{tmpl_var name='default_webserver_txt'}</label>
+ <select name="default_webserver" id="default_webserver" class="selectInput">
+ {tmpl_var name='default_webserver'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_domain">{tmpl_var name='limit_web_domain_txt'}</label>
+ <input name="limit_web_domain" id="limit_web_domain" value="{tmpl_var name='limit_web_domain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_quota">{tmpl_var name='limit_web_quota_txt'}</label>
+ <input name="limit_web_quota" id="limit_web_quota" value="{tmpl_var name='limit_web_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='web_php_options_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='web_php_options'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
+ <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_web_subdomain">{tmpl_var name='limit_web_subdomain_txt'}</label>
+ <input name="limit_web_subdomain" id="limit_web_subdomain" value="{tmpl_var name='limit_web_subdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_ftp_user">{tmpl_var name='limit_ftp_user_txt'}</label>
+ <input name="limit_ftp_user" id="limit_ftp_user" value="{tmpl_var name='limit_ftp_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_shell_user">{tmpl_var name='limit_shell_user_txt'}</label>
+ <input name="limit_shell_user" id="limit_shell_user" value="{tmpl_var name='limit_shell_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='ssh_chroot_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='ssh_chroot'}
+ </div>
+ </div>
<div class="ctrlHolder">
<label for="limit_webdav_user">{tmpl_var name='limit_webdav_user_txt'}</label>
<input name="limit_webdav_user" id="limit_webdav_user" value="{tmpl_var name='limit_webdav_user'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
</div>
- <div class="ctrlHolder">
- <label for="default_dnsserver">{tmpl_var name='default_dnsserver_txt'}</label>
- <select name="default_dnsserver" id="default_dnsserver" class="selectInput">
- {tmpl_var name='default_dnsserver'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
- <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
- <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
- <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_client">{tmpl_var name='limit_client_txt'}</label>
- <input name="limit_client" id="limit_client" value="{tmpl_var name='limit_client'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="default_dbserver">{tmpl_var name='default_dbserver_txt'}</label>
- <select name="default_dbserver" id="default_dbserver" class="selectInput">
- {tmpl_var name='default_dbserver'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_database">{tmpl_var name='limit_database_txt'}</label>
- <input name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron">{tmpl_var name='limit_cron_txt'}</label>
- <input name="limit_cron" id="limit_cron" value="{tmpl_var name='limit_cron'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron_type">{tmpl_var name='limit_cron_type_txt'}</label>
- <select name="limit_cron_type" id="limit_cron_type" class="selectInput formLengthHalf">
- {tmpl_var name='limit_cron_type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="limit_cron_frequency">{tmpl_var name='limit_cron_frequency_txt'}</label>
- <input name="limit_cron_frequency" id="limit_cron_frequency" value="{tmpl_var name='limit_cron_frequency'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="limit_traffic_quota">{tmpl_var name='limit_traffic_quota_txt'}</label>
- <input name="limit_traffic_quota" id="limit_traffic_quota" value="{tmpl_var name='limit_traffic_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/reseller_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/reseller_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+ <div class="ctrlHolder">
+ <label for="default_dnsserver">{tmpl_var name='default_dnsserver_txt'}</label>
+ <select name="default_dnsserver" id="default_dnsserver" class="selectInput">
+ {tmpl_var name='default_dnsserver'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
+ <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
+ <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_dns_record">{tmpl_var name='limit_dns_record_txt'}</label>
+ <input name="limit_dns_record" id="limit_dns_record" value="{tmpl_var name='limit_dns_record'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_client">{tmpl_var name='limit_client_txt'}</label>
+ <input name="limit_client" id="limit_client" value="{tmpl_var name='limit_client'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="default_dbserver">{tmpl_var name='default_dbserver_txt'}</label>
+ <select name="default_dbserver" id="default_dbserver" class="selectInput">
+ {tmpl_var name='default_dbserver'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_database">{tmpl_var name='limit_database_txt'}</label>
+ <input name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron">{tmpl_var name='limit_cron_txt'}</label>
+ <input name="limit_cron" id="limit_cron" value="{tmpl_var name='limit_cron'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron_type">{tmpl_var name='limit_cron_type_txt'}</label>
+ <select name="limit_cron_type" id="limit_cron_type" class="selectInput formLengthHalf">
+ {tmpl_var name='limit_cron_type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_cron_frequency">{tmpl_var name='limit_cron_frequency_txt'}</label>
+ <input name="limit_cron_frequency" id="limit_cron_frequency" value="{tmpl_var name='limit_cron_frequency'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="limit_traffic_quota">{tmpl_var name='limit_traffic_quota_txt'}</label>
+ <input name="limit_traffic_quota" id="limit_traffic_quota" value="{tmpl_var name='limit_traffic_quota'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" /> MB
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','client/reseller_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/reseller_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/dashboard/dashlets/limits.php b/interface/web/dashboard/dashlets/limits.php
index b020def..81f8701 100644
--- a/interface/web/dashboard/dashlets/limits.php
+++ b/interface/web/dashboard/dashlets/limits.php
@@ -1,177 +1,177 @@
-<?php
-
-class dashlet_limits {
-
- function show() {
- global $app, $conf;
-
- $limits = array();
-
- /* Limits to be shown*/
-
- $limits[] = array('field' => 'limit_maildomain',
- 'db_table' => 'mail_domain',
- 'db_where' => '');
-
- $limits[] = array('field' => 'limit_mailmailinglist',
- 'db_table' => 'mail_mailinglist',
- 'db_where' => '');
-
- $limits[] = array('field' => 'limit_mailbox',
- 'db_table' => 'mail_user',
- 'db_where' => '');
-
- $limits[] = array('field' => 'limit_mailalias',
- 'db_table' => 'mail_forwarding',
- 'db_where' => "type = 'alias'");
-
- $limits[] = array('field' => 'limit_mailaliasdomain',
- 'db_table' => 'mail_forwarding',
- 'db_where' => "type = 'aliasdomain'");
-
- $limits[] = array('field' => 'limit_mailforward',
- 'db_table' => 'mail_forwarding',
- 'db_where' => "type = 'forward'");
-
- $limits[] = array('field' => 'limit_mailcatchall',
- 'db_table' => 'mail_forwarding',
- 'db_where' => "type = 'catchall'");
-
- $limits[] = array('field' => 'limit_mailrouting',
- 'db_table' => 'mail_transport',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_mailfilter',
- 'db_table' => 'mail_user_filter',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_fetchmail',
- 'db_table' => 'mail_get',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_spamfilter_wblist',
- 'db_table' => 'spamfilter_wblist',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_spamfilter_user',
- 'db_table' => 'spamfilter_users',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_spamfilter_policy',
- 'db_table' => 'spamfilter_policy',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_web_domain',
- 'db_table' => 'web_domain',
- 'db_where' => "type = 'vhost'");
-
- $limits[] = array('field' => 'limit_web_subdomain',
- 'db_table' => 'web_domain',
- 'db_where' => "type = 'subdomain'");
-
- $limits[] = array('field' => 'limit_web_aliasdomain',
- 'db_table' => 'web_domain',
- 'db_where' => "type = 'alias'");
-
- $limits[] = array('field' => 'limit_ftp_user',
- 'db_table' => 'ftp_user',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_shell_user',
- 'db_table' => 'shell_user',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_dns_zone',
- 'db_table' => 'dns_soa',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_dns_slave_zone',
- 'db_table' => 'dns_slave',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_dns_record',
- 'db_table' => 'dns_rr',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_database',
- 'db_table' => 'web_database',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_cron',
- 'db_table' => 'cron',
- 'db_where' => "");
-
- $limits[] = array('field' => 'limit_client',
- 'db_table' => 'client',
- 'db_where' => "");
-
-
-
-
- //* Loading Template
- $app->uses('tpl,tform');
-
- $tpl = new tpl;
- $tpl->newTemplate("dashlets/templates/limits.htm");
-
- $wb = array();
- $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dashlet_limits.lng';
- if(is_file($lng_file)) include($lng_file);
- $tpl->setVar($wb);
-
- if($app->auth->is_admin()) {
- $user_is_admin = true;
- } else {
- $user_is_admin = false;
- }
- $tpl->setVar('is_admin',$user_is_admin);
-
- if($user_is_admin == false) {
- $client_group_id = $_SESSION["s"]["user"]["default_group"];
- $client = $app->db->queryOneRecord("SELECT * FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
- }
-
- $rows = array();
- foreach($limits as $limit) {
- $field = $limit['field'];
- if($user_is_admin) {
- $value = $wb['unlimited_txt'];
- } else {
- $value = $client[$field];
- }
- if($value != 0 || $value == $wb['unlimited_txt']) {
- $value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value;
- $rows[] = array('field' => $field,
- 'field_txt' => $wb[$field.'_txt'],
- 'value' => $value_formatted,
- 'usage' => $this->_get_limit_usage($limit));
- }
- }
- $tpl->setLoop('rows',$rows);
-
-
- return $tpl->grab();
-
- }
-
- function _get_limit_usage($limit) {
- global $app;
-
- $sql = "SELECT count(sys_userid) as number FROM ".$limit['db_table']." WHERE ";
- if($limit['db_where'] != '') $sql .= $limit['db_where']." AND ";
- $sql .= $app->tform->getAuthSQL('r');
- $rec = $app->db->queryOneRecord($sql);
- return $rec['number'];
-
- }
-
-}
-
-
-
-
-
-
-
-
-?>
+<?php
+
+class dashlet_limits {
+
+ function show() {
+ global $app, $conf;
+
+ $limits = array();
+
+ /* Limits to be shown*/
+
+ $limits[] = array('field' => 'limit_maildomain',
+ 'db_table' => 'mail_domain',
+ 'db_where' => '');
+
+ $limits[] = array('field' => 'limit_mailmailinglist',
+ 'db_table' => 'mail_mailinglist',
+ 'db_where' => '');
+
+ $limits[] = array('field' => 'limit_mailbox',
+ 'db_table' => 'mail_user',
+ 'db_where' => '');
+
+ $limits[] = array('field' => 'limit_mailalias',
+ 'db_table' => 'mail_forwarding',
+ 'db_where' => "type = 'alias'");
+
+ $limits[] = array('field' => 'limit_mailaliasdomain',
+ 'db_table' => 'mail_forwarding',
+ 'db_where' => "type = 'aliasdomain'");
+
+ $limits[] = array('field' => 'limit_mailforward',
+ 'db_table' => 'mail_forwarding',
+ 'db_where' => "type = 'forward'");
+
+ $limits[] = array('field' => 'limit_mailcatchall',
+ 'db_table' => 'mail_forwarding',
+ 'db_where' => "type = 'catchall'");
+
+ $limits[] = array('field' => 'limit_mailrouting',
+ 'db_table' => 'mail_transport',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_mailfilter',
+ 'db_table' => 'mail_user_filter',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_fetchmail',
+ 'db_table' => 'mail_get',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_spamfilter_wblist',
+ 'db_table' => 'spamfilter_wblist',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_spamfilter_user',
+ 'db_table' => 'spamfilter_users',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_spamfilter_policy',
+ 'db_table' => 'spamfilter_policy',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_web_domain',
+ 'db_table' => 'web_domain',
+ 'db_where' => "type = 'vhost'");
+
+ $limits[] = array('field' => 'limit_web_subdomain',
+ 'db_table' => 'web_domain',
+ 'db_where' => "type = 'subdomain'");
+
+ $limits[] = array('field' => 'limit_web_aliasdomain',
+ 'db_table' => 'web_domain',
+ 'db_where' => "type = 'alias'");
+
+ $limits[] = array('field' => 'limit_ftp_user',
+ 'db_table' => 'ftp_user',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_shell_user',
+ 'db_table' => 'shell_user',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_dns_zone',
+ 'db_table' => 'dns_soa',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_dns_slave_zone',
+ 'db_table' => 'dns_slave',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_dns_record',
+ 'db_table' => 'dns_rr',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_database',
+ 'db_table' => 'web_database',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_cron',
+ 'db_table' => 'cron',
+ 'db_where' => "");
+
+ $limits[] = array('field' => 'limit_client',
+ 'db_table' => 'client',
+ 'db_where' => "");
+
+
+
+
+ //* Loading Template
+ $app->uses('tpl,tform');
+
+ $tpl = new tpl;
+ $tpl->newTemplate("dashlets/templates/limits.htm");
+
+ $wb = array();
+ $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dashlet_limits.lng';
+ if(is_file($lng_file)) include($lng_file);
+ $tpl->setVar($wb);
+
+ if($app->auth->is_admin()) {
+ $user_is_admin = true;
+ } else {
+ $user_is_admin = false;
+ }
+ $tpl->setVar('is_admin',$user_is_admin);
+
+ if($user_is_admin == false) {
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ $client = $app->db->queryOneRecord("SELECT * FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+ }
+
+ $rows = array();
+ foreach($limits as $limit) {
+ $field = $limit['field'];
+ if($user_is_admin) {
+ $value = $wb['unlimited_txt'];
+ } else {
+ $value = $client[$field];
+ }
+ if($value != 0 || $value == $wb['unlimited_txt']) {
+ $value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value;
+ $rows[] = array('field' => $field,
+ 'field_txt' => $wb[$field.'_txt'],
+ 'value' => $value_formatted,
+ 'usage' => $this->_get_limit_usage($limit));
+ }
+ }
+ $tpl->setLoop('rows',$rows);
+
+
+ return $tpl->grab();
+
+ }
+
+ function _get_limit_usage($limit) {
+ global $app;
+
+ $sql = "SELECT count(sys_userid) as number FROM ".$limit['db_table']." WHERE ";
+ if($limit['db_where'] != '') $sql .= $limit['db_where']." AND ";
+ $sql .= $app->tform->getAuthSQL('r');
+ $rec = $app->db->queryOneRecord($sql);
+ return $rec['number'];
+
+ }
+
+}
+
+
+
+
+
+
+
+
+?>
diff --git a/interface/web/dashboard/dashlets/modules.php b/interface/web/dashboard/dashlets/modules.php
index b958de6..cfb2e12 100644
--- a/interface/web/dashboard/dashlets/modules.php
+++ b/interface/web/dashboard/dashlets/modules.php
@@ -1,55 +1,55 @@
-<?php
-
-class dashlet_modules {
-
- function show() {
- global $app, $conf;
-
- //* Loading Template
- $app->uses('tpl');
-
- $tpl = new tpl;
- $tpl->newTemplate("dashlets/templates/modules.htm");
-
- $wb = array();
- $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dashlet_modules.lng';
- if(is_file($lng_file)) include($lng_file);
- $tpl->setVar($wb);
-
- /*
- * Show all modules, the user is allowed to use
- */
- $modules = explode(',', $_SESSION['s']['user']['modules']);
- $mod = array();
- if(is_array($modules)) {
- foreach($modules as $mt) {
- if(is_file('../' . $mt . '/lib/module.conf.php')) {
- if(!preg_match("/^[a-z]{2,20}$/i", $mt)) die('module name contains unallowed chars.');
- include_once('../' . $mt.'/lib/module.conf.php');
- /* We don't want to show the dashboard */
- if ($mt != 'dashboard') {
- $module_title = $app->lng($module['title']);
- if(strlen($module_title) > 8) $module_title = substr($module_title,0,7).'..';
- $mod[] = array( 'modules_title' => $module_title,
- 'modules_startpage' => $module['startpage'],
- 'modules_name' => $module['name']);
- }
- }
- }
-
- $tpl->setloop('modules', $mod);
- }
-
- return $tpl->grab();
-
- }
-}
-
-
-
-
-
-
-
-
+<?php
+
+class dashlet_modules {
+
+ function show() {
+ global $app, $conf;
+
+ //* Loading Template
+ $app->uses('tpl');
+
+ $tpl = new tpl;
+ $tpl->newTemplate("dashlets/templates/modules.htm");
+
+ $wb = array();
+ $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dashlet_modules.lng';
+ if(is_file($lng_file)) include($lng_file);
+ $tpl->setVar($wb);
+
+ /*
+ * Show all modules, the user is allowed to use
+ */
+ $modules = explode(',', $_SESSION['s']['user']['modules']);
+ $mod = array();
+ if(is_array($modules)) {
+ foreach($modules as $mt) {
+ if(is_file('../' . $mt . '/lib/module.conf.php')) {
+ if(!preg_match("/^[a-z]{2,20}$/i", $mt)) die('module name contains unallowed chars.');
+ include_once('../' . $mt.'/lib/module.conf.php');
+ /* We don't want to show the dashboard */
+ if ($mt != 'dashboard') {
+ $module_title = $app->lng($module['title']);
+ if(strlen($module_title) > 8) $module_title = substr($module_title,0,7).'..';
+ $mod[] = array( 'modules_title' => $module_title,
+ 'modules_startpage' => $module['startpage'],
+ 'modules_name' => $module['name']);
+ }
+ }
+ }
+
+ $tpl->setloop('modules', $mod);
+ }
+
+ return $tpl->grab();
+
+ }
+}
+
+
+
+
+
+
+
+
?>
\ No newline at end of file
diff --git a/interface/web/dashboard/lib/custom_menu.inc.php b/interface/web/dashboard/lib/custom_menu.inc.php
index 0effc49..60b95dd 100644
--- a/interface/web/dashboard/lib/custom_menu.inc.php
+++ b/interface/web/dashboard/lib/custom_menu.inc.php
@@ -1,76 +1,76 @@
-<?php
-
-/*
-Copyright (c) 2010 Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-$app->uses('simplepie');
-
-$app->tpl->newTemplate('dashboard/templates/custom_menu.htm');
-
-$app->uses('getconf');
- $misc_config = $app->getconf->get_global_config('misc');
-
-//* We want to show the news only to the admin user
-if($misc_config['dashboard_atom_url'] != '') {
-
- if(!isset($_SESSION['s']['rss_news'])) {
-
- $app->simplepie->set_feed_url($misc_config['dashboard_atom_url']);
- $app->simplepie->enable_cache(false);
- $app->simplepie->init();
- $items = $app->simplepie->get_items();
-
- $rows = array();
- $n = 1;
-
- foreach ($items as $item)
- {
- //* We want to show only the first 10 news records
- if($n <= 10) {
- $rows[] = array('title' => $item->get_title(),
- 'link' => $item->get_link(),
- 'content' => $item->get_content(),
- 'date' => $item->get_date('Y-m-d')
- );
- }
- $n++;
- }
-
- $_SESSION['s']['rss_news'] = $rows;
-
- } else {
- $rows = $_SESSION['s']['rss_news'];
- }
-
- $app->tpl->setVar('latest_news_txt',$app->lng('latest_news_txt'));
-
-}
-
-$app->tpl->setLoop('news',$rows);
-
-?>
+<?php
+
+/*
+Copyright (c) 2010 Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+$app->uses('simplepie');
+
+$app->tpl->newTemplate('dashboard/templates/custom_menu.htm');
+
+$app->uses('getconf');
+ $misc_config = $app->getconf->get_global_config('misc');
+
+//* We want to show the news only to the admin user
+if($misc_config['dashboard_atom_url'] != '') {
+
+ if(!isset($_SESSION['s']['rss_news'])) {
+
+ $app->simplepie->set_feed_url($misc_config['dashboard_atom_url']);
+ $app->simplepie->enable_cache(false);
+ $app->simplepie->init();
+ $items = $app->simplepie->get_items();
+
+ $rows = array();
+ $n = 1;
+
+ foreach ($items as $item)
+ {
+ //* We want to show only the first 10 news records
+ if($n <= 10) {
+ $rows[] = array('title' => $item->get_title(),
+ 'link' => $item->get_link(),
+ 'content' => $item->get_content(),
+ 'date' => $item->get_date('Y-m-d')
+ );
+ }
+ $n++;
+ }
+
+ $_SESSION['s']['rss_news'] = $rows;
+
+ } else {
+ $rows = $_SESSION['s']['rss_news'];
+ }
+
+ $app->tpl->setVar('latest_news_txt',$app->lng('latest_news_txt'));
+
+}
+
+$app->tpl->setLoop('news',$rows);
+
+?>
diff --git a/interface/web/dashboard/templates/custom_menu.htm b/interface/web/dashboard/templates/custom_menu.htm
index 3d2a62c..8fe5bbf 100644
--- a/interface/web/dashboard/templates/custom_menu.htm
+++ b/interface/web/dashboard/templates/custom_menu.htm
@@ -1,8 +1,8 @@
-<ul id="submenu">
- <li class="title"><a>{tmpl_var name='latest_news_txt'}</a></li>
- <tmpl_loop name="news">
- <li><a href="{tmpl_var name="link"}" target="_blank" style="margin-top:8px;padding-bottom:5px;"><b>{tmpl_var name="date"}</b><br />
- {tmpl_var name="title"}</a>
- </li>
- </tmpl_loop>
+<ul id="submenu">
+ <li class="title"><a>{tmpl_var name='latest_news_txt'}</a></li>
+ <tmpl_loop name="news">
+ <li><a href="{tmpl_var name="link"}" target="_blank" style="margin-top:8px;padding-bottom:5px;"><b>{tmpl_var name="date"}</b><br />
+ {tmpl_var name="title"}</a>
+ </li>
+ </tmpl_loop>
</ul>
\ No newline at end of file
diff --git a/interface/web/designer/lib/admin.conf.php b/interface/web/designer/lib/admin.conf.php
index 8dce5a5..dc10d56 100644
--- a/interface/web/designer/lib/admin.conf.php
+++ b/interface/web/designer/lib/admin.conf.php
@@ -1,4 +1,4 @@
-<?php
-
-
+<?php
+
+
?>
\ No newline at end of file
diff --git a/interface/web/designer/lib/lang/cz_module_edit.lng b/interface/web/designer/lib/lang/cz_module_edit.lng
index 4e51062..d34a668 100644
--- a/interface/web/designer/lib/lang/cz_module_edit.lng
+++ b/interface/web/designer/lib/lang/cz_module_edit.lng
@@ -8,15 +8,15 @@
$wb['save_txt'] = 'Uložit';
$wb['cancel_txt'] = 'Storno';
$wb['header_txt'] = 'Vlastnosti modulu';
-$wb['description_txt'] = '
-<b>Popis</b>
-<br><br>
-<b>Název modulu:</b> Název adresáře modulu. Pouze čísla, znaky a podtržitko jsou povoleny.<br>
-<b>Titulek modulu:</b> Bude zobrazen v horní části hlavní navigace.<br>
-<b>Soubor se šablonou:</b> Šablonový soubor modulu. Nyní dostupné: module.tpl.htm a module_tree.tpl.htm.Výchozí je module.tpl.htm.<br>
-<b>NaviFrame:</b> Pokud je vybrán module_tree.tpl.htm jako šablona, zadejte zde cestu ke skriptu pro levý frame.<br>
-<b>Výchozí stránka:</b> Tato stránka bude ukázána, když je modul zobrazen.<br>
-<b>Šířka záložek:</b> Šířka záložek v hlavní navigaci. Pole je ve výchozím stavu prázdné. Můžete zadat absolutní hodnotu v pixelech (např. 20) nebo relativně (např 20%).<br>
-<b>Rada:</b> Všechny cesty jsou relativně k adresáři web web.
+$wb['description_txt'] = '
+<b>Popis</b>
+<br><br>
+<b>Název modulu:</b> Název adresáře modulu. Pouze čísla, znaky a podtržitko jsou povoleny.<br>
+<b>Titulek modulu:</b> Bude zobrazen v horní části hlavní navigace.<br>
+<b>Soubor se šablonou:</b> Šablonový soubor modulu. Nyní dostupné: module.tpl.htm a module_tree.tpl.htm.Výchozí je module.tpl.htm.<br>
+<b>NaviFrame:</b> Pokud je vybrán module_tree.tpl.htm jako šablona, zadejte zde cestu ke skriptu pro levý frame.<br>
+<b>Výchozí stránka:</b> Tato stránka bude ukázána, když je modul zobrazen.<br>
+<b>Šířka záložek:</b> Šířka záložek v hlavní navigaci. Pole je ve výchozím stavu prázdné. Můžete zadat absolutní hodnotu v pixelech (např. 20) nebo relativně (např 20%).<br>
+<b>Rada:</b> Všechny cesty jsou relativně k adresáři web web.
';
?>
diff --git a/interface/web/designer/lib/lang/fr_module_edit.lng b/interface/web/designer/lib/lang/fr_module_edit.lng
index c2eab94..87b8e54 100644
--- a/interface/web/designer/lib/lang/fr_module_edit.lng
+++ b/interface/web/designer/lib/lang/fr_module_edit.lng
@@ -8,7 +8,7 @@
$wb['save_txt'] = 'Sauver';
$wb['cancel_txt'] = 'Annuler';
$wb['header_txt'] = 'Proprits du Module';
-$wb['description_txt'] = '
-<b>Description</b?><br><br?><b>Nom du Module:</b> Nom du rpertoire du module. Seulement nombres, lettres et underscore sont autoriss.<br?><b>Titre du Module:</b> Seras affich dans le menu de navigation (suprieur).<br?><b>Fichier Template:</b> Fichier Template du module. Disponible actuellement: module.tpl.htm et module_tree.tpl.htm. Par dfaut module.tpl.htm.<br?><b>Frame de Navigation:</b> Si module_tree.tpl.htm est choisi comme fichier template, entrer ici le chemin vers le script de la frame de gauche.<br?><b>Page par Dfaut:</b> Cette page seras affiche quand le module seras ouvert.<br?><b>Largeur tableau:</b> Largeur des tableau dans la frame principale. Le champ est vide par defaut. Vous pouvez entrer une valeur absolue en pixel (e.g 20) ou relative (e.g 20%).<br?><b>Note:</b> Tous les paths sont relatifs par rapport au dossier web.
+$wb['description_txt'] = '
+<b>Description</b?><br><br?><b>Nom du Module:</b> Nom du rpertoire du module. Seulement nombres, lettres et underscore sont autoriss.<br?><b>Titre du Module:</b> Seras affich dans le menu de navigation (suprieur).<br?><b>Fichier Template:</b> Fichier Template du module. Disponible actuellement: module.tpl.htm et module_tree.tpl.htm. Par dfaut module.tpl.htm.<br?><b>Frame de Navigation:</b> Si module_tree.tpl.htm est choisi comme fichier template, entrer ici le chemin vers le script de la frame de gauche.<br?><b>Page par Dfaut:</b> Cette page seras affiche quand le module seras ouvert.<br?><b>Largeur tableau:</b> Largeur des tableau dans la frame principale. Le champ est vide par defaut. Vous pouvez entrer une valeur absolue en pixel (e.g 20) ou relative (e.g 20%).<br?><b>Note:</b> Tous les paths sont relatifs par rapport au dossier web.
';
?>
diff --git a/interface/web/designer/lib/lang/id_module_edit.lng b/interface/web/designer/lib/lang/id_module_edit.lng
index 7bdac2d..31b0692 100644
--- a/interface/web/designer/lib/lang/id_module_edit.lng
+++ b/interface/web/designer/lib/lang/id_module_edit.lng
@@ -8,15 +8,15 @@
$wb['save_txt'] = 'Simpan';
$wb['cancel_txt'] = 'Batal';
$wb['header_txt'] = 'Properti Modul';
-$wb['description_txt'] = '
-<b>Keterangan</b>
-<br><br>
-<b>Nama Modul:</b> Nama direktori modul. Hanya angka, karakter dan garis bawah yang diizinkan.<br>
-<b>Judul Modul:</b> Akan terlihat di navigasi utama (bagian atas).<br>
-<b>Berkas Template:</b> Berkas Template modul. Yang tersedia saat ini: module.tpl.htm dan module_tree.tpl.htm. Defaultnya adalah module.tpl.htm.<br>
-<b>Frame Navigasi:</b> Jika memilih module_tree.tpl.htm sebagai berkas template, masukkan path ke berkas skrip untuk frame sebelah kiri.<br>
-<b>Halaman Default:</b> Halaman ini akan muncul ketika modul dibuka.<br>
-<b>Lebar Tab:</b> Lebar tab di navigasi utama. Kolom ini defaultnya kosong. Anda dapat memasukkan nilai pixel absolut (mis. 20) atau relatif (mis. 20%).<br>
-<b>Petunjuk:</b> Semua path adalah relatif terhadap direktori web.
+$wb['description_txt'] = '
+<b>Keterangan</b>
+<br><br>
+<b>Nama Modul:</b> Nama direktori modul. Hanya angka, karakter dan garis bawah yang diizinkan.<br>
+<b>Judul Modul:</b> Akan terlihat di navigasi utama (bagian atas).<br>
+<b>Berkas Template:</b> Berkas Template modul. Yang tersedia saat ini: module.tpl.htm dan module_tree.tpl.htm. Defaultnya adalah module.tpl.htm.<br>
+<b>Frame Navigasi:</b> Jika memilih module_tree.tpl.htm sebagai berkas template, masukkan path ke berkas skrip untuk frame sebelah kiri.<br>
+<b>Halaman Default:</b> Halaman ini akan muncul ketika modul dibuka.<br>
+<b>Lebar Tab:</b> Lebar tab di navigasi utama. Kolom ini defaultnya kosong. Anda dapat memasukkan nilai pixel absolut (mis. 20) atau relatif (mis. 20%).<br>
+<b>Petunjuk:</b> Semua path adalah relatif terhadap direktori web.
';
?>
diff --git a/interface/web/designer/lib/lang/nl_module_edit.lng b/interface/web/designer/lib/lang/nl_module_edit.lng
index aca2b61..289ac62 100644
--- a/interface/web/designer/lib/lang/nl_module_edit.lng
+++ b/interface/web/designer/lib/lang/nl_module_edit.lng
@@ -8,15 +8,15 @@
$wb['save_txt'] = 'Opslaan';
$wb['cancel_txt'] = 'Cancel';
$wb['header_txt'] = 'Module eigenschappen';
-$wb['description_txt'] = '
-<b>Description</b>
-<br><br>
-<b>Modulename:</b> Naam van de module directory. Alleen numerieke waarden, karakters en underscore zijn toegestaan.<br>
-<b>Moduletitle:</b> Worden weergegeven in de (bovenste) hoofd navigatiebalk.<br>
-<b>Template file:</b> Template bestand van de module. Momenteel beschikbaar: module.tpl.htm and module_tree.tpl.htm. Standaard is module.tpl.htm.<br>
-<b>NaviFrame:</b> Als module_tree.tpl.htm is geselecteerd als template bestand, geef hier dan het pad op naar het script bestand voor het linker frame.<br>
-<b>Default page:</b> Deze pagina wordt weergegeven wanneer de module is geopened.<br>
-<b>Tab width:</b> Breedte van de tabs in de hoofdnavigatiebalk. Dit veld is standaard leeg. U kunt hier absulute pixel waarden invoeren (bijv. 20) of relatief (bijv. 20%).<br>
-<b>Hint:</b> Alle paden zijn relatief tot de directory web.
+$wb['description_txt'] = '
+<b>Description</b>
+<br><br>
+<b>Modulename:</b> Naam van de module directory. Alleen numerieke waarden, karakters en underscore zijn toegestaan.<br>
+<b>Moduletitle:</b> Worden weergegeven in de (bovenste) hoofd navigatiebalk.<br>
+<b>Template file:</b> Template bestand van de module. Momenteel beschikbaar: module.tpl.htm and module_tree.tpl.htm. Standaard is module.tpl.htm.<br>
+<b>NaviFrame:</b> Als module_tree.tpl.htm is geselecteerd als template bestand, geef hier dan het pad op naar het script bestand voor het linker frame.<br>
+<b>Default page:</b> Deze pagina wordt weergegeven wanneer de module is geopened.<br>
+<b>Tab width:</b> Breedte van de tabs in de hoofdnavigatiebalk. Dit veld is standaard leeg. U kunt hier absulute pixel waarden invoeren (bijv. 20) of relatief (bijv. 20%).<br>
+<b>Hint:</b> Alle paden zijn relatief tot de directory web.
';
?>
diff --git a/interface/web/designer/lib/lang/pl_module_edit.lng b/interface/web/designer/lib/lang/pl_module_edit.lng
index 691e550..b87d04b 100644
--- a/interface/web/designer/lib/lang/pl_module_edit.lng
+++ b/interface/web/designer/lib/lang/pl_module_edit.lng
@@ -8,15 +8,15 @@
$wb['save_txt'] = 'Zapisz';
$wb['cancel_txt'] = 'Anuluj';
$wb['header_txt'] = 'Parametry modułu';
-$wb['description_txt'] = '
-<b>Opis</b>
-<br><br>
-<b>Nazwa modułu:</b> Nazwa katalogu z modułem. Tylko liczby, litery (bez polskich) i podkreślenie są dozwolone.<br>
-<b>Tytuł modułu:</b> Będzie wyświetlaby w głównym menu nawigacyjnym.<br>
-<b>Plik szablonu:</b> Plik szablonu modułu. Aktualnie dostępne: module.tpl.htm oraz module_tree.tpl.htm. Domyślnie jest module.tpl.htm.<br>
-<b>Ramka nawigacyjna:</b> Jeśli module_tree.tpl.htm wybrano jako plik szablonu, wpisz tutaj ścieżkę do pliku ze skryptem dla lewej ramki.<br>
-<b>Strona domyślna:</b> Ta strona będzie otwierana na początku podczas otwarcia modułu.<br>
-<b>Szerokość zakładki:</b> Szerokość zakładek w głownym menu nawigacyjnym. To pole jest domyślnie puste. Możesz podać wartość w pikselach (np.: 20) lub procentach (np.: 20%).<br>
-<b>Podpowiedź:</b> Wszystkie ścieżki są względne według strony www..
+$wb['description_txt'] = '
+<b>Opis</b>
+<br><br>
+<b>Nazwa modułu:</b> Nazwa katalogu z modułem. Tylko liczby, litery (bez polskich) i podkreślenie są dozwolone.<br>
+<b>Tytuł modułu:</b> Będzie wyświetlaby w głównym menu nawigacyjnym.<br>
+<b>Plik szablonu:</b> Plik szablonu modułu. Aktualnie dostępne: module.tpl.htm oraz module_tree.tpl.htm. Domyślnie jest module.tpl.htm.<br>
+<b>Ramka nawigacyjna:</b> Jeśli module_tree.tpl.htm wybrano jako plik szablonu, wpisz tutaj ścieżkę do pliku ze skryptem dla lewej ramki.<br>
+<b>Strona domyślna:</b> Ta strona będzie otwierana na początku podczas otwarcia modułu.<br>
+<b>Szerokość zakładki:</b> Szerokość zakładek w głownym menu nawigacyjnym. To pole jest domyślnie puste. Możesz podać wartość w pikselach (np.: 20) lub procentach (np.: 20%).<br>
+<b>Podpowiedź:</b> Wszystkie ścieżki są względne według strony www..
';
?>
diff --git a/interface/web/designer/templates/form_edit.htm b/interface/web/designer/templates/form_edit.htm
index 4d1c991..38a28c4 100644
--- a/interface/web/designer/templates/form_edit.htm
+++ b/interface/web/designer/templates/form_edit.htm
@@ -1,79 +1,79 @@
-<form method="POST" action="form_edit.php">
-<div class="frmTextHead"><tmpl_var name="header_txt"></div><br />
-<table width="500" border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="name_txt">:</td>
- <td width="366" class="frmText11"><input name="form[name]" type="text" class="text" value="{tmpl_var name='name'}" size="20" maxlength="50" {tmpl_var name='readonly'}></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="title_txt">:</td>
- <td width="366" class="frmText11"><input name="form[title]" type="text" class="text" value="{tmpl_var name='title'}" size="20" maxlength="255"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="description_txt">:</td>
- <td width="366" class="frmText11"><input name="form[description]" type="text" class="text" value="{tmpl_var name='description'}" size="30" maxlength="255"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="action_txt">:</td>
- <td width="366" class="frmText11"><input name="form[action]" type="text" class="text" value="{tmpl_var name='action'}" size="30" maxlength="255"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="db_table_txt">:</td>
- <td width="366" class="frmText11"><input name="form[db_table]" type="text" class="text" value="{tmpl_var name='db_table'}" size="10" maxlength="255"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="db_table_idx_txt">:</td>
- <td width="366" class="frmText11"><input name="form[db_table_idx]" type="text" class="text" value="{tmpl_var name='db_table_idx'}" size="10" maxlength="255"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="db_history_txt">:</td>
- <td width="366" class="frmText11"><input name="form[db_history]" type="text" class="text" value="{tmpl_var name='db_history'}" size="3" maxlength="3"> yes / no</td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="tab_default_txt">:</td>
- <td width="366" class="frmText11"><input name="form[tab_default]" type="text" class="text" value="{tmpl_var name='tab_default'}" size="30" maxlength="255"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="list_default_txt">:</td>
- <td width="366" class="frmText11"><input name="form[list_default]" type="text" class="text" value="{tmpl_var name='list_default'}" size="30" maxlength="255"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="auth_txt">:</td>
- <td width="366" class="frmText11"><input name="form[auth]" type="text" class="text" value="{tmpl_var name='auth'}" size="3" maxlength="3"> yes / no</td>
- </tr>
- <tr>
- <td colspan="2" class="frmText11"> </td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="auth_preset_userid_txt">:</td>
- <td width="366" class="frmText11"><input name="form[auth_preset][userid]" type="text" class="text" value="{tmpl_var name='auth_preset_userid'}" size="4" maxlength="4"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="auth_preset_groupid_txt">:</td>
- <td width="366" class="frmText11"><input name="form[auth_preset][groupid]" type="text" class="text" value="{tmpl_var name='auth_preset_groupid'}" size="4" maxlength="4"></td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="auth_preset_perm_user_txt">:</td>
- <td width="366" class="frmText11"><input name="form[auth_preset][perm_user]" type="text" class="text" value="{tmpl_var name='auth_preset_perm_user'}" size="4" maxlength="4"> r = read, i = insert, u = update, d = delete</td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="auth_preset_perm_group_txt">:</td>
- <td width="366" class="frmText11"><input name="form[auth_preset][perm_group]" type="text" class="text" value="{tmpl_var name='auth_preset_perm_group'}" size="4" maxlength="4"> r = read, i = insert, u = update, d = delete</td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="auth_preset_perm_other_txt">:</td>
- <td width="366" class="frmText11"><input name="form[auth_preset][perm_other]" type="text" class="text" value="{tmpl_var name='auth_preset_perm_other'}" size="4" maxlength="4"> r = read, i = insert, u = update, d = delete</td>
- </tr>
- <tr>
- <td colspan="2" class="frmText11"> </td>
- </tr>
- <tr>
- <td> </td>
- <td><input name="Speichern" type="submit" class="button" value="{tmpl_var name='save_txt'}">
- <input name="Abbrechen" type="button" class="button" value="{tmpl_var name='cancel_txt'}" onClick="self.location.href='form_list.php';">
- </td>
- </tr>
-</table>
-<input type="hidden" name="module_name" value="{tmpl_var name='module_name'}">
-<input type="hidden" name="form_name" value="{tmpl_var name='form_name'}">
+<form method="POST" action="form_edit.php">
+<div class="frmTextHead"><tmpl_var name="header_txt"></div><br />
+<table width="500" border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="name_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[name]" type="text" class="text" value="{tmpl_var name='name'}" size="20" maxlength="50" {tmpl_var name='readonly'}></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="title_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[title]" type="text" class="text" value="{tmpl_var name='title'}" size="20" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="description_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[description]" type="text" class="text" value="{tmpl_var name='description'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="action_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[action]" type="text" class="text" value="{tmpl_var name='action'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="db_table_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[db_table]" type="text" class="text" value="{tmpl_var name='db_table'}" size="10" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="db_table_idx_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[db_table_idx]" type="text" class="text" value="{tmpl_var name='db_table_idx'}" size="10" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="db_history_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[db_history]" type="text" class="text" value="{tmpl_var name='db_history'}" size="3" maxlength="3"> yes / no</td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="tab_default_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[tab_default]" type="text" class="text" value="{tmpl_var name='tab_default'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="list_default_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[list_default]" type="text" class="text" value="{tmpl_var name='list_default'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="auth_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[auth]" type="text" class="text" value="{tmpl_var name='auth'}" size="3" maxlength="3"> yes / no</td>
+ </tr>
+ <tr>
+ <td colspan="2" class="frmText11"> </td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="auth_preset_userid_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[auth_preset][userid]" type="text" class="text" value="{tmpl_var name='auth_preset_userid'}" size="4" maxlength="4"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="auth_preset_groupid_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[auth_preset][groupid]" type="text" class="text" value="{tmpl_var name='auth_preset_groupid'}" size="4" maxlength="4"></td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="auth_preset_perm_user_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[auth_preset][perm_user]" type="text" class="text" value="{tmpl_var name='auth_preset_perm_user'}" size="4" maxlength="4"> r = read, i = insert, u = update, d = delete</td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="auth_preset_perm_group_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[auth_preset][perm_group]" type="text" class="text" value="{tmpl_var name='auth_preset_perm_group'}" size="4" maxlength="4"> r = read, i = insert, u = update, d = delete</td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="auth_preset_perm_other_txt">:</td>
+ <td width="366" class="frmText11"><input name="form[auth_preset][perm_other]" type="text" class="text" value="{tmpl_var name='auth_preset_perm_other'}" size="4" maxlength="4"> r = read, i = insert, u = update, d = delete</td>
+ </tr>
+ <tr>
+ <td colspan="2" class="frmText11"> </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td><input name="Speichern" type="submit" class="button" value="{tmpl_var name='save_txt'}">
+ <input name="Abbrechen" type="button" class="button" value="{tmpl_var name='cancel_txt'}" onClick="self.location.href='form_list.php';">
+ </td>
+ </tr>
+</table>
+<input type="hidden" name="module_name" value="{tmpl_var name='module_name'}">
+<input type="hidden" name="form_name" value="{tmpl_var name='form_name'}">
</form>
\ No newline at end of file
diff --git a/interface/web/designer/templates/form_show.htm b/interface/web/designer/templates/form_show.htm
index b104070..2a3eff4 100644
--- a/interface/web/designer/templates/form_show.htm
+++ b/interface/web/designer/templates/form_show.htm
@@ -1,61 +1,61 @@
-<script language="JavaScript">
-<!--
-function del_module(link) {
- if(window.confirm("{tmpl_var name='module_del_txt'}")) {
- location.href = link;
- }
-}
-function del_menu(link) {
- if(window.confirm("{tmpl_var name='menu_del_txt'}")) {
- location.href = link;
- }
-}
-function del_menuitem(link) {
- if(window.confirm("{tmpl_var name='item_del_txt'}")) {
- location.href = link;
- }
-}
-
-//-->
-</script>
-<form name="myform" action="module_show.php" method="POST">
-<div class="frmTextHead"><tmpl_var name="header_txt"></div><br />
-<fieldset style="width:320px;"><legend class="frmText11"><b>{tmpl_var name='form_txt'}</b></legend>
-<table border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="title_txt">:</td>
- <td width="366" class="frmText11">{tmpl_var name='title'}</td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="name_txt">:</td>
- <td width="366" class="frmText11">{tmpl_var name='form_name'}</td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="module_txt">:</td>
- <td width="366" class="frmText11">{tmpl_var name='module_name'}</td>
- </tr>
- <tr>
- <td width="126" class="frmText11"><tmpl_var name="description_txt">:</td>
- <td width="366" class="frmText11" valign="top">{tmpl_var name='description'}</td>
- </tr>
- <tr>
- <td colspan="2" class="frmText11"> </td>
- </tr>
- <tr>
- <td colspan="2" class="frmText11">
- <input type="button" name="ed1" value="{tmpl_var name='properties_txt'}" onClick="location.href='form_edit.php?form_name={tmpl_var name='form_name'}&module_name={tmpl_var name='module_name'}'" class="button" />
- <input type="button" name="ed2" value="{tmpl_var name='delete_txt'}" onClick="del_module('form_del.php?form_name={tmpl_var name='form_name'}&module_name={tmpl_var name='module_name'}');" class="button" />
- <input type="button" name="ed3" value="{tmpl_var name='new_tab_txt'}" onClick="location.href='form_tab_edit.php?form_name={tmpl_var name='form_name'}&module_name={tmpl_var name='module_name'}'" class="button" /></td>
- </tr>
-</table>
-</fieldset>
-<table width="350" border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td colspan="2" class="frmText11"> </td>
- </tr>
- <tmpl_var name="nav">
- <tr>
- <td colspan="2" class="frmText11"> </td>
- </tr>
-</table>
+<script language="JavaScript">
+<!--
+function del_module(link) {
+ if(window.confirm("{tmpl_var name='module_del_txt'}")) {
+ location.href = link;
+ }
+}
+function del_menu(link) {
+ if(window.confirm("{tmpl_var name='menu_del_txt'}")) {
+ location.href = link;
+ }
+}
+function del_menuitem(link) {
+ if(window.confirm("{tmpl_var name='item_del_txt'}")) {
+ location.href = link;
+ }
+}
+
+//-->
+</script>
+<form name="myform" action="module_show.php" method="POST">
+<div class="frmTextHead"><tmpl_var name="header_txt"></div><br />
+<fieldset style="width:320px;"><legend class="frmText11"><b>{tmpl_var name='form_txt'}</b></legend>
+<table border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="title_txt">:</td>
+ <td width="366" class="frmText11">{tmpl_var name='title'}</td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="name_txt">:</td>
+ <td width="366" class="frmText11">{tmpl_var name='form_name'}</td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="module_txt">:</td>
+ <td width="366" class="frmText11">{tmpl_var name='module_name'}</td>
+ </tr>
+ <tr>
+ <td width="126" class="frmText11"><tmpl_var name="description_txt">:</td>
+ <td width="366" class="frmText11" valign="top">{tmpl_var name='description'}</td>
+ </tr>
+ <tr>
+ <td colspan="2" class="frmText11"> </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="frmText11">
+ <input type="button" name="ed1" value="{tmpl_var name='properties_txt'}" onClick="location.href='form_edit.php?form_name={tmpl_var name='form_name'}&module_name={tmpl_var name='module_name'}'" class="button" />
+ <input type="button" name="ed2" value="{tmpl_var name='delete_txt'}" onClick="del_module('form_del.php?form_name={tmpl_var name='form_name'}&module_name={tmpl_var name='module_name'}');" class="button" />
+ <input type="button" name="ed3" value="{tmpl_var name='new_tab_txt'}" onClick="location.href='form_tab_edit.php?form_name={tmpl_var name='form_name'}&module_name={tmpl_var name='module_name'}'" class="button" /></td>
+ </tr>
+</table>
+</fieldset>
+<table width="350" border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td colspan="2" class="frmText11"> </td>
+ </tr>
+ <tmpl_var name="nav">
+ <tr>
+ <td colspan="2" class="frmText11"> </td>
+ </tr>
+</table>
</form>
\ No newline at end of file
diff --git a/interface/web/designer/templates/paging.tpl.htm b/interface/web/designer/templates/paging.tpl.htm
index cb82704..eb3bfa6 100644
--- a/interface/web/designer/templates/paging.tpl.htm
+++ b/interface/web/designer/templates/paging.tpl.htm
@@ -1,9 +1,9 @@
-[ <a href='{tmpl_var name="list_file"}?page=0'>|<< </a>]
-<tmpl_if name="show_page_back">
- [<< <a href='{tmpl_var name="list_file"}?page={tmpl_var name="last_page"}'>Zur�ck</a>]
-</tmpl_if>
- Seite {tmpl_var name="next_page"} von {tmpl_var name="max_pages"}
-<tmpl_if name="show_page_next">
- [<a href='{tmpl_var name="list_file"}?page={tmpl_var name="next_page"}'>Weiter >></a>]
-</tmpl_if>
+[ <a href='{tmpl_var name="list_file"}?page=0'>|<< </a>]
+<tmpl_if name="show_page_back">
+ [<< <a href='{tmpl_var name="list_file"}?page={tmpl_var name="last_page"}'>Zur�ck</a>]
+</tmpl_if>
+ Seite {tmpl_var name="next_page"} von {tmpl_var name="max_pages"}
+<tmpl_if name="show_page_next">
+ [<a href='{tmpl_var name="list_file"}?page={tmpl_var name="next_page"}'>Weiter >></a>]
+</tmpl_if>
[<a href='{tmpl_var name="list_file"}?page={tmpl_var name="pages"}'> >>| </a>]
\ No newline at end of file
diff --git a/interface/web/dns/dns_a_list.php b/interface/web/dns/dns_a_list.php
index 681e158..c01aec6 100644
--- a/interface/web/dns/dns_a_list.php
+++ b/interface/web/dns/dns_a_list.php
@@ -1,24 +1,24 @@
-<?php
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/dns_a.list.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-//* Check permissions for module
-$app->auth->check_module_permissions('dns');
-
-$app->uses('listform_actions');
-$app->listform_actions->SQLExtWhere = "type = 'A'";
-
-$app->listform_actions->onLoad();
-
-
+<?php
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/dns_a.list.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+//* Check permissions for module
+$app->auth->check_module_permissions('dns');
+
+$app->uses('listform_actions');
+$app->listform_actions->SQLExtWhere = "type = 'A'";
+
+$app->listform_actions->onLoad();
+
+
?>
\ No newline at end of file
diff --git a/interface/web/dns/dns_rr_del.php b/interface/web/dns/dns_rr_del.php
index 26d369e..d88e2d9 100644
--- a/interface/web/dns/dns_rr_del.php
+++ b/interface/web/dns/dns_rr_del.php
@@ -1,67 +1,67 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/dns_a.list.php";
-$tform_def_file = "form/dns_a.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('dns');
-
-$app->uses('tpl,tform,tform_actions,validate_dns');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-
- function onAfterDelete() {
- global $app; $conf;
-
- //* Update the serial number of the SOA record
- $soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = '".intval($this->dataRecord["zone"])."' AND ".$app->tform->getAuthSQL('r'));
- $soa_id = intval($this->dataRecord["zone"]);
- $serial = $app->validate_dns->increase_serial($soa["serial"]);
- $app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
- }
-}
-
-$page = new page_action;
-$page->onDelete();
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/dns_a.list.php";
+$tform_def_file = "form/dns_a.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('dns');
+
+$app->uses('tpl,tform,tform_actions,validate_dns');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+ function onAfterDelete() {
+ global $app; $conf;
+
+ //* Update the serial number of the SOA record
+ $soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = '".intval($this->dataRecord["zone"])."' AND ".$app->tform->getAuthSQL('r'));
+ $soa_id = intval($this->dataRecord["zone"]);
+ $serial = $app->validate_dns->increase_serial($soa["serial"]);
+ $app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
+ }
+}
+
+$page = new page_action;
+$page->onDelete();
+
?>
\ No newline at end of file
diff --git a/interface/web/dns/dns_slave_del.php b/interface/web/dns/dns_slave_del.php
index 845d776..470bb7c 100644
--- a/interface/web/dns/dns_slave_del.php
+++ b/interface/web/dns/dns_slave_del.php
@@ -1,69 +1,69 @@
-<?php
-
-/*
-Copyright (c) 2008, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/dns_slave.list.php";
-$tform_def_file = "form/dns_slave.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('dns');
-
-$app->uses('tpl,tform,tform_actions');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-
- function onBeforeDelete() {
- global $app; $conf;
-
- if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
-
- // Delete all records that belog to this zone.
- $records = $app->db->queryAllRecords("SELECT id FROM dns_slave WHERE zone = '".intval($this->id)."'");
- foreach($records as $rec) {
- $app->db->datalogDelete('dns_slave','id',$rec['id']);
- }
- }
-}
-
-$page = new page_action;
-$page->onDelete();
-
+<?php
+
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/dns_slave.list.php";
+$tform_def_file = "form/dns_slave.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('dns');
+
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+ function onBeforeDelete() {
+ global $app; $conf;
+
+ if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
+
+ // Delete all records that belog to this zone.
+ $records = $app->db->queryAllRecords("SELECT id FROM dns_slave WHERE zone = '".intval($this->id)."'");
+ foreach($records as $rec) {
+ $app->db->datalogDelete('dns_slave','id',$rec['id']);
+ }
+ }
+}
+
+$page = new page_action;
+$page->onDelete();
+
?>
\ No newline at end of file
diff --git a/interface/web/dns/dns_soa_del.php b/interface/web/dns/dns_soa_del.php
index 38e35bd..0a1944b 100644
--- a/interface/web/dns/dns_soa_del.php
+++ b/interface/web/dns/dns_soa_del.php
@@ -1,69 +1,69 @@
-<?php
-
-/*
-Copyright (c) 2008, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/dns_soa.list.php";
-$tform_def_file = "form/dns_soa.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('dns');
-
-$app->uses('tpl,tform,tform_actions');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-
- function onBeforeDelete() {
- global $app; $conf;
-
- if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
-
- // Delete all records that belog to this zone.
- $records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE zone = '".intval($this->id)."'");
- foreach($records as $rec) {
- $app->db->datalogDelete('dns_rr','id',$rec['id']);
- }
- }
-}
-
-$page = new page_action;
-$page->onDelete();
-
+<?php
+
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/dns_soa.list.php";
+$tform_def_file = "form/dns_soa.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('dns');
+
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+ function onBeforeDelete() {
+ global $app; $conf;
+
+ if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
+
+ // Delete all records that belog to this zone.
+ $records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE zone = '".intval($this->id)."'");
+ foreach($records as $rec) {
+ $app->db->datalogDelete('dns_rr','id',$rec['id']);
+ }
+ }
+}
+
+$page = new page_action;
+$page->onDelete();
+
?>
\ No newline at end of file
diff --git a/interface/web/dns/dns_template_del.php b/interface/web/dns/dns_template_del.php
index 5aa1ff7..bfb343c 100644
--- a/interface/web/dns/dns_template_del.php
+++ b/interface/web/dns/dns_template_del.php
@@ -1,58 +1,58 @@
-<?php
-
-/*
-Copyright (c) 2008, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/dns_template.list.php";
-$tform_def_file = "form/dns_template.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('dns');
-
-$app->uses('tpl,tform,tform_actions');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-
-}
-
-$page = new page_action;
-$page->onDelete();
-
+<?php
+
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/dns_template.list.php";
+$tform_def_file = "form/dns_template.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('dns');
+
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+}
+
+$page = new page_action;
+$page->onDelete();
+
?>
\ No newline at end of file
diff --git a/interface/web/dns/dns_template_list.php b/interface/web/dns/dns_template_list.php
index 4cde9a0..20efa8d 100644
--- a/interface/web/dns/dns_template_list.php
+++ b/interface/web/dns/dns_template_list.php
@@ -1,24 +1,24 @@
-<?php
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/dns_template.list.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-//* Check permissions for module
-$app->auth->check_module_permissions('dns');
-
-$app->uses('listform_actions');
-// $app->listform_actions->SQLExtWhere = "access = 'REJECT'";
-
-$app->listform_actions->onLoad();
-
-
+<?php
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/dns_template.list.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+//* Check permissions for module
+$app->auth->check_module_permissions('dns');
+
+$app->uses('listform_actions');
+// $app->listform_actions->SQLExtWhere = "access = 'REJECT'";
+
+$app->listform_actions->onLoad();
+
+
?>
\ No newline at end of file
diff --git a/interface/web/dns/form/dns_template.tform.php b/interface/web/dns/form/dns_template.tform.php
index a648fd4..1f020da 100644
--- a/interface/web/dns/form/dns_template.tform.php
+++ b/interface/web/dns/form/dns_template.tform.php
@@ -1,101 +1,101 @@
-<?php
-
-/*
- Form Definition
-
- Tabledefinition
-
- Datatypes:
- - INTEGER (Forces the input to Int)
- - DOUBLE
- - CURRENCY (Formats the values to currency notation)
- - VARCHAR (no format check, maxlength: 255)
- - TEXT (no format check)
- - DATE (Dateformat, automatic conversion to timestamps)
-
- Formtype:
- - TEXT (Textfield)
- - TEXTAREA (Textarea)
- - PASSWORD (Password textfield, input is not shown when edited)
- - SELECT (Select option field)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hint:
- The ID field of the database table is not part of the datafield definition.
- The ID field must be always auto incement (int or bigint).
-
-
-*/
-
-$form["title"] = "DNS Wizard template";
-$form["description"] = "";
-$form["name"] = "dns_template";
-$form["action"] = "dns_template_edit.php";
-$form["db_table"] = "dns_template";
-$form["db_table_idx"] = "template_id";
-$form["db_history"] = "yes";
-$form["tab_default"] = "template";
-$form["list_default"] = "dns_template_list.php";
-$form["auth"] = 'yes'; // yes / no
-
-$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-$form["tabs"]['template'] = array (
- 'title' => "DNS Template",
- 'width' => 100,
- 'template' => "templates/dns_template_edit.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'name' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'name_error_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '40',
- 'maxlength' => '255'
- ),
- 'fields' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOXARRAY',
- 'default' => '',
- 'separator' => ',',
- 'value' => array('DOMAIN' => 'Domain','IP' => 'IP Address','NS1' => 'NS 1','NS2' => 'NS 2','EMAIL' => 'Email')
- ),
- 'template' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'TEXTAREA',
- 'default' => '',
- 'value' => '',
- 'cols' => '40',
- 'rows' => '15'
- ),
- 'visible' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'Y',
- 'value' => array(0 => 'N',1 => 'Y')
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-
-
+<?php
+
+/*
+ Form Definition
+
+ Tabledefinition
+
+ Datatypes:
+ - INTEGER (Forces the input to Int)
+ - DOUBLE
+ - CURRENCY (Formats the values to currency notation)
+ - VARCHAR (no format check, maxlength: 255)
+ - TEXT (no format check)
+ - DATE (Dateformat, automatic conversion to timestamps)
+
+ Formtype:
+ - TEXT (Textfield)
+ - TEXTAREA (Textarea)
+ - PASSWORD (Password textfield, input is not shown when edited)
+ - SELECT (Select option field)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hint:
+ The ID field of the database table is not part of the datafield definition.
+ The ID field must be always auto incement (int or bigint).
+
+
+*/
+
+$form["title"] = "DNS Wizard template";
+$form["description"] = "";
+$form["name"] = "dns_template";
+$form["action"] = "dns_template_edit.php";
+$form["db_table"] = "dns_template";
+$form["db_table_idx"] = "template_id";
+$form["db_history"] = "yes";
+$form["tab_default"] = "template";
+$form["list_default"] = "dns_template_list.php";
+$form["auth"] = 'yes'; // yes / no
+
+$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+$form["tabs"]['template'] = array (
+ 'title' => "DNS Template",
+ 'width' => 100,
+ 'template' => "templates/dns_template_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'name_error_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'fields' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'separator' => ',',
+ 'value' => array('DOMAIN' => 'Domain','IP' => 'IP Address','NS1' => 'NS 1','NS2' => 'NS 2','EMAIL' => 'Email')
+ ),
+ 'template' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXTAREA',
+ 'default' => '',
+ 'value' => '',
+ 'cols' => '40',
+ 'rows' => '15'
+ ),
+ 'visible' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'Y',
+ 'value' => array(0 => 'N',1 => 'Y')
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+
+
?>
\ No newline at end of file
diff --git a/interface/web/dns/lib/admin.conf.php b/interface/web/dns/lib/admin.conf.php
index a45d440..67c94a5 100644
--- a/interface/web/dns/lib/admin.conf.php
+++ b/interface/web/dns/lib/admin.conf.php
@@ -1,2 +1,2 @@
-<?php
+<?php
?>
\ No newline at end of file
diff --git a/interface/web/dns/list/dns_template.list.php b/interface/web/dns/list/dns_template.list.php
index 11a1919..3101eb2 100644
--- a/interface/web/dns/list/dns_template.list.php
+++ b/interface/web/dns/list/dns_template.list.php
@@ -1,80 +1,80 @@
-<?php
-
-/*
- Datatypes:
- - INTEGER
- - DOUBLE
- - CURRENCY
- - VARCHAR
- - TEXT
- - DATE
-*/
-
-
-
-// Name of the list
-$liste["name"] = "dns_template";
-
-// Database table
-$liste["table"] = "dns_template";
-
-// Index index field of the database table
-$liste["table_idx"] = "template_id";
-
-// Search Field Prefix
-$liste["search_prefix"] = "search_";
-
-// Records per page
-$liste["records_per_page"] = 15;
-
-// Script File of the list
-$liste["file"] = "dns_template_list.php";
-
-// Script file of the edit form
-$liste["edit_file"] = "dns_template_edit.php";
-
-// Script File of the delete script
-$liste["delete_file"] = "dns_template_del.php";
-
-// Paging Template
-$liste["paging_tpl"] = "templates/paging.tpl.htm";
-
-// Enable auth
-$liste["auth"] = "yes";
-
-
-/*****************************************************
-* Suchfelder
-*****************************************************/
-
-
-$liste["item"][] = array( 'field' => "visible",
- 'datatype' => "VARCHAR",
- 'formtype' => "SELECT",
- 'op' => "=",
- 'prefix' => "",
- 'suffix' => "",
- 'width' => "",
- 'value' => array('Y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'N' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
-
-
-$liste["item"][] = array( 'field' => "name",
- 'datatype' => "VARCHAR",
- 'formtype' => "TEXT",
- 'op' => "like",
- 'prefix' => "%",
- 'suffix' => "%",
- 'width' => "",
- 'value' => "");
-
-
-
-
-
-
-
-
-
-
-
+<?php
+
+/*
+ Datatypes:
+ - INTEGER
+ - DOUBLE
+ - CURRENCY
+ - VARCHAR
+ - TEXT
+ - DATE
+*/
+
+
+
+// Name of the list
+$liste["name"] = "dns_template";
+
+// Database table
+$liste["table"] = "dns_template";
+
+// Index index field of the database table
+$liste["table_idx"] = "template_id";
+
+// Search Field Prefix
+$liste["search_prefix"] = "search_";
+
+// Records per page
+$liste["records_per_page"] = 15;
+
+// Script File of the list
+$liste["file"] = "dns_template_list.php";
+
+// Script file of the edit form
+$liste["edit_file"] = "dns_template_edit.php";
+
+// Script File of the delete script
+$liste["delete_file"] = "dns_template_del.php";
+
+// Paging Template
+$liste["paging_tpl"] = "templates/paging.tpl.htm";
+
+// Enable auth
+$liste["auth"] = "yes";
+
+
+/*****************************************************
+* Suchfelder
+*****************************************************/
+
+
+$liste["item"][] = array( 'field' => "visible",
+ 'datatype' => "VARCHAR",
+ 'formtype' => "SELECT",
+ 'op' => "=",
+ 'prefix' => "",
+ 'suffix' => "",
+ 'width' => "",
+ 'value' => array('Y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'N' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+
+
+$liste["item"][] = array( 'field' => "name",
+ 'datatype' => "VARCHAR",
+ 'formtype' => "TEXT",
+ 'op' => "like",
+ 'prefix' => "%",
+ 'suffix' => "%",
+ 'width' => "",
+ 'value' => "");
+
+
+
+
+
+
+
+
+
+
+
?>
\ No newline at end of file
diff --git a/interface/web/dns/templates/dns_records_edit.htm b/interface/web/dns/templates/dns_records_edit.htm
index 1feb3f9..1ae070c 100644
--- a/interface/web/dns/templates/dns_records_edit.htm
+++ b/interface/web/dns/templates/dns_records_edit.htm
@@ -1,12 +1,12 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_dns_soa">
-
- {tmpl_var name='dns_records'}
-
- <div class="pnl_formsarea">
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_dns_soa">
+
+ {tmpl_var name='dns_records'}
+
+ <div class="pnl_formsarea">
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ </div>
+
+</div>
diff --git a/interface/web/dns/templates/dns_template_edit.htm b/interface/web/dns/templates/dns_template_edit.htm
index 34cf3b1..48b9974 100644
--- a/interface/web/dns/templates/dns_template_edit.htm
+++ b/interface/web/dns/templates/dns_template_edit.htm
@@ -1,38 +1,38 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_dns_template">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="name">{tmpl_var name='name_txt'}</label>
- <input name="name" id="name" value="{tmpl_var name='name'}" size="40" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='fields_txt'}</p>
- <div class="multiField">
- {tmpl_var name='fields'}
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="template">{tmpl_var name='template_txt'}</label>
- <textarea name="template" id="template" rows='15' cols='40'>{tmpl_var name='template'}</textarea>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='visible_txt'}</p>
- <div class="multiField">
- {tmpl_var name='visible'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','dns/dns_template_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('dns/dns_template_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_dns_template">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="name">{tmpl_var name='name_txt'}</label>
+ <input name="name" id="name" value="{tmpl_var name='name'}" size="40" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='fields_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='fields'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="template">{tmpl_var name='template_txt'}</label>
+ <textarea name="template" id="template" rows='15' cols='40'>{tmpl_var name='template'}</textarea>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='visible_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='visible'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','dns/dns_template_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('dns/dns_template_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/domain/lib/admin.conf.php b/interface/web/domain/lib/admin.conf.php
index 5e64662..584f28b 100644
--- a/interface/web/domain/lib/admin.conf.php
+++ b/interface/web/domain/lib/admin.conf.php
@@ -1,29 +1,29 @@
-<?php
-/*
-Copyright (c) 2010 Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
+<?php
+/*
+Copyright (c) 2010 Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
?>
\ No newline at end of file
diff --git a/interface/web/domain/lib/lang/en_domain_list.lng b/interface/web/domain/lib/lang/en_domain_list.lng
index 161fd50..0898a00 100644
--- a/interface/web/domain/lib/lang/en_domain_list.lng
+++ b/interface/web/domain/lib/lang/en_domain_list.lng
@@ -1,5 +1,5 @@
-<?php
-$wb['list_head_txt'] = 'Domains';
-$wb['add_new_record_txt'] = 'Add new Domain';
-$wb['domain_txt'] = 'Domain';
+<?php
+$wb['list_head_txt'] = 'Domains';
+$wb['add_new_record_txt'] = 'Add new Domain';
+$wb['domain_txt'] = 'Domain';
?>
\ No newline at end of file
diff --git a/interface/web/help/templates/support_message_edit.htm b/interface/web/help/templates/support_message_edit.htm
index 305a47a..4c8fbdd 100644
--- a/interface/web/help/templates/support_message_edit.htm
+++ b/interface/web/help/templates/support_message_edit.htm
@@ -1,33 +1,33 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_support_message">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Message</legend>
- <div class="ctrlHolder">
- <label for="recipient_id">{tmpl_var name='recipient_id_txt'}</label>
- <select name="recipient_id" id="recipient_id" class="selectInput">
- {tmpl_var name='recipient_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="subject">{tmpl_var name='subject_txt'}</label>
- <input name="subject" id="subject" value="{tmpl_var name='subject'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="message">{tmpl_var name='message_txt'}</label>
- <textarea name="message" id="message" rows='10' cols='30'>{tmpl_var name='message'}</textarea>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- <input type="hidden" name="tstamp" value="{tmpl_var name='tstamp'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','help/support_message_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('help/support_message_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_support_message">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Message</legend>
+ <div class="ctrlHolder">
+ <label for="recipient_id">{tmpl_var name='recipient_id_txt'}</label>
+ <select name="recipient_id" id="recipient_id" class="selectInput">
+ {tmpl_var name='recipient_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="subject">{tmpl_var name='subject_txt'}</label>
+ <input name="subject" id="subject" value="{tmpl_var name='subject'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="message">{tmpl_var name='message_txt'}</label>
+ <textarea name="message" id="message" rows='10' cols='30'>{tmpl_var name='message'}</textarea>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ <input type="hidden" name="tstamp" value="{tmpl_var name='tstamp'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','help/support_message_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('help/support_message_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/help/templates/support_message_view.htm b/interface/web/help/templates/support_message_view.htm
index f406e9c..9ca312c 100644
--- a/interface/web/help/templates/support_message_view.htm
+++ b/interface/web/help/templates/support_message_view.htm
@@ -1,24 +1,24 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_support_message">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Message</legend>
- <div class="ctrlHolder">
- <label for="subject">{tmpl_var name='subject_txt'}</label>
- <p>{tmpl_var name='subject'}</p>
- </div>
- <div class="ctrlHolder">
- <label for="message">{tmpl_var name='message_txt'}</label>
- <p>{tmpl_var name='message'}</p>
- </div>
- </fieldset>
-<div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='reply_txt'}" onClick="loadContent('help/support_message_edit.php?reply={tmpl_var name='id'}');"><span>{tmpl_var name='reply_txt'}</span></button>
- </div>
- </div>
-
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_support_message">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Message</legend>
+ <div class="ctrlHolder">
+ <label for="subject">{tmpl_var name='subject_txt'}</label>
+ <p>{tmpl_var name='subject'}</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="message">{tmpl_var name='message_txt'}</label>
+ <p>{tmpl_var name='message'}</p>
+ </div>
+ </fieldset>
+<div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='reply_txt'}" onClick="loadContent('help/support_message_edit.php?reply={tmpl_var name='id'}');"><span>{tmpl_var name='reply_txt'}</span></button>
+ </div>
+ </div>
+
+ </div>
+
+</div>
diff --git a/interface/web/index.php b/interface/web/index.php
index 9c31282..b8b32ec 100644
--- a/interface/web/index.php
+++ b/interface/web/index.php
@@ -1,41 +1,41 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-error_reporting(E_ALL|E_STRICT);
-
-require_once('../lib/config.inc.php');
-require_once('../lib/app.inc.php');
-
-$app->uses('tpl');
-$app->tpl->newTemplate('main.tpl.htm');
-
-$app->tpl_defaults();
-$app->tpl->pparse();
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+error_reporting(E_ALL|E_STRICT);
+
+require_once('../lib/config.inc.php');
+require_once('../lib/app.inc.php');
+
+$app->uses('tpl');
+$app->tpl->newTemplate('main.tpl.htm');
+
+$app->tpl_defaults();
+$app->tpl->pparse();
?>
\ No newline at end of file
diff --git a/interface/web/js/yui/datatable/assets/datatable.css b/interface/web/js/yui/datatable/assets/datatable.css
index bdf4a7a..4885ff7 100644
--- a/interface/web/js/yui/datatable/assets/datatable.css
+++ b/interface/web/js/yui/datatable/assets/datatable.css
@@ -4,79 +4,79 @@
http://developer.yahoo.net/yui/license.txt
version: 2.2.0
*/
-/*debug css
-.example span, .example .yui-dt-columntext {border:1px solid red;}*/
-
-/*foundational css*/
-td {
- overflow:hidden;
-}
-
-.yui-dt-headcontainer {
- position:relative;
-
-}
-
-.yui-dt-headtext {
- position:relative;
- border-right:10px;
-}
-
-.yui-dt-headresizer {
- position:absolute;
- margin-right:-6px;
- right:0;
- bottom:0;
- width:6px;
- height:100%;
- cursor:w-resize;
- cursor:col-resize;
-}
-
-.yui-dt-firstlink,.yui-dt-prevlink,.yui-dt-nextlink,.yui-dt-lastlink,.yui-dt-pagelink {
- cursor:hand;
- cursor:pointer;
- text-decoration:underline;
-}
-
-.yui-dt-scrollable {
- width:20em;
- margin-bottom:3em;
-}
-
-
-.yui-dt-scrollable thead {
- background:#696969; /* IE needs a bgcolor to hide tbody as it scrolls */
- border:1px solid #000;
- display:block; /* enables tbody scrolling for safari and opera */
-}
-
-.yui-dt-scrollable thead th {
- width:10em; /* any value seems to here, just need something */
-}
-
-tbody.yui-dt-scrollable {
- display:block; /* enables tbody scrolling for safari and opera */
- height:10em;
- overflow:auto; /* for scrolling other than IE */
-}
-
-/* IE specific */
-.yui-dt-scrollable {
- height:10em;
- *overflow-y:auto;
-}
-
-.yui-dt-scrollable tbody {
- *height:auto; /* override the non IE height */
-}
-
-.yui-dt-scrollable thead tr {
- position:relative; /* IE cant scroll tbody, so trick it into fixing thead */
-}
-
-.yui-dt-scrollable tbody td {
- width:10em;
-}
-
-
+/*debug css
+.example span, .example .yui-dt-columntext {border:1px solid red;}*/
+
+/*foundational css*/
+td {
+ overflow:hidden;
+}
+
+.yui-dt-headcontainer {
+ position:relative;
+
+}
+
+.yui-dt-headtext {
+ position:relative;
+ border-right:10px;
+}
+
+.yui-dt-headresizer {
+ position:absolute;
+ margin-right:-6px;
+ right:0;
+ bottom:0;
+ width:6px;
+ height:100%;
+ cursor:w-resize;
+ cursor:col-resize;
+}
+
+.yui-dt-firstlink,.yui-dt-prevlink,.yui-dt-nextlink,.yui-dt-lastlink,.yui-dt-pagelink {
+ cursor:hand;
+ cursor:pointer;
+ text-decoration:underline;
+}
+
+.yui-dt-scrollable {
+ width:20em;
+ margin-bottom:3em;
+}
+
+
+.yui-dt-scrollable thead {
+ background:#696969; /* IE needs a bgcolor to hide tbody as it scrolls */
+ border:1px solid #000;
+ display:block; /* enables tbody scrolling for safari and opera */
+}
+
+.yui-dt-scrollable thead th {
+ width:10em; /* any value seems to here, just need something */
+}
+
+tbody.yui-dt-scrollable {
+ display:block; /* enables tbody scrolling for safari and opera */
+ height:10em;
+ overflow:auto; /* for scrolling other than IE */
+}
+
+/* IE specific */
+.yui-dt-scrollable {
+ height:10em;
+ *overflow-y:auto;
+}
+
+.yui-dt-scrollable tbody {
+ *height:auto; /* override the non IE height */
+}
+
+.yui-dt-scrollable thead tr {
+ position:relative; /* IE cant scroll tbody, so trick it into fixing thead */
+}
+
+.yui-dt-scrollable tbody td {
+ width:10em;
+}
+
+
diff --git a/interface/web/js/yui/logger/assets/logger.css b/interface/web/js/yui/logger/assets/logger.css
index a723cfe..bca6e0b 100644
--- a/interface/web/js/yui/logger/assets/logger.css
+++ b/interface/web/js/yui/logger/assets/logger.css
@@ -4,23 +4,23 @@
http://developer.yahoo.net/yui/license.txt
version: 2.2.0
*/
-/* logger default styles */
-/* font size is controlled here: default 77% */
-#yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}
-/* width is controlled here: default 31em */
-.yui-log {padding:1em;width:31em;background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;}
-.yui-log p {margin:1px;padding:.1em;}
-.yui-log button {font-family:monospace;}
-.yui-log .yui-log-hd {margin-top:1em;padding:.5em;background-color:#575757;color:#FFF;}
-/* height is controlled here: default 20em*/
-.yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;}
-.yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;}
-.yui-log .yui-log-ft .yui-log-categoryfilters {}
-.yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;}
-.yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;}
-.yui-log .yui-log-filtergrp {margin-right:.5em;}
-.yui-log .info {background-color:#A7CC25;} /* A7CC25 green */
-.yui-log .warn {background-color:#F58516;} /* F58516 orange */
-.yui-log .error {background-color:#E32F0B;} /* E32F0B red */
-.yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */
-.yui-log .window {background-color:#F2E886;} /* F2E886 tan */
+/* logger default styles */
+/* font size is controlled here: default 77% */
+#yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}
+/* width is controlled here: default 31em */
+.yui-log {padding:1em;width:31em;background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;}
+.yui-log p {margin:1px;padding:.1em;}
+.yui-log button {font-family:monospace;}
+.yui-log .yui-log-hd {margin-top:1em;padding:.5em;background-color:#575757;color:#FFF;}
+/* height is controlled here: default 20em*/
+.yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;}
+.yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;}
+.yui-log .yui-log-ft .yui-log-categoryfilters {}
+.yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;}
+.yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;}
+.yui-log .yui-log-filtergrp {margin-right:.5em;}
+.yui-log .info {background-color:#A7CC25;} /* A7CC25 green */
+.yui-log .warn {background-color:#F58516;} /* F58516 orange */
+.yui-log .error {background-color:#E32F0B;} /* E32F0B red */
+.yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */
+.yui-log .window {background-color:#F2E886;} /* F2E886 tan */
diff --git a/interface/web/login/templates/password_reset.htm b/interface/web/login/templates/password_reset.htm
index f3f99d2..d47210a 100644
--- a/interface/web/login/templates/password_reset.htm
+++ b/interface/web/login/templates/password_reset.htm
@@ -1,33 +1,33 @@
-<h2>Password Reset</h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_password_reset">
-
- <tmpl_if name="msg">
- <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
- </tmpl_if>
- <tmpl_if name="error">
- <div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
- </tmpl_if>
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Password reset</legend>
- <div class="ctrlHolder">
- <label for="email"><em>*</em> E-Mail</label>
- <input name="email" id="email" value="" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="username"><em>*</em> Username</label>
- <input name="username" id="username" value="" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="s_mod" value="login" />
- <input type="hidden" name="s_pg" value="index" />
-
- <div class="buttonHolder buttons">
- <button class="positive" type="button" value="{tmpl_var name="add_new_record_txt"}" onClick="submitForm('pageForm','login/password_reset.php');"><span>Resend password</span></button>
- </div>
- </div>
-
-</div>
+<h2>Password Reset</h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_password_reset">
+
+ <tmpl_if name="msg">
+ <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+ </tmpl_if>
+ <tmpl_if name="error">
+ <div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+ </tmpl_if>
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Password reset</legend>
+ <div class="ctrlHolder">
+ <label for="email"><em>*</em> E-Mail</label>
+ <input name="email" id="email" value="" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="username"><em>*</em> Username</label>
+ <input name="username" id="username" value="" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="s_mod" value="login" />
+ <input type="hidden" name="s_pg" value="index" />
+
+ <div class="buttonHolder buttons">
+ <button class="positive" type="button" value="{tmpl_var name="add_new_record_txt"}" onClick="submitForm('pageForm','login/password_reset.php');"><span>Resend password</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/form/mail_mailinglist.tform.php b/interface/web/mail/form/mail_mailinglist.tform.php
index 1b4ce69..b0e390b 100644
--- a/interface/web/mail/form/mail_mailinglist.tform.php
+++ b/interface/web/mail/form/mail_mailinglist.tform.php
@@ -1,122 +1,122 @@
-<?php
-
-/*
- Form Definition
-
- Tabledefinition
-
- Datatypes:
- - INTEGER (Forces the input to Int)
- - DOUBLE
- - CURRENCY (Formats the values to currency notation)
- - VARCHAR (no format check, maxlength: 255)
- - TEXT (no format check)
- - DATE (Dateformat, automatic conversion to timestamps)
-
- Formtype:
- - TEXT (Textfield)
- - TEXTAREA (Textarea)
- - PASSWORD (Password textfield, input is not shown when edited)
- - SELECT (Select option field)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hint:
- The ID field of the database table is not part of the datafield definition.
- The ID field must be always auto incement (int or bigint).
-
-
-*/
-
-$form["title"] = "Mailing List";
-$form["description"] = "";
-$form["name"] = "mail_mailinglist";
-$form["action"] = "mail_mailinglist_edit.php";
-$form["db_table"] = "mail_mailinglist";
-$form["db_table_idx"] = "mailinglist_id";
-$form["db_history"] = "yes";
-$form["tab_default"] = "mailinglist";
-$form["list_default"] = "mail_mailinglist_list.php";
-$form["auth"] = 'yes'; // yes / no
-
-$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-$form["tabs"]['mailinglist'] = array (
- 'title' => "Mailing List",
- 'width' => 100,
- 'template' => "templates/mail_mailinglist_edit.htm",
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'server_id' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT server_id,server_name FROM server WHERE mail_server = 1 AND mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
- 'keyfield'=> 'server_id',
- 'valuefield'=> 'server_name'
- ),
- 'value' => ''
- ),
- 'domain' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'domain_error_empty'),
- 1 => array ( 'type' => 'REGEX',
- 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z\-]{2,10}$/',
- 'errmsg'=> 'domain_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'listname' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'listname_error_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'email' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL',
- 'errmsg'=> 'email_error_isemail'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'password' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'PASSWORD',
- 'encryption'=> 'CLEARTEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
+<?php
+
+/*
+ Form Definition
+
+ Tabledefinition
+
+ Datatypes:
+ - INTEGER (Forces the input to Int)
+ - DOUBLE
+ - CURRENCY (Formats the values to currency notation)
+ - VARCHAR (no format check, maxlength: 255)
+ - TEXT (no format check)
+ - DATE (Dateformat, automatic conversion to timestamps)
+
+ Formtype:
+ - TEXT (Textfield)
+ - TEXTAREA (Textarea)
+ - PASSWORD (Password textfield, input is not shown when edited)
+ - SELECT (Select option field)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hint:
+ The ID field of the database table is not part of the datafield definition.
+ The ID field must be always auto incement (int or bigint).
+
+
+*/
+
+$form["title"] = "Mailing List";
+$form["description"] = "";
+$form["name"] = "mail_mailinglist";
+$form["action"] = "mail_mailinglist_edit.php";
+$form["db_table"] = "mail_mailinglist";
+$form["db_table_idx"] = "mailinglist_id";
+$form["db_history"] = "yes";
+$form["tab_default"] = "mailinglist";
+$form["list_default"] = "mail_mailinglist_list.php";
+$form["auth"] = 'yes'; // yes / no
+
+$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+$form["tabs"]['mailinglist'] = array (
+ 'title' => "Mailing List",
+ 'width' => 100,
+ 'template' => "templates/mail_mailinglist_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'server_id' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT server_id,server_name FROM server WHERE mail_server = 1 AND mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name',
+ 'keyfield'=> 'server_id',
+ 'valuefield'=> 'server_name'
+ ),
+ 'value' => ''
+ ),
+ 'domain' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'domain_error_empty'),
+ 1 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z\-]{2,10}$/',
+ 'errmsg'=> 'domain_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'listname' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'listname_error_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'email' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'ISEMAIL',
+ 'errmsg'=> 'email_error_isemail'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'password' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'PASSWORD',
+ 'encryption'=> 'CLEARTEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/admin.conf.php b/interface/web/mail/lib/admin.conf.php
index a45d440..67c94a5 100644
--- a/interface/web/mail/lib/admin.conf.php
+++ b/interface/web/mail/lib/admin.conf.php
@@ -1,2 +1,2 @@
-<?php
+<?php
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_alias_list.lng b/interface/web/mail/lib/lang/en_mail_alias_list.lng
index 10d5a6c..2a6fbc3 100644
--- a/interface/web/mail/lib/lang/en_mail_alias_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_alias_list.lng
@@ -1,8 +1,8 @@
-<?php
-$wb["list_head_txt"] = 'Email Alias';
-$wb["active_txt"] = 'Active';
-$wb["source_txt"] = 'source';
-$wb["destination_txt"] = 'Destination';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add new Email alias';
+<?php
+$wb["list_head_txt"] = 'Email Alias';
+$wb["active_txt"] = 'Active';
+$wb["source_txt"] = 'source';
+$wb["destination_txt"] = 'Destination';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add new Email alias';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_blacklist_list.lng b/interface/web/mail/lib/lang/en_mail_blacklist_list.lng
index 9eb28ce..322d8bd 100644
--- a/interface/web/mail/lib/lang/en_mail_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_blacklist_list.lng
@@ -1,10 +1,10 @@
-<?php
-$wb["list_head_txt"] = 'Email Blacklist';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["source_txt"] = 'Blacklisted address';
-$wb["type_txt"] = 'Type';
-$wb["recipient_txt"] = 'Recipient';
-$wb["add_new_record_txt"] = 'Add new Blacklist record';
-$wb["access_txt"] = 'access';
+<?php
+$wb["list_head_txt"] = 'Email Blacklist';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["source_txt"] = 'Blacklisted address';
+$wb["type_txt"] = 'Type';
+$wb["recipient_txt"] = 'Recipient';
+$wb["add_new_record_txt"] = 'Add new Blacklist record';
+$wb["access_txt"] = 'access';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/en_mail_domain_admin_list.lng
index 03350cf..c56e27b 100644
--- a/interface/web/mail/lib/lang/en_mail_domain_admin_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_domain_admin_list.lng
@@ -1,8 +1,8 @@
-<?php
-$wb["list_head_txt"] = 'Email Domain';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["add_new_record_txt"] = 'Add new Domain';
-$wb["active_txt"] = 'Active';
-$wb["sys_groupid_txt"] = 'Client';
+<?php
+$wb["list_head_txt"] = 'Email Domain';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["add_new_record_txt"] = 'Add new Domain';
+$wb["active_txt"] = 'Active';
+$wb["sys_groupid_txt"] = 'Client';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/en_mail_domain_catchall_list.lng
index 589423b..386737f 100644
--- a/interface/web/mail/lib/lang/en_mail_domain_catchall_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_domain_catchall_list.lng
@@ -1,9 +1,9 @@
-<?php
-$wb["list_head_txt"] = 'Email Catchall';
-$wb["active_txt"] = 'Active';
-$wb["source_txt"] = 'source';
-$wb["destination_txt"] = 'Destination email address';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["add_new_record_txt"] = 'Add new Catchall';
+<?php
+$wb["list_head_txt"] = 'Email Catchall';
+$wb["active_txt"] = 'Active';
+$wb["source_txt"] = 'source';
+$wb["destination_txt"] = 'Destination email address';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["add_new_record_txt"] = 'Add new Catchall';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_forward_list.lng b/interface/web/mail/lib/lang/en_mail_forward_list.lng
index f850512..9d10b1c 100644
--- a/interface/web/mail/lib/lang/en_mail_forward_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_forward_list.lng
@@ -1,8 +1,8 @@
-<?php
-$wb["list_head_txt"] = 'Mail Forward';
-$wb["active_txt"] = 'Active';
-$wb["source_txt"] = 'source';
-$wb["destination_txt"] = 'Destination';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add new Email forward';
+<?php
+$wb["list_head_txt"] = 'Mail Forward';
+$wb["active_txt"] = 'Active';
+$wb["source_txt"] = 'source';
+$wb["destination_txt"] = 'Destination';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add new Email forward';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_mailinglist.lng b/interface/web/mail/lib/lang/en_mail_mailinglist.lng
index 44790b1..f7ada3e 100644
--- a/interface/web/mail/lib/lang/en_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/en_mail_mailinglist.lng
@@ -1,15 +1,15 @@
-<?php
-$wb["limit_mailmailinglist_txt"] = 'Limit reached';
-$wb["domain_error_empty"] = 'Domain is empty.';
-$wb["listname_error_empty"] = 'Listname is empty.';
-$wb["domain_error_regex"] = 'Invalid domain name.';
-$wb["email_in_use_txt"] = 'Email is in use';
-$wb["no_domain_perm"] = 'You have no permission for this domain.';
-$wb["password_strength_txt"] = 'Password strength';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["listname_txt"] = 'Listname';
-$wb["client_txt"] = 'Client';
-$wb["email_txt"] = 'Email';
-$wb["password_txt"] = 'Password';
+<?php
+$wb["limit_mailmailinglist_txt"] = 'Limit reached';
+$wb["domain_error_empty"] = 'Domain is empty.';
+$wb["listname_error_empty"] = 'Listname is empty.';
+$wb["domain_error_regex"] = 'Invalid domain name.';
+$wb["email_in_use_txt"] = 'Email is in use';
+$wb["no_domain_perm"] = 'You have no permission for this domain.';
+$wb["password_strength_txt"] = 'Password strength';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["listname_txt"] = 'Listname';
+$wb["client_txt"] = 'Client';
+$wb["email_txt"] = 'Email';
+$wb["password_txt"] = 'Password';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/en_mail_mailinglist_list.lng
index ec48108..0f88589 100644
--- a/interface/web/mail/lib/lang/en_mail_mailinglist_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_mailinglist_list.lng
@@ -1,5 +1,5 @@
-<?php
-$wb["list_head_txt"] = 'Mailing List';
-$wb["domain_txt"] = 'Domain';
-$wb["listname_txt"] = 'Listname';
+<?php
+$wb["list_head_txt"] = 'Mailing List';
+$wb["domain_txt"] = 'Domain';
+$wb["listname_txt"] = 'Listname';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/en_mail_spamfilter_list.lng
index 22316fa..bcc1f83 100644
--- a/interface/web/mail/lib/lang/en_mail_spamfilter_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_spamfilter_list.lng
@@ -1,8 +1,8 @@
-<?php
-$wb["list_head_txt"] = 'Spamfilter';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["server_name_txt"] = 'server_name';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add new Spamfilter record';
+<?php
+$wb["list_head_txt"] = 'Spamfilter';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["server_name_txt"] = 'server_name';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add new Spamfilter record';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_transport_list.lng b/interface/web/mail/lib/lang/en_mail_transport_list.lng
index febadb8..5dfb809 100644
--- a/interface/web/mail/lib/lang/en_mail_transport_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_transport_list.lng
@@ -1,9 +1,9 @@
-<?php
-$wb["list_head_txt"] = 'Advanced Email Routing';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["transport_txt"] = 'Transport';
-$wb["sort_order_txt"] = 'Sort by';
-$wb["add_new_record_txt"] = 'Add new transport';
+<?php
+$wb["list_head_txt"] = 'Advanced Email Routing';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["transport_txt"] = 'Transport';
+$wb["sort_order_txt"] = 'Sort by';
+$wb["add_new_record_txt"] = 'Add new transport';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_mail_whitelist_list.lng b/interface/web/mail/lib/lang/en_mail_whitelist_list.lng
index 22aedf2..5396c72 100644
--- a/interface/web/mail/lib/lang/en_mail_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_whitelist_list.lng
@@ -1,10 +1,10 @@
-<?php
-$wb["list_head_txt"] = 'Email Whitelist';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["source_txt"] = 'Whitelisted address';
-$wb["type_txt"] = 'Type';
-$wb["recipient_txt"] = 'Recipient';
-$wb["add_new_record_txt"] = 'Add new Whitelist record';
-$wb["access_txt"] = 'access';
+<?php
+$wb["list_head_txt"] = 'Email Whitelist';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["source_txt"] = 'Whitelisted address';
+$wb["type_txt"] = 'Type';
+$wb["recipient_txt"] = 'Recipient';
+$wb["add_new_record_txt"] = 'Add new Whitelist record';
+$wb["access_txt"] = 'access';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/en_spamfilter_policy_list.lng
index 1e87733..f534123 100644
--- a/interface/web/mail/lib/lang/en_spamfilter_policy_list.lng
+++ b/interface/web/mail/lib/lang/en_spamfilter_policy_list.lng
@@ -1,9 +1,9 @@
-<?php
-$wb["list_head_txt"] = 'Spamfilter Policy';
-$wb["policy_name_txt"] = 'Name';
-$wb["virus_lover_txt"] = 'Virus lover';
-$wb["spam_lover_txt"] = 'Spam lover';
-$wb["banned_files_lover_txt"] = 'Banned Files lover';
-$wb["bad_header_lover_txt"] = 'Bad Header lover';
-$wb["add_new_record_txt"] = 'Add Policy record';
+<?php
+$wb["list_head_txt"] = 'Spamfilter Policy';
+$wb["policy_name_txt"] = 'Name';
+$wb["virus_lover_txt"] = 'Virus lover';
+$wb["spam_lover_txt"] = 'Spam lover';
+$wb["banned_files_lover_txt"] = 'Banned Files lover';
+$wb["bad_header_lover_txt"] = 'Bad Header lover';
+$wb["add_new_record_txt"] = 'Add Policy record';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_spamfilter_users_list.lng b/interface/web/mail/lib/lang/en_spamfilter_users_list.lng
index 75fc98e..aa8fea3 100644
--- a/interface/web/mail/lib/lang/en_spamfilter_users_list.lng
+++ b/interface/web/mail/lib/lang/en_spamfilter_users_list.lng
@@ -1,10 +1,10 @@
-<?php
-$wb["list_head_txt"] = 'Spamfilter Users';
-$wb["local_txt"] = 'Local';
-$wb["server_id_txt"] = 'Server';
-$wb["priority_txt"] = 'Priority';
-$wb["policy_id_txt"] = 'Policy';
-$wb["fullname_txt"] = 'Name';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add Spamfilter User';
+<?php
+$wb["list_head_txt"] = 'Spamfilter Users';
+$wb["local_txt"] = 'Local';
+$wb["server_id_txt"] = 'Server';
+$wb["priority_txt"] = 'Priority';
+$wb["policy_id_txt"] = 'Policy';
+$wb["fullname_txt"] = 'Name';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add Spamfilter User';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/en_spamfilter_whitelist_list.lng
index 72495f5..e5efd3f 100644
--- a/interface/web/mail/lib/lang/en_spamfilter_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/en_spamfilter_whitelist_list.lng
@@ -1,9 +1,9 @@
-<?php
-$wb["list_head_txt"] = 'Spamfilter Whitelist';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["priority_txt"] = 'Priority';
-$wb["rid_txt"] = 'User';
-$wb["email_txt"] = 'Whitelisted Email';
-$wb["add_new_record_txt"] = 'Add Whitelist record';
+<?php
+$wb["list_head_txt"] = 'Spamfilter Whitelist';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["priority_txt"] = 'Priority';
+$wb["rid_txt"] = 'User';
+$wb["email_txt"] = 'Whitelisted Email';
+$wb["add_new_record_txt"] = 'Add Whitelist record';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng
index 9af401f..c2cc1b1 100644
--- a/interface/web/mail/lib/lang/fr_mail_user.lng
+++ b/interface/web/mail/lib/lang/fr_mail_user.lng
@@ -22,8 +22,8 @@
$wb['limit_mailbox_txt'] = 'The max. number of mailboxes for your account is reached.';
$wb['limit_mailquota_txt'] = 'The max space for mailboxes is reached. The max. available space in MB is';
$wb['welcome_mail_subject'] = 'Bienvenue sur votre nouveau compte mail.';
-$wb['welcome_mail_message'] = 'Bienvenue sur votre nouveau compte mail.
-
+$wb['welcome_mail_message'] = 'Bienvenue sur votre nouveau compte mail.
+
Votre webmaster.';
$wb['disableimap_txt'] = 'Désactiver IMAP';
$wb['disablepop3_txt'] = 'Désactiver POP3';
diff --git a/interface/web/mail/lib/lang/id_mail_alias_list.lng b/interface/web/mail/lib/lang/id_mail_alias_list.lng
index 10d5a6c..2a6fbc3 100644
--- a/interface/web/mail/lib/lang/id_mail_alias_list.lng
+++ b/interface/web/mail/lib/lang/id_mail_alias_list.lng
@@ -1,8 +1,8 @@
-<?php
-$wb["list_head_txt"] = 'Email Alias';
-$wb["active_txt"] = 'Active';
-$wb["source_txt"] = 'source';
-$wb["destination_txt"] = 'Destination';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add new Email alias';
+<?php
+$wb["list_head_txt"] = 'Email Alias';
+$wb["active_txt"] = 'Active';
+$wb["source_txt"] = 'source';
+$wb["destination_txt"] = 'Destination';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add new Email alias';
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php
index 522845c..11fad78 100644
--- a/interface/web/mail/lib/module.conf.php
+++ b/interface/web/mail/lib/module.conf.php
@@ -1,200 +1,200 @@
-<?php
-
-$userid=$app->auth->get_user_id();
-
-$module['name'] = 'mail';
-$module['title'] = 'top_menu_email';
-$module['template'] = 'module.tpl.htm';
-$module['startpage'] = 'mail/mail_domain_list.php';
-$module['tab_width'] = '';
-
-
-//**** Email accounts menu
-$items = array();
-
-if($app->auth->get_client_limit($userid,'maildomain') != 0)
-{
- $items[] = array( 'title' => 'Domain',
- 'target' => 'content',
- 'link' => 'mail/mail_domain_list.php',
- 'html_id' => 'mail_domain_list');
-}
-
-if($app->auth->get_client_limit($userid,'mailaliasdomain') != 0)
-{
- $items[] = array( 'title' => 'Domain Alias',
- 'target' => 'content',
- 'link' => 'mail/mail_aliasdomain_list.php',
- 'html_id' => 'mail_aliasdomain_list');
-}
-
-if($app->auth->get_client_limit($userid,'mailbox') != 0)
-{
- $items[] = array( 'title' => 'Email Mailbox',
- 'target' => 'content',
- 'link' => 'mail/mail_user_list.php',
- 'html_id' => 'mail_user_list');
-}
-
-if($app->auth->get_client_limit($userid,'mailalias') != 0)
-{
- $items[] = array( 'title' => 'Email Alias',
- 'target' => 'content',
- 'link' => 'mail/mail_alias_list.php',
- 'html_id' => 'mail_alias_list');
-}
-
-if($app->auth->get_client_limit($userid,'mailforward') != 0)
-{
- $items[] = array( 'title' => 'Email Forward',
- 'target' => 'content',
- 'link' => 'mail/mail_forward_list.php',
- 'html_id' => 'mail_forward_list');
-}
-
-if($app->auth->get_client_limit($userid,'mailcatchall') != 0)
-{
- $items[] = array( 'title' => 'Email Catchall',
- 'target' => 'content',
- 'link' => 'mail/mail_domain_catchall_list.php',
- 'html_id' => 'mail_domain_catchall_list');
-}
-
-if($app->auth->get_client_limit($userid,'mailrouting') != 0)
-{
- $items[] = array( 'title' => 'Email Routing',
- 'target' => 'content',
- 'link' => 'mail/mail_transport_list.php',
- 'html_id' => 'mail_transport_list');
-}
-
-if(count($items))
-{
- $module['nav'][] = array( 'title' => 'Email Accounts',
- 'open' => 1,
- 'items' => $items);
-}
-
-//**** Mailinglist menu
-$items = array();
-
-if($app->auth->get_client_limit($userid,'mailmailinglist') != 0)
-{
- $items[] = array( 'title' => 'Mailing List',
- 'target' => 'content',
- 'link' => 'mail/mail_mailinglist_list.php',
- 'html_id' => 'mail_mailinglist_list');
-}
-
-if(count($items))
-{
- $module['nav'][] = array( 'title' => 'Mailing List',
- 'open' => 1,
- 'items' => $items);
-}
-
-//**** Spamfilter menu
-$items = array();
-
-if($app->auth->get_client_limit($userid,'spamfilter_wblist') != 0)
-{
- $items[] = array( 'title' => 'Whitelist',
- 'target' => 'content',
- 'link' => 'mail/spamfilter_whitelist_list.php',
- 'html_id' => 'spamfilter_whitelist_list');
-
- $items[] = array( 'title' => 'Blacklist',
- 'target' => 'content',
- 'link' => 'mail/spamfilter_blacklist_list.php',
- 'html_id' => 'spamfilter_blacklist_list');
-}
-
-if($app->auth->is_admin()) {
-
- $items[] = array( 'title' => 'User / Domain',
- 'target' => 'content',
- 'link' => 'mail/spamfilter_users_list.php',
- 'html_id' => 'spamfilter_users_list');
-
- $items[] = array( 'title' => 'Policy',
- 'target' => 'content',
- 'link' => 'mail/spamfilter_policy_list.php',
- 'html_id' => 'spamfilter_policy_list');
-
-// $items[] = array( 'title' => 'Server Settings',
-// 'target' => 'content',
-// 'link' => 'mail/spamfilter_config_list.php');
-}
-
-if(count($items))
-{
- $module['nav'][] = array( 'title' => 'Spamfilter',
- 'open' => 1,
- 'items' => $items);
-}
-
-//**** Fetchmail menu
-$items = array();
-
-if($app->auth->get_client_limit($userid,'fetchmail') != 0)
-{
- $items[] = array( 'title' => 'Fetchmail',
- 'target' => 'content',
- 'link' => 'mail/mail_get_list.php',
- 'html_id' => 'mail_get_list');
-
- $module['nav'][] = array( 'title' => 'Fetchmail',
- 'open' => 1,
- 'items' => $items);
-}
-
-
-
-//**** Statistics menu
-$items = array();
-
-$items[] = array( 'title' => 'Mailbox traffic',
- 'target' => 'content',
- 'link' => 'mail/mail_user_stats.php',
- 'html_id' => 'mail_user_stats');
-
-
-
-$module['nav'][] = array( 'title' => 'Statistics',
- 'open' => 1,
- 'items' => $items);
-
-
-//**** Global filters menu
-$items = array();
-if($_SESSION['s']['user']['typ'] == 'admin') {
-
- $items[] = array( 'title' => 'Postfix Whitelist',
- 'target' => 'content',
- 'link' => 'mail/mail_whitelist_list.php',
- 'html_id' => 'mail_whitelist_list');
-
-
- $items[] = array( 'title' => 'Postfix Blacklist',
- 'target' => 'content',
- 'link' => 'mail/mail_blacklist_list.php',
- 'html_id' => 'mail_blacklist_list');
-
-
- $items[] = array( 'title' => 'Content Filter',
- 'target' => 'content',
- 'link' => 'mail/mail_content_filter_list.php',
- 'html_id' => 'mail_content_filter_list');
-
-
- $items[] = array( 'title' => 'Relay Recipients',
- 'target' => 'content',
- 'link' => 'mail/mail_relay_recipient_list.php',
- 'html_id' => 'mail_relay_recipient_list');
-
-
- $module['nav'][] = array( 'title' => 'Global Filters',
- 'open' => 1,
- 'items' => $items);
-}
+<?php
+
+$userid=$app->auth->get_user_id();
+
+$module['name'] = 'mail';
+$module['title'] = 'top_menu_email';
+$module['template'] = 'module.tpl.htm';
+$module['startpage'] = 'mail/mail_domain_list.php';
+$module['tab_width'] = '';
+
+
+//**** Email accounts menu
+$items = array();
+
+if($app->auth->get_client_limit($userid,'maildomain') != 0)
+{
+ $items[] = array( 'title' => 'Domain',
+ 'target' => 'content',
+ 'link' => 'mail/mail_domain_list.php',
+ 'html_id' => 'mail_domain_list');
+}
+
+if($app->auth->get_client_limit($userid,'mailaliasdomain') != 0)
+{
+ $items[] = array( 'title' => 'Domain Alias',
+ 'target' => 'content',
+ 'link' => 'mail/mail_aliasdomain_list.php',
+ 'html_id' => 'mail_aliasdomain_list');
+}
+
+if($app->auth->get_client_limit($userid,'mailbox') != 0)
+{
+ $items[] = array( 'title' => 'Email Mailbox',
+ 'target' => 'content',
+ 'link' => 'mail/mail_user_list.php',
+ 'html_id' => 'mail_user_list');
+}
+
+if($app->auth->get_client_limit($userid,'mailalias') != 0)
+{
+ $items[] = array( 'title' => 'Email Alias',
+ 'target' => 'content',
+ 'link' => 'mail/mail_alias_list.php',
+ 'html_id' => 'mail_alias_list');
+}
+
+if($app->auth->get_client_limit($userid,'mailforward') != 0)
+{
+ $items[] = array( 'title' => 'Email Forward',
+ 'target' => 'content',
+ 'link' => 'mail/mail_forward_list.php',
+ 'html_id' => 'mail_forward_list');
+}
+
+if($app->auth->get_client_limit($userid,'mailcatchall') != 0)
+{
+ $items[] = array( 'title' => 'Email Catchall',
+ 'target' => 'content',
+ 'link' => 'mail/mail_domain_catchall_list.php',
+ 'html_id' => 'mail_domain_catchall_list');
+}
+
+if($app->auth->get_client_limit($userid,'mailrouting') != 0)
+{
+ $items[] = array( 'title' => 'Email Routing',
+ 'target' => 'content',
+ 'link' => 'mail/mail_transport_list.php',
+ 'html_id' => 'mail_transport_list');
+}
+
+if(count($items))
+{
+ $module['nav'][] = array( 'title' => 'Email Accounts',
+ 'open' => 1,
+ 'items' => $items);
+}
+
+//**** Mailinglist menu
+$items = array();
+
+if($app->auth->get_client_limit($userid,'mailmailinglist') != 0)
+{
+ $items[] = array( 'title' => 'Mailing List',
+ 'target' => 'content',
+ 'link' => 'mail/mail_mailinglist_list.php',
+ 'html_id' => 'mail_mailinglist_list');
+}
+
+if(count($items))
+{
+ $module['nav'][] = array( 'title' => 'Mailing List',
+ 'open' => 1,
+ 'items' => $items);
+}
+
+//**** Spamfilter menu
+$items = array();
+
+if($app->auth->get_client_limit($userid,'spamfilter_wblist') != 0)
+{
+ $items[] = array( 'title' => 'Whitelist',
+ 'target' => 'content',
+ 'link' => 'mail/spamfilter_whitelist_list.php',
+ 'html_id' => 'spamfilter_whitelist_list');
+
+ $items[] = array( 'title' => 'Blacklist',
+ 'target' => 'content',
+ 'link' => 'mail/spamfilter_blacklist_list.php',
+ 'html_id' => 'spamfilter_blacklist_list');
+}
+
+if($app->auth->is_admin()) {
+
+ $items[] = array( 'title' => 'User / Domain',
+ 'target' => 'content',
+ 'link' => 'mail/spamfilter_users_list.php',
+ 'html_id' => 'spamfilter_users_list');
+
+ $items[] = array( 'title' => 'Policy',
+ 'target' => 'content',
+ 'link' => 'mail/spamfilter_policy_list.php',
+ 'html_id' => 'spamfilter_policy_list');
+
+// $items[] = array( 'title' => 'Server Settings',
+// 'target' => 'content',
+// 'link' => 'mail/spamfilter_config_list.php');
+}
+
+if(count($items))
+{
+ $module['nav'][] = array( 'title' => 'Spamfilter',
+ 'open' => 1,
+ 'items' => $items);
+}
+
+//**** Fetchmail menu
+$items = array();
+
+if($app->auth->get_client_limit($userid,'fetchmail') != 0)
+{
+ $items[] = array( 'title' => 'Fetchmail',
+ 'target' => 'content',
+ 'link' => 'mail/mail_get_list.php',
+ 'html_id' => 'mail_get_list');
+
+ $module['nav'][] = array( 'title' => 'Fetchmail',
+ 'open' => 1,
+ 'items' => $items);
+}
+
+
+
+//**** Statistics menu
+$items = array();
+
+$items[] = array( 'title' => 'Mailbox traffic',
+ 'target' => 'content',
+ 'link' => 'mail/mail_user_stats.php',
+ 'html_id' => 'mail_user_stats');
+
+
+
+$module['nav'][] = array( 'title' => 'Statistics',
+ 'open' => 1,
+ 'items' => $items);
+
+
+//**** Global filters menu
+$items = array();
+if($_SESSION['s']['user']['typ'] == 'admin') {
+
+ $items[] = array( 'title' => 'Postfix Whitelist',
+ 'target' => 'content',
+ 'link' => 'mail/mail_whitelist_list.php',
+ 'html_id' => 'mail_whitelist_list');
+
+
+ $items[] = array( 'title' => 'Postfix Blacklist',
+ 'target' => 'content',
+ 'link' => 'mail/mail_blacklist_list.php',
+ 'html_id' => 'mail_blacklist_list');
+
+
+ $items[] = array( 'title' => 'Content Filter',
+ 'target' => 'content',
+ 'link' => 'mail/mail_content_filter_list.php',
+ 'html_id' => 'mail_content_filter_list');
+
+
+ $items[] = array( 'title' => 'Relay Recipients',
+ 'target' => 'content',
+ 'link' => 'mail/mail_relay_recipient_list.php',
+ 'html_id' => 'mail_relay_recipient_list');
+
+
+ $module['nav'][] = array( 'title' => 'Global Filters',
+ 'open' => 1,
+ 'items' => $items);
+}
?>
\ No newline at end of file
diff --git a/interface/web/mail/list/mail_mailinglist.list.php b/interface/web/mail/list/mail_mailinglist.list.php
index 27842a5..4070b22 100644
--- a/interface/web/mail/list/mail_mailinglist.list.php
+++ b/interface/web/mail/list/mail_mailinglist.list.php
@@ -1,67 +1,67 @@
-<?php
-
-/*
- Datatypes:
- - INTEGER
- - DOUBLE
- - CURRENCY
- - VARCHAR
- - TEXT
- - DATE
-*/
-
-
-
-// Name of the list
-$liste["name"] = "mail_mailinglist";
-
-// Database table
-$liste["table"] = "mail_mailinglist";
-
-// Index index field of the database table
-$liste["table_idx"] = "mailinglist_id";
-
-// Search Field Prefix
-$liste["search_prefix"] = "search_";
-
-// Records per page
-$liste["records_per_page"] = 15;
-
-// Script File of the list
-$liste["file"] = "mail_mailinglist_list.php";
-
-// Script file of the edit form
-$liste["edit_file"] = "mail_mailinglist_edit.php";
-
-// Script File of the delete script
-$liste["delete_file"] = "mail_mailinglist_del.php";
-
-// Paging Template
-$liste["paging_tpl"] = "templates/paging.tpl.htm";
-
-// Enable auth
-$liste["auth"] = "yes";
-
-
-/*****************************************************
-* Suchfelder
-*****************************************************/
-$liste["item"][] = array( 'field' => "listname",
- 'datatype' => "VARCHAR",
- 'formtype' => "TEXT",
- 'op' => "like",
- 'prefix' => "%",
- 'suffix' => "%",
- 'width' => "",
- 'value' => "");
-
-$liste["item"][] = array( 'field' => "domain",
- 'datatype' => "VARCHAR",
- 'formtype' => "TEXT",
- 'op' => "like",
- 'prefix' => "%",
- 'suffix' => "%",
- 'width' => "",
- 'value' => "");
-
+<?php
+
+/*
+ Datatypes:
+ - INTEGER
+ - DOUBLE
+ - CURRENCY
+ - VARCHAR
+ - TEXT
+ - DATE
+*/
+
+
+
+// Name of the list
+$liste["name"] = "mail_mailinglist";
+
+// Database table
+$liste["table"] = "mail_mailinglist";
+
+// Index index field of the database table
+$liste["table_idx"] = "mailinglist_id";
+
+// Search Field Prefix
+$liste["search_prefix"] = "search_";
+
+// Records per page
+$liste["records_per_page"] = 15;
+
+// Script File of the list
+$liste["file"] = "mail_mailinglist_list.php";
+
+// Script file of the edit form
+$liste["edit_file"] = "mail_mailinglist_edit.php";
+
+// Script File of the delete script
+$liste["delete_file"] = "mail_mailinglist_del.php";
+
+// Paging Template
+$liste["paging_tpl"] = "templates/paging.tpl.htm";
+
+// Enable auth
+$liste["auth"] = "yes";
+
+
+/*****************************************************
+* Suchfelder
+*****************************************************/
+$liste["item"][] = array( 'field' => "listname",
+ 'datatype' => "VARCHAR",
+ 'formtype' => "TEXT",
+ 'op' => "like",
+ 'prefix' => "%",
+ 'suffix' => "%",
+ 'width' => "",
+ 'value' => "");
+
+$liste["item"][] = array( 'field' => "domain",
+ 'datatype' => "VARCHAR",
+ 'formtype' => "TEXT",
+ 'op' => "like",
+ 'prefix' => "%",
+ 'suffix' => "%",
+ 'width' => "",
+ 'value' => "");
+
?>
\ No newline at end of file
diff --git a/interface/web/mail/mail_domain_del.php b/interface/web/mail/mail_domain_del.php
index 456a733..d686341 100644
--- a/interface/web/mail/mail_domain_del.php
+++ b/interface/web/mail/mail_domain_del.php
@@ -1,98 +1,98 @@
-<?php
-
-/*
-Copyright (c) 2005, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/mail_domain.list.php";
-$tform_def_file = "form/mail_domain.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('mail');
-
-// Loading classes
-$app->uses('tpl,tform,tform_actions');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-
- function onBeforeDelete() {
- global $app; $conf;
-
- $domain = $this->dataRecord['domain'];
-
- // Before we delete the email domain,
- // we will delete all depending records.
-
- // Delete all forwardings where the osurce or destination belongs to this domain
- $records = $app->db->queryAllRecords("SELECT forwarding_id as id FROM mail_forwarding WHERE source like '%@".$app->db->quote($domain)."' OR destination like '%@".$app->db->quote($domain)."'");
- foreach($records as $rec) {
- $app->db->datalogDelete('mail_forwarding','forwarding_id',$rec['id']);
- }
-
- // Delete all fetchmail accounts where destination belongs to this domain
- $records = $app->db->queryAllRecords("SELECT mailget_id as id FROM mail_get WHERE destination like '%@".$app->db->quote($domain)."'");
- foreach($records as $rec) {
- $app->db->datalogDelete('mail_get','mailget_id',$rec['id']);
- }
-
- // Delete all mailboxes where destination belongs to this domain
- $records = $app->db->queryAllRecords("SELECT mailuser_id as id FROM mail_user WHERE email like '%@".$app->db->quote($domain)."'");
- foreach($records as $rec) {
- $app->db->datalogDelete('mail_user','mailuser_id',$rec['id']);
- }
-
- // Delete all spamfilters that belong to this domain
- $records = $app->db->queryAllRecords("SELECT id FROM spamfilter_users WHERE email = '@".$app->db->quote($domain)."'");
- foreach($records as $rec) {
- $app->db->datalogDelete('spamfilter_users','id',$rec['id']);
- }
-
- // Delete all mailinglists that belong to this domain
- $records = $app->db->queryAllRecords("SELECT mailinglist_id FROM mail_mailinglist WHERE domain = '".$app->db->quote($domain)."'");
- foreach($records as $rec) {
- $app->db->datalogDelete('mail_mailinglist','mailinglist_id',$rec['id']);
- }
-
- }
-}
-
-$page = new page_action;
-$page->onDelete();
-
+<?php
+
+/*
+Copyright (c) 2005, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/mail_domain.list.php";
+$tform_def_file = "form/mail_domain.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('mail');
+
+// Loading classes
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+ function onBeforeDelete() {
+ global $app; $conf;
+
+ $domain = $this->dataRecord['domain'];
+
+ // Before we delete the email domain,
+ // we will delete all depending records.
+
+ // Delete all forwardings where the osurce or destination belongs to this domain
+ $records = $app->db->queryAllRecords("SELECT forwarding_id as id FROM mail_forwarding WHERE source like '%@".$app->db->quote($domain)."' OR destination like '%@".$app->db->quote($domain)."'");
+ foreach($records as $rec) {
+ $app->db->datalogDelete('mail_forwarding','forwarding_id',$rec['id']);
+ }
+
+ // Delete all fetchmail accounts where destination belongs to this domain
+ $records = $app->db->queryAllRecords("SELECT mailget_id as id FROM mail_get WHERE destination like '%@".$app->db->quote($domain)."'");
+ foreach($records as $rec) {
+ $app->db->datalogDelete('mail_get','mailget_id',$rec['id']);
+ }
+
+ // Delete all mailboxes where destination belongs to this domain
+ $records = $app->db->queryAllRecords("SELECT mailuser_id as id FROM mail_user WHERE email like '%@".$app->db->quote($domain)."'");
+ foreach($records as $rec) {
+ $app->db->datalogDelete('mail_user','mailuser_id',$rec['id']);
+ }
+
+ // Delete all spamfilters that belong to this domain
+ $records = $app->db->queryAllRecords("SELECT id FROM spamfilter_users WHERE email = '@".$app->db->quote($domain)."'");
+ foreach($records as $rec) {
+ $app->db->datalogDelete('spamfilter_users','id',$rec['id']);
+ }
+
+ // Delete all mailinglists that belong to this domain
+ $records = $app->db->queryAllRecords("SELECT mailinglist_id FROM mail_mailinglist WHERE domain = '".$app->db->quote($domain)."'");
+ foreach($records as $rec) {
+ $app->db->datalogDelete('mail_mailinglist','mailinglist_id',$rec['id']);
+ }
+
+ }
+}
+
+$page = new page_action;
+$page->onDelete();
+
?>
\ No newline at end of file
diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php
index c323d3c..06ce64b 100644
--- a/interface/web/mail/mail_domain_edit.php
+++ b/interface/web/mail/mail_domain_edit.php
@@ -1,370 +1,370 @@
-<?php
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$tform_def_file = "form/mail_domain.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('mail');
-
-// Loading classes
-$app->uses('tpl,tform,tform_actions');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-
- function onShowNew() {
- global $app, $conf;
-
- // we will check only users, not admins
- if($_SESSION["s"]["user"]["typ"] == 'user') {
- if(!$app->tform->checkClientLimit('limit_maildomain')) {
- $app->error($app->tform->wordbook["limit_maildomain_txt"]);
- }
- if(!$app->tform->checkResellerLimit('limit_maildomain')) {
- $app->error('Reseller: '.$app->tform->wordbook["limit_maildomain_txt"]);
- }
- }
-
- parent::onShowNew();
- }
-
- function onShowEnd() {
- global $app, $conf;
-
- if($_SESSION["s"]["user"]["typ"] == 'admin') {
- // Getting Clients of the user
- if($_SESSION["s"]["user"]["typ"] == 'admin') {
- $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name";
- } else {
- $client_group_id = $_SESSION["s"]["user"]["default_group"];
- $sql = "SELECT client.client_id, limit_web_domain, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id";
- }
- $clients = $app->db->queryAllRecords($sql);
- $client_select = '';
- if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
- $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':'';
- $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
- }
- }
- $app->tpl->setVar("client_group_id",$client_select);
-
- } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
-
- // Get the limits of the client
- $client_group_id = $_SESSION["s"]["user"]["default_group"];
- $client = $app->db->queryOneRecord("SELECT client.client_id, contact_name, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id order by contact_name");
-
- // Set the mailserver to the default server of the client
- $tmp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = $client[default_mailserver]");
- $app->tpl->setVar("server_id","<option value='$client[default_mailserver]'>$tmp[server_name]</option>");
- unset($tmp);
-
- // Fill the client select field
- $sql = "SELECT groupid, name FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id'];
- $clients = $app->db->queryAllRecords($sql);
- $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$client['client_id']);
- $client_select = '<option value="'.$tmp['groupid'].'">'.$client['contact_name'].'</option>';
- $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':'';
- $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
- }
- }
- $app->tpl->setVar("client_group_id",$client_select);
-
- }
-
- /*
- * Now we have to check, if we should use the domain-module to select the domain
- * or not
- */
- $app->uses('ini_parser,getconf');
- $settings = $app->getconf->get_global_config('domains');
- if ($settings['use_domain_module'] == 'y') {
- /*
- * The domain-module is in use.
- */
- $client_group_id = $_SESSION["s"]["user"]["default_group"];
- /*
- * The admin can select ALL domains, the user only the domains assigned to him
- */
- $sql = "SELECT domain FROM domain ";
- if ($_SESSION["s"]["user"]["typ"] != 'admin') {
- $sql .= "WHERE sys_groupid =" . $client_group_id;
- }
- $sql .= " ORDER BY domain";
- $domains = $app->db->queryAllRecords($sql);
- $domain_select = '';
- if(is_array($domains) && sizeof($domains) > 0) {
- /* We have domains in the list, so create the drop-down-list */
- foreach( $domains as $domain) {
- $domain_select .= "<option value=" . $domain['domain'] ;
- if ($domain['domain'] == $this->dataRecord["domain"]) {
- $domain_select .= " selected";
- }
- $domain_select .= ">" . $domain['domain'] . "</option>\r\n";
- }
- }
- else {
- /*
- * We have no domains in the domain-list. This means, we can not add ANY new domain.
- * To avoid, that the variable "domain_option" is empty and so the user can
- * free enter a domain, we have to create a empty option!
- */
- $domain_select .= "<option value=''></option>\r\n";
- }
- $app->tpl->setVar("domain_option",$domain_select);
- }
-
-
- // Get the spamfilter policys for the user
- $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = '@".$this->dataRecord["domain"]."'");
- $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r');
- $policys = $app->db->queryAllRecords($sql);
- $policy_select = "<option value='0'>".$app->tform->wordbook["no_policy"]."</option>";
- if(is_array($policys)) {
- foreach( $policys as $p) {
- $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':'';
- $policy_select .= "<option value='$p[id]' $selected>$p[policy_name]</option>\r\n";
- }
- }
- $app->tpl->setVar("policy",$policy_select);
- unset($policys);
- unset($policy_select);
- unset($tmp_user);
-
- if($this->id > 0) {
- //* we are editing a existing record
- $app->tpl->setVar("edit_disabled", 1);
- $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]);
- } else {
- $app->tpl->setVar("edit_disabled", 0);
- }
-
- parent::onShowEnd();
- }
-
- function onSubmit() {
- global $app, $conf;
- if($_SESSION["s"]["user"]["typ"] != 'admin') {
-
- // Get the limits of the client
- $client_group_id = $_SESSION["s"]["user"]["default_group"];
- $client = $app->db->queryOneRecord("SELECT limit_maildomain, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
-
- // When the record is updated
- if($this->id > 0) {
- // restore the server ID if the user is not admin and record is edited
- $tmp = $app->db->queryOneRecord("SELECT server_id FROM mail_domain WHERE domain_id = ".intval($this->id));
- $this->dataRecord["server_id"] = $tmp["server_id"];
- unset($tmp);
- // When the record is inserted
- } else {
- // set the server ID to the default mailserver of the client
- $this->dataRecord["server_id"] = $client["default_mailserver"];
-
- // Check if the user may add another mail_domain
- if($client["limit_maildomain"] >= 0) {
- $tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM mail_domain WHERE sys_groupid = $client_group_id");
- if($tmp["number"] >= $client["limit_maildomain"]) {
- $app->error($app->tform->wordbook["limit_maildomain_txt"]);
- }
- }
- }
-
- // Clients may not set the client_group_id, so we unset them if user is not a admin
- if(!$app->auth->has_clients($_SESSION['s']['user']['userid'])) unset($this->dataRecord["client_group_id"]);
- }
-
- //* make sure that the email domain is lowercase
- if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]);
-
-
- parent::onSubmit();
- }
-
- function onAfterInsert() {
- global $app, $conf;
-
- // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
- // also make sure that the user can not delete domain created by a admin
- if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
- $client_group_id = intval($this->dataRecord["client_group_id"]);
- $app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id);
- }
- if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
- $client_group_id = intval($this->dataRecord["client_group_id"]);
- $app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE domain_id = ".$this->id);
- }
-
- // Spamfilter policy
- $policy_id = intval($this->dataRecord["policy"]);
- if($policy_id > 0) {
- $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".mysql_real_escape_string($this->dataRecord["domain"])."'");
- if($tmp_user["id"] > 0) {
- // There is already a record that we will update
- $app->db->datalogUpdate('spamfilter_users', "policy_id = $ploicy_id", 'id', $tmp_user["id"]);
- } else {
- $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ".$this->id);
- // We create a new record
- $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `priority`, `policy_id`, `email`, `fullname`, `local`)
- VALUES (".$_SESSION["s"]["user"]["userid"].", ".$tmp_domain["sys_groupid"].", 'riud', 'riud', '', ".$this->dataRecord["server_id"].", 5, ".$policy_id.", '@".mysql_real_escape_string($this->dataRecord["domain"])."', '@".mysql_real_escape_string($this->dataRecord["domain"])."', 'Y')";
- $app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
- unset($tmp_domain);
- }
- } // endif spamfilter policy
- }
-
- function onBeforeUpdate() {
- global $app, $conf;
-
- //* Check if the server has been changed
- // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway
- if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
- $rec = $app->db->queryOneRecord("SELECT server_id, domain from mail_domain WHERE domain_id = ".$this->id);
- if($rec['server_id'] != $this->dataRecord["server_id"]) {
- //* Add a error message and switch back to old server
- $app->tform->errorMessage .= $app->lng('The Server can not be changed.');
- $this->dataRecord["server_id"] = $rec['server_id'];
- }
- unset($rec);
- //* If the user is neither admin nor reseller
- } else {
- //* We do not allow users to change a domain which has been created by the admin
- $rec = $app->db->queryOneRecord("SELECT domain from mail_domain WHERE domain_id = ".$this->id);
- if($rec['domain'] != $this->dataRecord["domain"] && $app->tform->checkPerm($this->id,'u')) {
- //* Add a error message and switch back to old server
- $app->tform->errorMessage .= $app->lng('The Domain can not be changed. Please ask your Administrator if you want to change the domain name.');
- $this->dataRecord["domain"] = $rec['domain'];
- }
- unset($rec);
- }
- }
-
-
-
- function onAfterUpdate() {
- global $app, $conf;
-
- // make sure that the record belongs to the clinet group and not the admin group when admin inserts it
- // also make sure that the user can not delete domain created by a admin
- if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
- $client_group_id = intval($this->dataRecord["client_group_id"]);
- $app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id);
- }
- if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
- $client_group_id = intval($this->dataRecord["client_group_id"]);
- $app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE domain_id = ".$this->id);
- }
-
- // Spamfilter policy
- $policy_id = intval($this->dataRecord["policy"]);
- $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".mysql_real_escape_string($this->dataRecord["domain"])."'");
- if($policy_id > 0) {
- if($tmp_user["id"] > 0) {
- // There is already a record that we will update
- $app->db->datalogUpdate('spamfilter_users', "policy_id = $policy_id", 'id', $tmp_user["id"]);
- } else {
- $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ".$this->id);
- // We create a new record
- $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `priority`, `policy_id`, `email`, `fullname`, `local`)
- VALUES (".$_SESSION["s"]["user"]["userid"].", ".$tmp_domain["sys_groupid"].", 'riud', 'riud', '', ".$this->dataRecord["server_id"].", 5, ".$policy_id.", '@".mysql_real_escape_string($this->dataRecord["domain"])."', '@".mysql_real_escape_string($this->dataRecord["domain"])."', 'Y')";
- $app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
- unset($tmp_domain);
- }
- } else {
- if($tmp_user["id"] > 0) {
- // There is already a record but the user shall have no policy, so we delete it
- $app->db->datalogDelete('spamfilter_users', 'id', $tmp_user["id"]);
- }
- } // endif spamfilter policy
- //** If the domain name or owner has been changed, change the domain and owner in all mailbox records
- if($this->oldDataRecord['domain'] != $this->dataRecord['domain'] || (isset($this->dataRecord['client_group_id']) && $this->oldDataRecord['sys_groupid'] != $this->dataRecord['client_group_id'])) {
- $app->uses('getconf');
- $mail_config = $app->getconf->get_server_config($this->dataRecord["server_id"],'mail');
-
- //* Update the mailboxes
- $mailusers = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE email like '%@".mysql_real_escape_string($this->oldDataRecord['domain'])."'");
- $sys_groupid = (isset($this->dataRecord['client_group_id']))?$this->dataRecord['client_group_id']:$this->oldDataRecord['sys_groupid'];
- if(is_array($mailusers)) {
- foreach($mailusers as $rec) {
- // setting Maildir, Homedir, UID and GID
- $mail_parts = explode("@",$rec['email']);
- $maildir = str_replace("[domain]",$this->dataRecord['domain'],$mail_config["maildir_path"]);
- $maildir = str_replace("[localpart]",$mail_parts[0],$maildir);
- $maildir = mysql_real_escape_string($maildir);
- $email = mysql_real_escape_string($mail_parts[0].'@'.$this->dataRecord['domain']);
- $app->db->datalogUpdate('mail_user', "maildir = '$maildir', email = '$email', sys_groupid = '$sys_groupid'", 'mailuser_id', $rec['mailuser_id']);
- }
- }
-
- //* Update the aliases
- $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like '%@".mysql_real_escape_string($this->oldDataRecord['domain'])."' OR destination like '%@".mysql_real_escape_string($this->oldDataRecord['domain'])."'");
- if(is_array($forwardings)) {
- foreach($forwardings as $rec) {
- $destination = mysql_real_escape_string(str_replace($this->oldDataRecord['domain'],$this->dataRecord['domain'],$rec['destination']));
- $source = mysql_real_escape_string(str_replace($this->oldDataRecord['domain'],$this->dataRecord['domain'],$rec['source']));
- $app->db->datalogUpdate('mail_forwarding', "source = '$source', destination = '$destination', sys_groupid = '$sys_groupid'", 'forwarding_id', $rec['forwarding_id']);
- }
- }
-
- //* Update the mailinglist
- $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $sys_groupid WHERE domain = '".mysql_real_escape_string($this->oldDataRecord['domain'])."'");
-
- //* Delete the old spamfilter record
- $tmp = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".mysql_real_escape_string($this->oldDataRecord["domain"])."'");
- $app->db->datalogDelete('spamfilter_users', 'id', $tmp["id"]);
- unset($tmp);
-
- } // end if domain name changed
-
- }
-
-}
-
-$page = new page_action;
-$page->onLoad();
-
+<?php
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$tform_def_file = "form/mail_domain.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('mail');
+
+// Loading classes
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+ function onShowNew() {
+ global $app, $conf;
+
+ // we will check only users, not admins
+ if($_SESSION["s"]["user"]["typ"] == 'user') {
+ if(!$app->tform->checkClientLimit('limit_maildomain')) {
+ $app->error($app->tform->wordbook["limit_maildomain_txt"]);
+ }
+ if(!$app->tform->checkResellerLimit('limit_maildomain')) {
+ $app->error('Reseller: '.$app->tform->wordbook["limit_maildomain_txt"]);
+ }
+ }
+
+ parent::onShowNew();
+ }
+
+ function onShowEnd() {
+ global $app, $conf;
+
+ if($_SESSION["s"]["user"]["typ"] == 'admin') {
+ // Getting Clients of the user
+ if($_SESSION["s"]["user"]["typ"] == 'admin') {
+ $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name";
+ } else {
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ $sql = "SELECT client.client_id, limit_web_domain, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id";
+ }
+ $clients = $app->db->queryAllRecords($sql);
+ $client_select = '';
+ if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
+ $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':'';
+ $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
+ }
+ }
+ $app->tpl->setVar("client_group_id",$client_select);
+
+ } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+
+ // Get the limits of the client
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ $client = $app->db->queryOneRecord("SELECT client.client_id, contact_name, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id order by contact_name");
+
+ // Set the mailserver to the default server of the client
+ $tmp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = $client[default_mailserver]");
+ $app->tpl->setVar("server_id","<option value='$client[default_mailserver]'>$tmp[server_name]</option>");
+ unset($tmp);
+
+ // Fill the client select field
+ $sql = "SELECT groupid, name FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id'];
+ $clients = $app->db->queryAllRecords($sql);
+ $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$client['client_id']);
+ $client_select = '<option value="'.$tmp['groupid'].'">'.$client['contact_name'].'</option>';
+ $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':'';
+ $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
+ }
+ }
+ $app->tpl->setVar("client_group_id",$client_select);
+
+ }
+
+ /*
+ * Now we have to check, if we should use the domain-module to select the domain
+ * or not
+ */
+ $app->uses('ini_parser,getconf');
+ $settings = $app->getconf->get_global_config('domains');
+ if ($settings['use_domain_module'] == 'y') {
+ /*
+ * The domain-module is in use.
+ */
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ /*
+ * The admin can select ALL domains, the user only the domains assigned to him
+ */
+ $sql = "SELECT domain FROM domain ";
+ if ($_SESSION["s"]["user"]["typ"] != 'admin') {
+ $sql .= "WHERE sys_groupid =" . $client_group_id;
+ }
+ $sql .= " ORDER BY domain";
+ $domains = $app->db->queryAllRecords($sql);
+ $domain_select = '';
+ if(is_array($domains) && sizeof($domains) > 0) {
+ /* We have domains in the list, so create the drop-down-list */
+ foreach( $domains as $domain) {
+ $domain_select .= "<option value=" . $domain['domain'] ;
+ if ($domain['domain'] == $this->dataRecord["domain"]) {
+ $domain_select .= " selected";
+ }
+ $domain_select .= ">" . $domain['domain'] . "</option>\r\n";
+ }
+ }
+ else {
+ /*
+ * We have no domains in the domain-list. This means, we can not add ANY new domain.
+ * To avoid, that the variable "domain_option" is empty and so the user can
+ * free enter a domain, we have to create a empty option!
+ */
+ $domain_select .= "<option value=''></option>\r\n";
+ }
+ $app->tpl->setVar("domain_option",$domain_select);
+ }
+
+
+ // Get the spamfilter policys for the user
+ $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = '@".$this->dataRecord["domain"]."'");
+ $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r');
+ $policys = $app->db->queryAllRecords($sql);
+ $policy_select = "<option value='0'>".$app->tform->wordbook["no_policy"]."</option>";
+ if(is_array($policys)) {
+ foreach( $policys as $p) {
+ $selected = ($p["id"] == $tmp_user["policy_id"])?'SELECTED':'';
+ $policy_select .= "<option value='$p[id]' $selected>$p[policy_name]</option>\r\n";
+ }
+ }
+ $app->tpl->setVar("policy",$policy_select);
+ unset($policys);
+ unset($policy_select);
+ unset($tmp_user);
+
+ if($this->id > 0) {
+ //* we are editing a existing record
+ $app->tpl->setVar("edit_disabled", 1);
+ $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]);
+ } else {
+ $app->tpl->setVar("edit_disabled", 0);
+ }
+
+ parent::onShowEnd();
+ }
+
+ function onSubmit() {
+ global $app, $conf;
+ if($_SESSION["s"]["user"]["typ"] != 'admin') {
+
+ // Get the limits of the client
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ $client = $app->db->queryOneRecord("SELECT limit_maildomain, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+
+ // When the record is updated
+ if($this->id > 0) {
+ // restore the server ID if the user is not admin and record is edited
+ $tmp = $app->db->queryOneRecord("SELECT server_id FROM mail_domain WHERE domain_id = ".intval($this->id));
+ $this->dataRecord["server_id"] = $tmp["server_id"];
+ unset($tmp);
+ // When the record is inserted
+ } else {
+ // set the server ID to the default mailserver of the client
+ $this->dataRecord["server_id"] = $client["default_mailserver"];
+
+ // Check if the user may add another mail_domain
+ if($client["limit_maildomain"] >= 0) {
+ $tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM mail_domain WHERE sys_groupid = $client_group_id");
+ if($tmp["number"] >= $client["limit_maildomain"]) {
+ $app->error($app->tform->wordbook["limit_maildomain_txt"]);
+ }
+ }
+ }
+
+ // Clients may not set the client_group_id, so we unset them if user is not a admin
+ if(!$app->auth->has_clients($_SESSION['s']['user']['userid'])) unset($this->dataRecord["client_group_id"]);
+ }
+
+ //* make sure that the email domain is lowercase
+ if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]);
+
+
+ parent::onSubmit();
+ }
+
+ function onAfterInsert() {
+ global $app, $conf;
+
+ // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
+ // also make sure that the user can not delete domain created by a admin
+ if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
+ $client_group_id = intval($this->dataRecord["client_group_id"]);
+ $app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id);
+ }
+ if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
+ $client_group_id = intval($this->dataRecord["client_group_id"]);
+ $app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE domain_id = ".$this->id);
+ }
+
+ // Spamfilter policy
+ $policy_id = intval($this->dataRecord["policy"]);
+ if($policy_id > 0) {
+ $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".mysql_real_escape_string($this->dataRecord["domain"])."'");
+ if($tmp_user["id"] > 0) {
+ // There is already a record that we will update
+ $app->db->datalogUpdate('spamfilter_users', "policy_id = $ploicy_id", 'id', $tmp_user["id"]);
+ } else {
+ $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ".$this->id);
+ // We create a new record
+ $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `priority`, `policy_id`, `email`, `fullname`, `local`)
+ VALUES (".$_SESSION["s"]["user"]["userid"].", ".$tmp_domain["sys_groupid"].", 'riud', 'riud', '', ".$this->dataRecord["server_id"].", 5, ".$policy_id.", '@".mysql_real_escape_string($this->dataRecord["domain"])."', '@".mysql_real_escape_string($this->dataRecord["domain"])."', 'Y')";
+ $app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
+ unset($tmp_domain);
+ }
+ } // endif spamfilter policy
+ }
+
+ function onBeforeUpdate() {
+ global $app, $conf;
+
+ //* Check if the server has been changed
+ // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway
+ if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+ $rec = $app->db->queryOneRecord("SELECT server_id, domain from mail_domain WHERE domain_id = ".$this->id);
+ if($rec['server_id'] != $this->dataRecord["server_id"]) {
+ //* Add a error message and switch back to old server
+ $app->tform->errorMessage .= $app->lng('The Server can not be changed.');
+ $this->dataRecord["server_id"] = $rec['server_id'];
+ }
+ unset($rec);
+ //* If the user is neither admin nor reseller
+ } else {
+ //* We do not allow users to change a domain which has been created by the admin
+ $rec = $app->db->queryOneRecord("SELECT domain from mail_domain WHERE domain_id = ".$this->id);
+ if($rec['domain'] != $this->dataRecord["domain"] && $app->tform->checkPerm($this->id,'u')) {
+ //* Add a error message and switch back to old server
+ $app->tform->errorMessage .= $app->lng('The Domain can not be changed. Please ask your Administrator if you want to change the domain name.');
+ $this->dataRecord["domain"] = $rec['domain'];
+ }
+ unset($rec);
+ }
+ }
+
+
+
+ function onAfterUpdate() {
+ global $app, $conf;
+
+ // make sure that the record belongs to the clinet group and not the admin group when admin inserts it
+ // also make sure that the user can not delete domain created by a admin
+ if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
+ $client_group_id = intval($this->dataRecord["client_group_id"]);
+ $app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id);
+ }
+ if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
+ $client_group_id = intval($this->dataRecord["client_group_id"]);
+ $app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE domain_id = ".$this->id);
+ }
+
+ // Spamfilter policy
+ $policy_id = intval($this->dataRecord["policy"]);
+ $tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".mysql_real_escape_string($this->dataRecord["domain"])."'");
+ if($policy_id > 0) {
+ if($tmp_user["id"] > 0) {
+ // There is already a record that we will update
+ $app->db->datalogUpdate('spamfilter_users', "policy_id = $policy_id", 'id', $tmp_user["id"]);
+ } else {
+ $tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ".$this->id);
+ // We create a new record
+ $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `priority`, `policy_id`, `email`, `fullname`, `local`)
+ VALUES (".$_SESSION["s"]["user"]["userid"].", ".$tmp_domain["sys_groupid"].", 'riud', 'riud', '', ".$this->dataRecord["server_id"].", 5, ".$policy_id.", '@".mysql_real_escape_string($this->dataRecord["domain"])."', '@".mysql_real_escape_string($this->dataRecord["domain"])."', 'Y')";
+ $app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
+ unset($tmp_domain);
+ }
+ } else {
+ if($tmp_user["id"] > 0) {
+ // There is already a record but the user shall have no policy, so we delete it
+ $app->db->datalogDelete('spamfilter_users', 'id', $tmp_user["id"]);
+ }
+ } // endif spamfilter policy
+ //** If the domain name or owner has been changed, change the domain and owner in all mailbox records
+ if($this->oldDataRecord['domain'] != $this->dataRecord['domain'] || (isset($this->dataRecord['client_group_id']) && $this->oldDataRecord['sys_groupid'] != $this->dataRecord['client_group_id'])) {
+ $app->uses('getconf');
+ $mail_config = $app->getconf->get_server_config($this->dataRecord["server_id"],'mail');
+
+ //* Update the mailboxes
+ $mailusers = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE email like '%@".mysql_real_escape_string($this->oldDataRecord['domain'])."'");
+ $sys_groupid = (isset($this->dataRecord['client_group_id']))?$this->dataRecord['client_group_id']:$this->oldDataRecord['sys_groupid'];
+ if(is_array($mailusers)) {
+ foreach($mailusers as $rec) {
+ // setting Maildir, Homedir, UID and GID
+ $mail_parts = explode("@",$rec['email']);
+ $maildir = str_replace("[domain]",$this->dataRecord['domain'],$mail_config["maildir_path"]);
+ $maildir = str_replace("[localpart]",$mail_parts[0],$maildir);
+ $maildir = mysql_real_escape_string($maildir);
+ $email = mysql_real_escape_string($mail_parts[0].'@'.$this->dataRecord['domain']);
+ $app->db->datalogUpdate('mail_user', "maildir = '$maildir', email = '$email', sys_groupid = '$sys_groupid'", 'mailuser_id', $rec['mailuser_id']);
+ }
+ }
+
+ //* Update the aliases
+ $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like '%@".mysql_real_escape_string($this->oldDataRecord['domain'])."' OR destination like '%@".mysql_real_escape_string($this->oldDataRecord['domain'])."'");
+ if(is_array($forwardings)) {
+ foreach($forwardings as $rec) {
+ $destination = mysql_real_escape_string(str_replace($this->oldDataRecord['domain'],$this->dataRecord['domain'],$rec['destination']));
+ $source = mysql_real_escape_string(str_replace($this->oldDataRecord['domain'],$this->dataRecord['domain'],$rec['source']));
+ $app->db->datalogUpdate('mail_forwarding', "source = '$source', destination = '$destination', sys_groupid = '$sys_groupid'", 'forwarding_id', $rec['forwarding_id']);
+ }
+ }
+
+ //* Update the mailinglist
+ $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $sys_groupid WHERE domain = '".mysql_real_escape_string($this->oldDataRecord['domain'])."'");
+
+ //* Delete the old spamfilter record
+ $tmp = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".mysql_real_escape_string($this->oldDataRecord["domain"])."'");
+ $app->db->datalogDelete('spamfilter_users', 'id', $tmp["id"]);
+ unset($tmp);
+
+ } // end if domain name changed
+
+ }
+
+}
+
+$page = new page_action;
+$page->onLoad();
+
?>
\ No newline at end of file
diff --git a/interface/web/mail/mail_mailinglist_del.php b/interface/web/mail/mail_mailinglist_del.php
index a0f0a8f..1622aef 100644
--- a/interface/web/mail/mail_mailinglist_del.php
+++ b/interface/web/mail/mail_mailinglist_del.php
@@ -1,58 +1,58 @@
-<?php
-
-/*
-Copyright (c) 2005, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/mail_mailinglist.list.php";
-$tform_def_file = "form/mail_mailinglist.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('mail');
-
-// Loading classes
-$app->uses('tpl,tform,tform_actions');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-}
-
-$page = new page_action;
-$page->onDelete();
-
+<?php
+
+/*
+Copyright (c) 2005, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/mail_mailinglist.list.php";
+$tform_def_file = "form/mail_mailinglist.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('mail');
+
+// Loading classes
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+}
+
+$page = new page_action;
+$page->onDelete();
+
?>
\ No newline at end of file
diff --git a/interface/web/mail/mail_mailinglist_edit.php b/interface/web/mail/mail_mailinglist_edit.php
index 9729757..81e518f 100644
--- a/interface/web/mail/mail_mailinglist_edit.php
+++ b/interface/web/mail/mail_mailinglist_edit.php
@@ -1,256 +1,256 @@
-<?php
-/*
-Copyright (c) 2005 - 2009, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$tform_def_file = "form/mail_mailinglist.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('mail');
-
-// Loading classes
-$app->uses('tpl,tform,tform_actions');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-
-
- function onShowNew() {
- global $app, $conf;
-
- // we will check only users, not admins
- if($_SESSION["s"]["user"]["typ"] == 'user') {
- if(!$app->tform->checkClientLimit('limit_mailmailinglist')) {
- $app->error($app->tform->wordbook["limit_mailmailinglist_txt"]);
- }
- if(!$app->tform->checkResellerLimit('limit_mailmailinglist')) {
- $app->error('Reseller: '.$app->tform->wordbook["limit_mailmailinglist_txt"]);
- }
- }
-
- parent::onShowNew();
- }
-
- function onShowEnd() {
- global $app, $conf;
-
- if($_SESSION["s"]["user"]["typ"] == 'admin') {
- // Getting Clients of the user
- if($_SESSION["s"]["user"]["typ"] == 'admin') {
- $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name";
- } else {
- $client_group_id = $_SESSION["s"]["user"]["default_group"];
- $sql = "SELECT client.client_id, limit_web_domain, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id";
- }
- $clients = $app->db->queryAllRecords($sql);
- $client_select = '';
- if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
- $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':'';
- $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
- }
- }
- $app->tpl->setVar("client_group_id",$client_select);
-
- } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
-
- // Get the limits of the client
- $client_group_id = $_SESSION["s"]["user"]["default_group"];
- $client = $app->db->queryOneRecord("SELECT client.client_id, contact_name, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id order by contact_name");
-
- // Fill the client select field
- $sql = "SELECT groupid, name FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id'];
- $clients = $app->db->queryAllRecords($sql);
- $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$client['client_id']);
- $client_select = '<option value="'.$tmp['groupid'].'">'.$client['contact_name'].'</option>';
- $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':'';
- $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
- }
- }
- $app->tpl->setVar("client_group_id",$client_select);
- }
-
- // Getting Domains of the user
- $sql = "SELECT domain FROM mail_domain WHERE ".$app->tform->getAuthSQL('r').' ORDER BY domain';
- $domains = $app->db->queryAllRecords($sql);
- $domain_select = '';
- if(is_array($domains)) {
- foreach( $domains as $domain) {
- $selected = ($domain["domain"] == $this->dataRecord["domain"])?'SELECTED':'';
- $domain_select .= "<option value='$domain[domain]' $selected>$domain[domain]</option>\r\n";
- }
- }
- $app->tpl->setVar("domain_option",$domain_select);
-
- if($this->id > 0) {
- //* we are editing a existing record
- $app->tpl->setVar("edit_disabled", 1);
- $app->tpl->setVar("listname_value", $this->dataRecord["listname"]);
- $app->tpl->setVar("domain_value", $this->dataRecord["domain"]);
- $app->tpl->setVar("email_value", $this->dataRecord["email"]);
- } else {
- $app->tpl->setVar("edit_disabled", 0);
- }
-
- parent::onShowEnd();
- }
-
- function onSubmit() {
- global $app, $conf;
-
- if($_SESSION["s"]["user"]["typ"] != 'admin') {
-
- // Get the limits of the client
- $client_group_id = $_SESSION["s"]["user"]["default_group"];
- $client = $app->db->queryOneRecord("SELECT limit_mailmailinglist, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
-
- //* Check if Domain belongs to user
- if(isset($_POST["domain"])) {
- $domain = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = '".$this->dataRecord["domain"]."' AND ".$app->tform->getAuthSQL('r'));
- if($domain["domain"] != $this->dataRecord["domain"]) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm");
- }
-
- // When the record is updated
- if($this->id == 0) {
- //Check if email is in use
- $check = $app->db->queryOneRecord("SELECT count(source) as number FROM mail_forwarding WHERE source = '".$this->dataRecord["listname"]."@".$this->dataRecord["domain"]."'");
- if($check['number'] != 0) {
- $app->error($app->tform->wordbook["email_in_use_txt"]);
- }
-
- $check = $app->db->queryOneRecord("SELECT count(email) as number FROM mail_user WHERE email = '".$this->dataRecord["listname"]."@".$this->dataRecord["domain"]."'");
- if($check['number'] != 0) {
- $app->error($app->tform->wordbook["email_in_use_txt"]);
- }
-
- $check = $app->db->queryOneRecord("SELECT count(mailinglist_id) as number FROM mail_mailinglist WHERE listname = '".$this->dataRecord["listname"]."' AND domain = '".$this->dataRecord["domain"]."'");
- if($check['number'] != 0) {
- $app->error($app->tform->wordbook["email_in_use_txt"]);
- }
-
- // Check if the user may add another mail_domain
- if($client["limit_mailmailinglist"] >= 0) {
- $tmp = $app->db->queryOneRecord("SELECT count(mailinglist_id) as number FROM mail_mailinglist WHERE sys_groupid = $client_group_id");
- if($tmp["number"] >= $client["limit_mailmailinglist"]) {
- $app->error($app->tform->wordbook["limit_mailmailinglist_txt"]);
- }
- }
- }
-
- // Clients may not set the client_group_id, so we unset them if user is not a admin
- if(!$app->auth->has_clients($_SESSION['s']['user']['userid'])) unset($this->dataRecord["client_group_id"]);
- }
-
- //* make sure that the email domain is lowercase
- if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]);
-
- parent::onSubmit();
- }
-
- function onBeforeInsert() {
- global $app, $conf;
-
- // Set the server id of the mailinglist = server ID of mail domain.
- $domain = $app->db->queryOneRecord("SELECT server_id FROM mail_domain WHERE domain = '".$this->dataRecord["domain"]."'");
- $this->dataRecord["server_id"] = $domain['server_id'];
- }
-
- function onAfterInsert() {
- global $app, $conf;
-
- // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
- // also make sure that the user can not delete domain created by a admin
- if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
- $client_group_id = intval($this->dataRecord["client_group_id"]);
- $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE mailinglist_id = ".$this->id);
- }
- if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
- $client_group_id = intval($this->dataRecord["client_group_id"]);
- $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE mailinglist_id = ".$this->id);
- }
- }
-
- function onBeforeUpdate() {
- global $app, $conf;
-
- //* Check if the server has been changed
- // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway
- if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
- $rec = $app->db->queryOneRecord("SELECT server_id, domain from mail_mailinglist WHERE mailinglist_id = ".$this->id);
- $this->dataRecord["server_id"] = $rec['server_id'];
- unset($rec);
- //* If the user is neither admin nor reseller
- } else {
- //* We do not allow users to change a domain which has been created by the admin
- $rec = $app->db->queryOneRecord("SELECT domain from mail_mailinglist WHERE mailinglist_id = ".$this->id);
- if($rec['domain'] != $this->dataRecord["domain"] && $app->tform->checkPerm($this->id,'u')) {
- //* Add a error message and switch back to old server
- $app->tform->errorMessage .= $app->lng('The Domain can not be changed. Please ask your Administrator if you want to change the domain name.');
- $this->dataRecord["domain"] = $rec['domain'];
- }
- unset($rec);
- }
- }
-
- function onAfterUpdate() {
- global $app, $conf;
-
- // make sure that the record belongs to the clinet group and not the admin group when admin inserts it
- // also make sure that the user can not delete domain created by a admin
- if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
- $client_group_id = intval($this->dataRecord["client_group_id"]);
- $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE mailinglist_id = ".$this->id);
- }
- if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
- $client_group_id = intval($this->dataRecord["client_group_id"]);
- $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE mailinglist_id = ".$this->id);
- }
- }
-
-}
-
-$app->tform_actions = new page_action;
-$app->tform_actions->onLoad();
-
-?>
+<?php
+/*
+Copyright (c) 2005 - 2009, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$tform_def_file = "form/mail_mailinglist.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('mail');
+
+// Loading classes
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+
+ function onShowNew() {
+ global $app, $conf;
+
+ // we will check only users, not admins
+ if($_SESSION["s"]["user"]["typ"] == 'user') {
+ if(!$app->tform->checkClientLimit('limit_mailmailinglist')) {
+ $app->error($app->tform->wordbook["limit_mailmailinglist_txt"]);
+ }
+ if(!$app->tform->checkResellerLimit('limit_mailmailinglist')) {
+ $app->error('Reseller: '.$app->tform->wordbook["limit_mailmailinglist_txt"]);
+ }
+ }
+
+ parent::onShowNew();
+ }
+
+ function onShowEnd() {
+ global $app, $conf;
+
+ if($_SESSION["s"]["user"]["typ"] == 'admin') {
+ // Getting Clients of the user
+ if($_SESSION["s"]["user"]["typ"] == 'admin') {
+ $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name";
+ } else {
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ $sql = "SELECT client.client_id, limit_web_domain, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id";
+ }
+ $clients = $app->db->queryAllRecords($sql);
+ $client_select = '';
+ if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
+ $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':'';
+ $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
+ }
+ }
+ $app->tpl->setVar("client_group_id",$client_select);
+
+ } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+
+ // Get the limits of the client
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ $client = $app->db->queryOneRecord("SELECT client.client_id, contact_name, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id order by contact_name");
+
+ // Fill the client select field
+ $sql = "SELECT groupid, name FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id'];
+ $clients = $app->db->queryAllRecords($sql);
+ $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$client['client_id']);
+ $client_select = '<option value="'.$tmp['groupid'].'">'.$client['contact_name'].'</option>';
+ $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':'';
+ $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
+ }
+ }
+ $app->tpl->setVar("client_group_id",$client_select);
+ }
+
+ // Getting Domains of the user
+ $sql = "SELECT domain FROM mail_domain WHERE ".$app->tform->getAuthSQL('r').' ORDER BY domain';
+ $domains = $app->db->queryAllRecords($sql);
+ $domain_select = '';
+ if(is_array($domains)) {
+ foreach( $domains as $domain) {
+ $selected = ($domain["domain"] == $this->dataRecord["domain"])?'SELECTED':'';
+ $domain_select .= "<option value='$domain[domain]' $selected>$domain[domain]</option>\r\n";
+ }
+ }
+ $app->tpl->setVar("domain_option",$domain_select);
+
+ if($this->id > 0) {
+ //* we are editing a existing record
+ $app->tpl->setVar("edit_disabled", 1);
+ $app->tpl->setVar("listname_value", $this->dataRecord["listname"]);
+ $app->tpl->setVar("domain_value", $this->dataRecord["domain"]);
+ $app->tpl->setVar("email_value", $this->dataRecord["email"]);
+ } else {
+ $app->tpl->setVar("edit_disabled", 0);
+ }
+
+ parent::onShowEnd();
+ }
+
+ function onSubmit() {
+ global $app, $conf;
+
+ if($_SESSION["s"]["user"]["typ"] != 'admin') {
+
+ // Get the limits of the client
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ $client = $app->db->queryOneRecord("SELECT limit_mailmailinglist, default_mailserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+
+ //* Check if Domain belongs to user
+ if(isset($_POST["domain"])) {
+ $domain = $app->db->queryOneRecord("SELECT domain FROM mail_domain WHERE domain = '".$this->dataRecord["domain"]."' AND ".$app->tform->getAuthSQL('r'));
+ if($domain["domain"] != $this->dataRecord["domain"]) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm");
+ }
+
+ // When the record is updated
+ if($this->id == 0) {
+ //Check if email is in use
+ $check = $app->db->queryOneRecord("SELECT count(source) as number FROM mail_forwarding WHERE source = '".$this->dataRecord["listname"]."@".$this->dataRecord["domain"]."'");
+ if($check['number'] != 0) {
+ $app->error($app->tform->wordbook["email_in_use_txt"]);
+ }
+
+ $check = $app->db->queryOneRecord("SELECT count(email) as number FROM mail_user WHERE email = '".$this->dataRecord["listname"]."@".$this->dataRecord["domain"]."'");
+ if($check['number'] != 0) {
+ $app->error($app->tform->wordbook["email_in_use_txt"]);
+ }
+
+ $check = $app->db->queryOneRecord("SELECT count(mailinglist_id) as number FROM mail_mailinglist WHERE listname = '".$this->dataRecord["listname"]."' AND domain = '".$this->dataRecord["domain"]."'");
+ if($check['number'] != 0) {
+ $app->error($app->tform->wordbook["email_in_use_txt"]);
+ }
+
+ // Check if the user may add another mail_domain
+ if($client["limit_mailmailinglist"] >= 0) {
+ $tmp = $app->db->queryOneRecord("SELECT count(mailinglist_id) as number FROM mail_mailinglist WHERE sys_groupid = $client_group_id");
+ if($tmp["number"] >= $client["limit_mailmailinglist"]) {
+ $app->error($app->tform->wordbook["limit_mailmailinglist_txt"]);
+ }
+ }
+ }
+
+ // Clients may not set the client_group_id, so we unset them if user is not a admin
+ if(!$app->auth->has_clients($_SESSION['s']['user']['userid'])) unset($this->dataRecord["client_group_id"]);
+ }
+
+ //* make sure that the email domain is lowercase
+ if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]);
+
+ parent::onSubmit();
+ }
+
+ function onBeforeInsert() {
+ global $app, $conf;
+
+ // Set the server id of the mailinglist = server ID of mail domain.
+ $domain = $app->db->queryOneRecord("SELECT server_id FROM mail_domain WHERE domain = '".$this->dataRecord["domain"]."'");
+ $this->dataRecord["server_id"] = $domain['server_id'];
+ }
+
+ function onAfterInsert() {
+ global $app, $conf;
+
+ // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
+ // also make sure that the user can not delete domain created by a admin
+ if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
+ $client_group_id = intval($this->dataRecord["client_group_id"]);
+ $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE mailinglist_id = ".$this->id);
+ }
+ if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
+ $client_group_id = intval($this->dataRecord["client_group_id"]);
+ $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE mailinglist_id = ".$this->id);
+ }
+ }
+
+ function onBeforeUpdate() {
+ global $app, $conf;
+
+ //* Check if the server has been changed
+ // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway
+ if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+ $rec = $app->db->queryOneRecord("SELECT server_id, domain from mail_mailinglist WHERE mailinglist_id = ".$this->id);
+ $this->dataRecord["server_id"] = $rec['server_id'];
+ unset($rec);
+ //* If the user is neither admin nor reseller
+ } else {
+ //* We do not allow users to change a domain which has been created by the admin
+ $rec = $app->db->queryOneRecord("SELECT domain from mail_mailinglist WHERE mailinglist_id = ".$this->id);
+ if($rec['domain'] != $this->dataRecord["domain"] && $app->tform->checkPerm($this->id,'u')) {
+ //* Add a error message and switch back to old server
+ $app->tform->errorMessage .= $app->lng('The Domain can not be changed. Please ask your Administrator if you want to change the domain name.');
+ $this->dataRecord["domain"] = $rec['domain'];
+ }
+ unset($rec);
+ }
+ }
+
+ function onAfterUpdate() {
+ global $app, $conf;
+
+ // make sure that the record belongs to the clinet group and not the admin group when admin inserts it
+ // also make sure that the user can not delete domain created by a admin
+ if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
+ $client_group_id = intval($this->dataRecord["client_group_id"]);
+ $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE mailinglist_id = ".$this->id);
+ }
+ if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
+ $client_group_id = intval($this->dataRecord["client_group_id"]);
+ $app->db->query("UPDATE mail_mailinglist SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE mailinglist_id = ".$this->id);
+ }
+ }
+
+}
+
+$app->tform_actions = new page_action;
+$app->tform_actions->onLoad();
+
+?>
diff --git a/interface/web/mail/mail_mailinglist_list.php b/interface/web/mail/mail_mailinglist_list.php
index b466c52..732b143 100644
--- a/interface/web/mail/mail_mailinglist_list.php
+++ b/interface/web/mail/mail_mailinglist_list.php
@@ -1,44 +1,44 @@
-<?php
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/mail_mailinglist.list.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-//* Check permissions for module
-$app->auth->check_module_permissions('mail');
-
-$app->load('listform_actions');
-
-
-class list_action extends listform_actions {
-
- function onShow() {
- global $app,$conf;
-
- $app->uses('getconf');
- $global_config = $app->getconf->get_global_config('mail');
-
- if($global_config['mailmailinglist_link'] == 'y') {
- $app->tpl->setVar('mailmailinglist_link',1);
- } else {
- $app->tpl->setVar('mailmailinglist_link',0);
- }
-
- parent::onShow();
- }
-
-}
-
-$list = new list_action;
-$list->onLoad();
-
-
+<?php
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/mail_mailinglist.list.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+//* Check permissions for module
+$app->auth->check_module_permissions('mail');
+
+$app->load('listform_actions');
+
+
+class list_action extends listform_actions {
+
+ function onShow() {
+ global $app,$conf;
+
+ $app->uses('getconf');
+ $global_config = $app->getconf->get_global_config('mail');
+
+ if($global_config['mailmailinglist_link'] == 'y') {
+ $app->tpl->setVar('mailmailinglist_link',1);
+ } else {
+ $app->tpl->setVar('mailmailinglist_link',0);
+ }
+
+ parent::onShow();
+ }
+
+}
+
+$list = new list_action;
+$list->onLoad();
+
+
?>
\ No newline at end of file
diff --git a/interface/web/mail/mailinglist.php b/interface/web/mail/mailinglist.php
index 67b35e1..9940e64 100644
--- a/interface/web/mail/mailinglist.php
+++ b/interface/web/mail/mailinglist.php
@@ -1,68 +1,68 @@
-<?php
-/*
-Copyright (c) 2008, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('mail');
-
-/* get the id of the mail (must be int!) */
-if (!isset($_GET['id'])){
- die ("No List selected!");
-}
-$listId = intval($_GET['id']);
-
-/*
- * Get the data to connect to the database
- */
-$dbData = $app->db->queryAllRecords("SELECT server_id, listname FROM mail_mailinglist WHERE mailinglist_id = " . $listId);
-$serverId = intval($dbData[0]['server_id']);
-if ($serverId == 0){
- die ("No List - Server found!");
-}
-
-$serverData = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$serverId);
-
-$app->uses('getconf');
-$global_config = $app->getconf->get_global_config('mail');
-
-if($global_config['mailmailinglist_url'] != '') {
- header('Location:' . $global_config['mailmailinglist_url']);
-} else {
-
-/*
- * We only redirect to the login-form, so there is no need, to check any rights
- */
- isset($_SERVER['HTTPS'])? $http = 'https' : $http = 'http';
- header('Location:' . $http . '://' . $serverData['server_name'] . '/cgi-bin/mailman/admin/' . $dbData[0]['listname']);
-}
-exit;
+<?php
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('mail');
+
+/* get the id of the mail (must be int!) */
+if (!isset($_GET['id'])){
+ die ("No List selected!");
+}
+$listId = intval($_GET['id']);
+
+/*
+ * Get the data to connect to the database
+ */
+$dbData = $app->db->queryAllRecords("SELECT server_id, listname FROM mail_mailinglist WHERE mailinglist_id = " . $listId);
+$serverId = intval($dbData[0]['server_id']);
+if ($serverId == 0){
+ die ("No List - Server found!");
+}
+
+$serverData = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$serverId);
+
+$app->uses('getconf');
+$global_config = $app->getconf->get_global_config('mail');
+
+if($global_config['mailmailinglist_url'] != '') {
+ header('Location:' . $global_config['mailmailinglist_url']);
+} else {
+
+/*
+ * We only redirect to the login-form, so there is no need, to check any rights
+ */
+ isset($_SERVER['HTTPS'])? $http = 'https' : $http = 'http';
+ header('Location:' . $http . '://' . $serverData['server_name'] . '/cgi-bin/mailman/admin/' . $dbData[0]['listname']);
+}
+exit;
?>
\ No newline at end of file
diff --git a/interface/web/mail/templates/mail_alias_edit.htm b/interface/web/mail/templates/mail_alias_edit.htm
index 0606ab6..af8444c 100644
--- a/interface/web/mail/templates/mail_alias_edit.htm
+++ b/interface/web/mail/templates/mail_alias_edit.htm
@@ -1,39 +1,39 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_alias">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <p class="label"><em>*</em> {tmpl_var name='email_txt'}</p>
- <div class="multiField">
- <label for="email_local_part" class="blockLabel">Alias<input type="text" id="email_local_part" name="email_local_part" size="20" value="{tmpl_var name='email_local_part'}" class="textInput" /></label>
- <label for="email_at" class="blockLabel email_at"> <span id="email_at" name="email_at" />@</label>
- <label for="email_domain" class="blockLabel">{tmpl_var name='domain_txt'}<select name="email_domain" id="email_domain" class="selectInput">{tmpl_var name='email_domain'}</select></label>
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="destination">{tmpl_var name='destination_txt'}</label>
- <select name="destination" id="destination" class="selectInput">
- {tmpl_var name='destination'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- <input type="hidden" name="type" value="alias">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_alias_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_alias_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_alias">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <p class="label"><em>*</em> {tmpl_var name='email_txt'}</p>
+ <div class="multiField">
+ <label for="email_local_part" class="blockLabel">Alias<input type="text" id="email_local_part" name="email_local_part" size="20" value="{tmpl_var name='email_local_part'}" class="textInput" /></label>
+ <label for="email_at" class="blockLabel email_at"> <span id="email_at" name="email_at" />@</label>
+ <label for="email_domain" class="blockLabel">{tmpl_var name='domain_txt'}<select name="email_domain" id="email_domain" class="selectInput">{tmpl_var name='email_domain'}</select></label>
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="destination">{tmpl_var name='destination_txt'}</label>
+ <select name="destination" id="destination" class="selectInput">
+ {tmpl_var name='destination'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ <input type="hidden" name="type" value="alias">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_alias_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_alias_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_blacklist_edit.htm b/interface/web/mail/templates/mail_blacklist_edit.htm
index e64fe2d..63531fd 100644
--- a/interface/web/mail/templates/mail_blacklist_edit.htm
+++ b/interface/web/mail/templates/mail_blacklist_edit.htm
@@ -1,41 +1,41 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_blacklist">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="source">{tmpl_var name='source_txt'}</label>
- <input name="source" id="source" value="{tmpl_var name='source'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="type">{tmpl_var name='type_txt'}</label>
- <select name="type" id="type" class="selectInput">
- {tmpl_var name='type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- <input name="access" type="hidden" value="{tmpl_var name='access'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_blacklist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_blacklist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_blacklist">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="source">{tmpl_var name='source_txt'}</label>
+ <input name="source" id="source" value="{tmpl_var name='source'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="type">{tmpl_var name='type_txt'}</label>
+ <select name="type" id="type" class="selectInput">
+ {tmpl_var name='type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ <input name="access" type="hidden" value="{tmpl_var name='access'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_blacklist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_blacklist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_content_filter_edit.htm b/interface/web/mail/templates/mail_content_filter_edit.htm
index ffe844e..e93c26c 100644
--- a/interface/web/mail/templates/mail_content_filter_edit.htm
+++ b/interface/web/mail/templates/mail_content_filter_edit.htm
@@ -1,50 +1,50 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_content_filter">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="type">{tmpl_var name='type_txt'}</label>
- <select name="type" id="type" class="selectInput">
- {tmpl_var name='type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="pattern">{tmpl_var name='pattern_txt'}</label>
- <input name="pattern" id="pattern" value="{tmpl_var name='pattern'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="data">{tmpl_var name='data_txt'}</label>
- <input name="data" id="data" value="{tmpl_var name='data'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="action">{tmpl_var name='action_txt'}</label>
- <select name="action" id="action" class="selectInput">
- {tmpl_var name='action'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_content_filter_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_content_filter_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_content_filter">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="type">{tmpl_var name='type_txt'}</label>
+ <select name="type" id="type" class="selectInput">
+ {tmpl_var name='type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="pattern">{tmpl_var name='pattern_txt'}</label>
+ <input name="pattern" id="pattern" value="{tmpl_var name='pattern'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="data">{tmpl_var name='data_txt'}</label>
+ <input name="data" id="data" value="{tmpl_var name='data'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="action">{tmpl_var name='action_txt'}</label>
+ <select name="action" id="action" class="selectInput">
+ {tmpl_var name='action'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_content_filter_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_content_filter_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_domain_admin_list.htm b/interface/web/mail/templates/mail_domain_admin_list.htm
index b0e14e5..a2b4ba6 100644
--- a/interface/web/mail/templates/mail_domain_admin_list.htm
+++ b/interface/web/mail/templates/mail_domain_admin_list.htm
@@ -17,27 +17,27 @@
<table class="list">
<thead>
<tr>
- <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
- <th class="tbl_col_sys_groupid" scope="col"><tmpl_var name="sys_groupid_txt"></th>
- <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
- <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
+ <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
+ <th class="tbl_col_sys_groupid" scope="col"><tmpl_var name="sys_groupid_txt"></th>
+ <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
+ <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
<th class="tbl_col_buttons" scope="col"> </th>
</tr>
<tr>
- <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','mail/mail_domain_list.php');">{tmpl_var name='search_active'}</select></td>
- <td class="tbl_col_sys_groupid"><select name="search_sys_groupid" onChange="submitForm('pageForm','mail/mail_domain_list.php');">{tmpl_var name='search_sys_groupid'}</select></td>
- <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','mail/mail_domain_list.php');">{tmpl_var name='search_server_id'}</select></td>
- <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
+ <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','mail/mail_domain_list.php');">{tmpl_var name='search_active'}</select></td>
+ <td class="tbl_col_sys_groupid"><select name="search_sys_groupid" onChange="submitForm('pageForm','mail/mail_domain_list.php');">{tmpl_var name='search_sys_groupid'}</select></td>
+ <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','mail/mail_domain_list.php');">{tmpl_var name='search_server_id'}</select></td>
+ <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
<td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','mail/mail_domain_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
</tr>
</thead>
<tbody>
<tmpl_loop name="records">
<tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_active"><a href="#" onClick="loadContent('mail/mail_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
- <td class="tbl_col_sys_groupid"><a href="#" onClick="loadContent('mail/mail_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="sys_groupid"}</a></td>
- <td class="tbl_col_server_id"><a href="#" onClick="loadContent('mail/mail_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
- <td class="tbl_col_domain"><a href="#" onClick="loadContent('mail/mail_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
+ <td class="tbl_col_active"><a href="#" onClick="loadContent('mail/mail_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
+ <td class="tbl_col_sys_groupid"><a href="#" onClick="loadContent('mail/mail_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="sys_groupid"}</a></td>
+ <td class="tbl_col_server_id"><a href="#" onClick="loadContent('mail/mail_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
+ <td class="tbl_col_domain"><a href="#" onClick="loadContent('mail/mail_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
<td class="tbl_col_buttons">
<div class="buttons icons16">
<a class="icons16 icoDelete" href="javascript: del_record('mail/mail_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
diff --git a/interface/web/mail/templates/mail_domain_catchall_edit.htm b/interface/web/mail/templates/mail_domain_catchall_edit.htm
index cd412dd..90b8af7 100644
--- a/interface/web/mail/templates/mail_domain_catchall_edit.htm
+++ b/interface/web/mail/templates/mail_domain_catchall_edit.htm
@@ -1,38 +1,38 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_domain_catchall">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='email_txt'}</p>
- <div class="multiField">
- <label for="email_at" class="blockLabel email_at"> <span id="email_at" name="email_at" />@</label>
- <label for="email_domain" class="blockLabel">{tmpl_var name='domain_txt'}<select name="email_domain" id="email_domain" class="selectInput">{tmpl_var name='email_domain'}</select></label>
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="destination">{tmpl_var name='destination_txt'}</label>
- <select name="destination" id="destination" class="selectInput">
- {tmpl_var name='destination'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- <input type="hidden" name="type" value="catchall">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_domain_catchall_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_domain_catchall_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_domain_catchall">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='email_txt'}</p>
+ <div class="multiField">
+ <label for="email_at" class="blockLabel email_at"> <span id="email_at" name="email_at" />@</label>
+ <label for="email_domain" class="blockLabel">{tmpl_var name='domain_txt'}<select name="email_domain" id="email_domain" class="selectInput">{tmpl_var name='email_domain'}</select></label>
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="destination">{tmpl_var name='destination_txt'}</label>
+ <select name="destination" id="destination" class="selectInput">
+ {tmpl_var name='destination'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ <input type="hidden" name="type" value="catchall">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_domain_catchall_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_domain_catchall_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_get_edit.htm b/interface/web/mail/templates/mail_get_edit.htm
index 2da485e..6d45cdb 100644
--- a/interface/web/mail/templates/mail_get_edit.htm
+++ b/interface/web/mail/templates/mail_get_edit.htm
@@ -1,54 +1,54 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_get">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="type">{tmpl_var name='type_txt'}</label>
- <select name="type" id="type" class="selectInput">
- {tmpl_var name='type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="source_server">{tmpl_var name='source_server_txt'}</label>
- <input name="source_server" id="source_server" value="{tmpl_var name='source_server'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="source_username">{tmpl_var name='source_username_txt'}</label>
- <input name="source_username" id="source_username" value="{tmpl_var name='source_username'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="source_password">{tmpl_var name='source_password_txt'}</label>
- <input name="source_password" id="source_password" value="{tmpl_var name='source_password'}" size="30" maxlength="255" type="password" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='source_delete_txt'}</p>
- <div class="multiField">
- {tmpl_var name='source_delete'}
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="destination">{tmpl_var name='destination_txt'}</label>
- <select name="destination" id="destination" class="selectInput">
- {tmpl_var name='destination'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_get_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_get_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_get">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="type">{tmpl_var name='type_txt'}</label>
+ <select name="type" id="type" class="selectInput">
+ {tmpl_var name='type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="source_server">{tmpl_var name='source_server_txt'}</label>
+ <input name="source_server" id="source_server" value="{tmpl_var name='source_server'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="source_username">{tmpl_var name='source_username_txt'}</label>
+ <input name="source_username" id="source_username" value="{tmpl_var name='source_username'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="source_password">{tmpl_var name='source_password_txt'}</label>
+ <input name="source_password" id="source_password" value="{tmpl_var name='source_password'}" size="30" maxlength="255" type="password" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='source_delete_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='source_delete'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="destination">{tmpl_var name='destination_txt'}</label>
+ <select name="destination" id="destination" class="selectInput">
+ {tmpl_var name='destination'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_get_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_get_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_mailinglist_edit.htm b/interface/web/mail/templates/mail_mailinglist_edit.htm
index 2ac742e..bbf993d 100644
--- a/interface/web/mail/templates/mail_mailinglist_edit.htm
+++ b/interface/web/mail/templates/mail_mailinglist_edit.htm
@@ -1,80 +1,80 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_mailinglist">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Mailing List</legend>
- <tmpl_if name="is_admin">
- <div class="ctrlHolder">
- <label for="client_group_id">{tmpl_var name='client_txt'}</label>
- <select name="client_group_id" id="client_group_id" class="selectInput">
- {tmpl_var name='client_group_id'}
- </select>
- </div>
- </tmpl_if>
-
- <tmpl_if name="is_reseller">
- <div class="ctrlHolder">
- <label for="client_group_id">{tmpl_var name='client_txt'}</label>
- <select name="client_group_id" id="client_group_id" class="selectInput">
- {tmpl_var name='client_group_id'}
- </select>
- </div>
- </tmpl_if>
-
- <tmpl_if name="edit_disabled">
- <div class="ctrlHolder">
- <label for="domain_disabled">{tmpl_var name='domain_txt'}</label>
- <select name="domain_disabled" id="domain_disabled" class="selectInput" disabled="disabled">
- {tmpl_var name='domain_option'}
- </select>
- <input type="hidden" name="domain" value="{tmpl_var name='domain_value'}" />
- </div>
-
- <div class="ctrlHolder">
- <label for="listname_disabled">{tmpl_var name='listname_txt'}</label>
- <input name="listname_disabled" id="listname_disabled" value="{tmpl_var name='listname'}" size="30" maxlength="255" type="text" class="textInput" disabled="disabled" />
- <input type="hidden" name="listname" value="{tmpl_var name='listname_value'}" />
- </div>
- <div class="ctrlHolder">
- <label for="email_disabled">{tmpl_var name='email_txt'}</label>
- <input name="email_disabled" id="email_disabled" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" disabled="disabled" />
- <input type="hidden" name="email" value="{tmpl_var name='email_value'}" />
- </div>
- <tmpl_else>
- <div class="ctrlHolder">
- <label for="domain">{tmpl_var name='domain_txt'}</label>
- <select name="domain" id="domain" class="selectInput">
- {tmpl_var name='domain_option'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="listname">{tmpl_var name='listname_txt'}</label>
- <input name="listname" id="listname" value="{tmpl_var name='listname'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="email">{tmpl_var name='email_txt'}</label>
- <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- </tmpl_if>
- <div class="ctrlHolder">
- <label for="password">{tmpl_var name='password_txt'}</label>
- <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='password_strength_txt'}</p>
- <div id="passBar"></div>
- <p class="formHint"><span id="passText"> </span></p>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_mailinglist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_mailinglist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_mailinglist">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Mailing List</legend>
+ <tmpl_if name="is_admin">
+ <div class="ctrlHolder">
+ <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+ <select name="client_group_id" id="client_group_id" class="selectInput">
+ {tmpl_var name='client_group_id'}
+ </select>
+ </div>
+ </tmpl_if>
+
+ <tmpl_if name="is_reseller">
+ <div class="ctrlHolder">
+ <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+ <select name="client_group_id" id="client_group_id" class="selectInput">
+ {tmpl_var name='client_group_id'}
+ </select>
+ </div>
+ </tmpl_if>
+
+ <tmpl_if name="edit_disabled">
+ <div class="ctrlHolder">
+ <label for="domain_disabled">{tmpl_var name='domain_txt'}</label>
+ <select name="domain_disabled" id="domain_disabled" class="selectInput" disabled="disabled">
+ {tmpl_var name='domain_option'}
+ </select>
+ <input type="hidden" name="domain" value="{tmpl_var name='domain_value'}" />
+ </div>
+
+ <div class="ctrlHolder">
+ <label for="listname_disabled">{tmpl_var name='listname_txt'}</label>
+ <input name="listname_disabled" id="listname_disabled" value="{tmpl_var name='listname'}" size="30" maxlength="255" type="text" class="textInput" disabled="disabled" />
+ <input type="hidden" name="listname" value="{tmpl_var name='listname_value'}" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="email_disabled">{tmpl_var name='email_txt'}</label>
+ <input name="email_disabled" id="email_disabled" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" disabled="disabled" />
+ <input type="hidden" name="email" value="{tmpl_var name='email_value'}" />
+ </div>
+ <tmpl_else>
+ <div class="ctrlHolder">
+ <label for="domain">{tmpl_var name='domain_txt'}</label>
+ <select name="domain" id="domain" class="selectInput">
+ {tmpl_var name='domain_option'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="listname">{tmpl_var name='listname_txt'}</label>
+ <input name="listname" id="listname" value="{tmpl_var name='listname'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="email">{tmpl_var name='email_txt'}</label>
+ <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ </tmpl_if>
+ <div class="ctrlHolder">
+ <label for="password">{tmpl_var name='password_txt'}</label>
+ <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='password_strength_txt'}</p>
+ <div id="passBar"></div>
+ <p class="formHint"><span id="passText"> </span></p>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_mailinglist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_mailinglist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_mailinglist_list.htm b/interface/web/mail/templates/mail_mailinglist_list.htm
index 58da87e..37b0be7 100644
--- a/interface/web/mail/templates/mail_mailinglist_list.htm
+++ b/interface/web/mail/templates/mail_mailinglist_list.htm
@@ -1,53 +1,53 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-
-<div class="panel panel_list_mail_mailinglist">
-
- <div class="pnl_toolsarea">
- <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
- <div class="buttons">
- <button class="iconstxt icoAdd" type="button" onClick="loadContent('mail/mail_mailinglist_edit.php');">
- <span>{tmpl_var name="add_new_record_txt"}</span>
- </button>
- </div>
- </fieldset>
- </div>
-
- <div class="pnl_listarea">
- <fieldset><legend><tmpl_var name="list_head_txt"></legend>
- <table class="list">
- <thead>
- <tr>
- <th class="tbl_col_listname" scope="col"><tmpl_var name="listname_txt"></th>
- <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
- <th class="tbl_col_buttons" scope="col"> </th>
- </tr>
- <tr>
- <td class="tbl_col_listname"><input type="text" name="search_listname" value="{tmpl_var name='search_listname'}" /></td>
- <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
- <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','mail/mail_mailinglist_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
- </tr>
- </thead>
- <tbody>
- <tmpl_loop name="records">
- <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_listname"><a href="#" onClick="loadContent('mail/mail_mailinglist_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="listname"}</a></td>
- <td class="tbl_col_domain"><a href="#" onClick="loadContent('mail/mail_mailinglist_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
- <td class="tbl_col_buttons">
- <div class="buttons icons16">
- <tmpl_if name="mailmailinglist_link"><a class="icons16 icoWebmailer" href="mail/mailinglist.php?id={tmpl_var name='id'}" target="mailmailinglist"><span>{tmpl_var name='delete_txt'}</span></a></tmpl_if>
- <a class="icons16 icoDelete" href="javascript: del_record('mail/mail_mailinglist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
- </div>
- </td>
- </tr>
- </tmpl_loop>
- </tbody>
- <tfoot>
- <tr>
- <td class="tbl_footer tbl_paging" colspan="3"><tmpl_var name="paging"></td>
- </tr>
- </tfoot>
- </table>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+
+<div class="panel panel_list_mail_mailinglist">
+
+ <div class="pnl_toolsarea">
+ <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
+ <div class="buttons">
+ <button class="iconstxt icoAdd" type="button" onClick="loadContent('mail/mail_mailinglist_edit.php');">
+ <span>{tmpl_var name="add_new_record_txt"}</span>
+ </button>
+ </div>
+ </fieldset>
+ </div>
+
+ <div class="pnl_listarea">
+ <fieldset><legend><tmpl_var name="list_head_txt"></legend>
+ <table class="list">
+ <thead>
+ <tr>
+ <th class="tbl_col_listname" scope="col"><tmpl_var name="listname_txt"></th>
+ <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
+ <th class="tbl_col_buttons" scope="col"> </th>
+ </tr>
+ <tr>
+ <td class="tbl_col_listname"><input type="text" name="search_listname" value="{tmpl_var name='search_listname'}" /></td>
+ <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
+ <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','mail/mail_mailinglist_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
+ </tr>
+ </thead>
+ <tbody>
+ <tmpl_loop name="records">
+ <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+ <td class="tbl_col_listname"><a href="#" onClick="loadContent('mail/mail_mailinglist_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="listname"}</a></td>
+ <td class="tbl_col_domain"><a href="#" onClick="loadContent('mail/mail_mailinglist_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
+ <td class="tbl_col_buttons">
+ <div class="buttons icons16">
+ <tmpl_if name="mailmailinglist_link"><a class="icons16 icoWebmailer" href="mail/mailinglist.php?id={tmpl_var name='id'}" target="mailmailinglist"><span>{tmpl_var name='delete_txt'}</span></a></tmpl_if>
+ <a class="icons16 icoDelete" href="javascript: del_record('mail/mail_mailinglist_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
+ </div>
+ </td>
+ </tr>
+ </tmpl_loop>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td class="tbl_footer tbl_paging" colspan="3"><tmpl_var name="paging"></td>
+ </tr>
+ </tfoot>
+ </table>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_relay_recipient_list.htm b/interface/web/mail/templates/mail_relay_recipient_list.htm
index 331aa5e..0a648e4 100644
--- a/interface/web/mail/templates/mail_relay_recipient_list.htm
+++ b/interface/web/mail/templates/mail_relay_recipient_list.htm
@@ -17,24 +17,24 @@
<table class="list">
<thead>
<tr>
- <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
- <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
- <th class="tbl_col_source" scope="col"><tmpl_var name="source_txt"></th>
+ <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
+ <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
+ <th class="tbl_col_source" scope="col"><tmpl_var name="source_txt"></th>
<th class="tbl_col_buttons" scope="col"> </th>
</tr>
<tr>
- <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','mail/mail_relay_recipient_list.php');">{tmpl_var name='search_active'}</select></td>
- <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','mail/mail_relay_recipient_list.php');">{tmpl_var name='search_server_id'}</select></td>
- <td class="tbl_col_source"><input type="text" name="search_source" value="{tmpl_var name='search_source'}" /></td>
+ <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','mail/mail_relay_recipient_list.php');">{tmpl_var name='search_active'}</select></td>
+ <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','mail/mail_relay_recipient_list.php');">{tmpl_var name='search_server_id'}</select></td>
+ <td class="tbl_col_source"><input type="text" name="search_source" value="{tmpl_var name='search_source'}" /></td>
<td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','mail/mail_relay_recipient_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
</tr>
</thead>
<tbody>
<tmpl_loop name="records">
<tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_active"><a href="#" onClick="loadContent('mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
- <td class="tbl_col_server_id"><a href="#" onClick="loadContent('mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
- <td class="tbl_col_source"><a href="#" onClick="loadContent('mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="source"}</a></td>
+ <td class="tbl_col_active"><a href="#" onClick="loadContent('mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
+ <td class="tbl_col_server_id"><a href="#" onClick="loadContent('mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
+ <td class="tbl_col_source"><a href="#" onClick="loadContent('mail/mail_relay_recipient_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="source"}</a></td>
<td class="tbl_col_buttons">
<div class="buttons icons16">
<a class="icons16 icoDelete" href="javascript: del_record('mail/mail_relay_recipient_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
diff --git a/interface/web/mail/templates/mail_transport_edit.htm b/interface/web/mail/templates/mail_transport_edit.htm
index 5f16db3..b6e1c97 100644
--- a/interface/web/mail/templates/mail_transport_edit.htm
+++ b/interface/web/mail/templates/mail_transport_edit.htm
@@ -1,56 +1,56 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_transport">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="domain">{tmpl_var name='domain_txt'}</label>
- <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="type">{tmpl_var name='type_txt'}</label>
- <select name="type" id="type" class="selectInput formLengthHalf">
- {tmpl_var name='type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='mx_txt'}</p>
- <div class="multiField">
- <input type="checkbox" value="y" id="mx" name="mx" {tmpl_var name='mx'} />
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="destination">{tmpl_var name='destination_txt'}</label>
- <input name="destination" id="transport" value="{tmpl_var name='destination'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="sort_order">{tmpl_var name='sort_order_txt'}</label>
- <select name="sort_order" id="sort_order" class="selectInput formLengthHalf">
- {tmpl_var name='sort_order'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_transport_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_transport_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_transport">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="domain">{tmpl_var name='domain_txt'}</label>
+ <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="type">{tmpl_var name='type_txt'}</label>
+ <select name="type" id="type" class="selectInput formLengthHalf">
+ {tmpl_var name='type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='mx_txt'}</p>
+ <div class="multiField">
+ <input type="checkbox" value="y" id="mx" name="mx" {tmpl_var name='mx'} />
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="destination">{tmpl_var name='destination_txt'}</label>
+ <input name="destination" id="transport" value="{tmpl_var name='destination'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="sort_order">{tmpl_var name='sort_order_txt'}</label>
+ <select name="sort_order" id="sort_order" class="selectInput formLengthHalf">
+ {tmpl_var name='sort_order'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_transport_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_transport_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_user_custom_rules_edit.htm b/interface/web/mail/templates/mail_user_custom_rules_edit.htm
index 0ca1b3c..33d597d 100644
--- a/interface/web/mail/templates/mail_user_custom_rules_edit.htm
+++ b/interface/web/mail/templates/mail_user_custom_rules_edit.htm
@@ -1,22 +1,22 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_user">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="custom_mailfilter">{tmpl_var name='custom_mailfilter_txt'}</label>
- <textarea name="custom_mailfilter" id="custom_mailfilter" rows='15' cols='30'>{tmpl_var name='custom_mailfilter'}</textarea>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_user">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="custom_mailfilter">{tmpl_var name='custom_mailfilter_txt'}</label>
+ <textarea name="custom_mailfilter" id="custom_mailfilter" rows='15' cols='30'>{tmpl_var name='custom_mailfilter'}</textarea>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_user_stats_list.htm b/interface/web/mail/templates/mail_user_stats_list.htm
index 47e4b07..b7f0d28 100644
--- a/interface/web/mail/templates/mail_user_stats_list.htm
+++ b/interface/web/mail/templates/mail_user_stats_list.htm
@@ -1,52 +1,52 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_list_mail_user_stats">
-
- <div class="pnl_listarea">
- <fieldset><legend><tmpl_var name="list_head_txt"></legend>
- <table class="list">
- <thead>
- <tr>
- <th class="tbl_col_email" scope="col"><tmpl_var name="email_txt"></th>
- <th class="tbl_col_this_month" scope="col"><tmpl_var name="this_month_txt"></th>
- <th class="tbl_col_last_month" scope="col"><tmpl_var name="last_month_txt"></th>
- <th class="tbl_col_this_year" scope="col"><tmpl_var name="this_year_txt"></th>
- <th class="tbl_col_last_year" scope="col"><tmpl_var name="last_year_txt"></th>
- <th class="tbl_col_buttons" scope="col"> </th>
- </tr>
- <tr>
- <td class="tbl_col_email"><input type="text" name="search_email" value="{tmpl_var name='search_email'}" /></td>
- <td class="tbl_col_this_month"></td>
- <td class="tbl_col_last_month"></td>
- <td class="tbl_col_this_year"></td>
- <td class="tbl_col_last_year"></td>
- <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','mail/mail_user_stats.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
- </tr>
- </thead>
- <tbody>
- <tmpl_loop name="records">
- <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_email"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="email"}</a></td>
- <td class="tbl_col_this_month"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="this_month"} MB</a></td>
- <td class="tbl_col_last_month"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="last_month"} MB</a></td>
- <td class="tbl_col_this_year"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="this_year"} MB</a></td>
- <td class="tbl_col_last_year"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="last_year"} MB</a></td>
- <td class="tbl_col_buttons">
- <div class="buttons icons16">
- </div>
- </td>
- </tr>
- </tmpl_loop>
- </tbody>
-
- <tfoot>
- <tr>
- <td class="tbl_footer tbl_paging" colspan="6"><tmpl_var name="paging"></td>
- </tr>
- </tfoot>
- </table>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_list_mail_user_stats">
+
+ <div class="pnl_listarea">
+ <fieldset><legend><tmpl_var name="list_head_txt"></legend>
+ <table class="list">
+ <thead>
+ <tr>
+ <th class="tbl_col_email" scope="col"><tmpl_var name="email_txt"></th>
+ <th class="tbl_col_this_month" scope="col"><tmpl_var name="this_month_txt"></th>
+ <th class="tbl_col_last_month" scope="col"><tmpl_var name="last_month_txt"></th>
+ <th class="tbl_col_this_year" scope="col"><tmpl_var name="this_year_txt"></th>
+ <th class="tbl_col_last_year" scope="col"><tmpl_var name="last_year_txt"></th>
+ <th class="tbl_col_buttons" scope="col"> </th>
+ </tr>
+ <tr>
+ <td class="tbl_col_email"><input type="text" name="search_email" value="{tmpl_var name='search_email'}" /></td>
+ <td class="tbl_col_this_month"></td>
+ <td class="tbl_col_last_month"></td>
+ <td class="tbl_col_this_year"></td>
+ <td class="tbl_col_last_year"></td>
+ <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','mail/mail_user_stats.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
+ </tr>
+ </thead>
+ <tbody>
+ <tmpl_loop name="records">
+ <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+ <td class="tbl_col_email"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="email"}</a></td>
+ <td class="tbl_col_this_month"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="this_month"} MB</a></td>
+ <td class="tbl_col_last_month"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="last_month"} MB</a></td>
+ <td class="tbl_col_this_year"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="this_year"} MB</a></td>
+ <td class="tbl_col_last_year"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="last_year"} MB</a></td>
+ <td class="tbl_col_buttons">
+ <div class="buttons icons16">
+ </div>
+ </td>
+ </tr>
+ </tmpl_loop>
+ </tbody>
+
+ <tfoot>
+ <tr>
+ <td class="tbl_footer tbl_paging" colspan="6"><tmpl_var name="paging"></td>
+ </tr>
+ </tfoot>
+ </table>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/mail_whitelist_edit.htm b/interface/web/mail/templates/mail_whitelist_edit.htm
index d8e6b8b..dc31da2 100644
--- a/interface/web/mail/templates/mail_whitelist_edit.htm
+++ b/interface/web/mail/templates/mail_whitelist_edit.htm
@@ -1,41 +1,41 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_mail_whitelist">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="source">{tmpl_var name='source_txt'}</label>
- <input name="source" id="source" value="{tmpl_var name='source'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="type">{tmpl_var name='type_txt'}</label>
- <select name="type" id="type" class="selectInput">
- {tmpl_var name='type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- <input name="access" type="hidden" value="{tmpl_var name='access'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_whitelist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_whitelist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_mail_whitelist">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="source">{tmpl_var name='source_txt'}</label>
+ <input name="source" id="source" value="{tmpl_var name='source'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="type">{tmpl_var name='type_txt'}</label>
+ <select name="type" id="type" class="selectInput">
+ {tmpl_var name='type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ <input name="access" type="hidden" value="{tmpl_var name='access'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/mail_whitelist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/mail_whitelist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_blacklist_edit.htm b/interface/web/mail/templates/spamfilter_blacklist_edit.htm
index 36058d9..750c4b1 100644
--- a/interface/web/mail/templates/spamfilter_blacklist_edit.htm
+++ b/interface/web/mail/templates/spamfilter_blacklist_edit.htm
@@ -1,49 +1,49 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_blacklist">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
-<!--
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
--->
- <div class="ctrlHolder">
- <label for="rid">{tmpl_var name='rid_txt'}</label>
- <select name="rid" id="rid" class="selectInput">
- {tmpl_var name='rid'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="email">{tmpl_var name='email_txt'}</label>
- <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="priority">{tmpl_var name='priority_txt'}</label>
- <select name="priority" id="priority" class="selectInput formLengthHalf">
- {tmpl_var name='priority'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- <input type="hidden" name="wb" value="{tmpl_var name='wb'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_blacklist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_blacklist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_blacklist">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+<!--
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+-->
+ <div class="ctrlHolder">
+ <label for="rid">{tmpl_var name='rid_txt'}</label>
+ <select name="rid" id="rid" class="selectInput">
+ {tmpl_var name='rid'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="email">{tmpl_var name='email_txt'}</label>
+ <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="priority">{tmpl_var name='priority_txt'}</label>
+ <select name="priority" id="priority" class="selectInput formLengthHalf">
+ {tmpl_var name='priority'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ <input type="hidden" name="wb" value="{tmpl_var name='wb'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_blacklist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_blacklist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_config_getmail_edit.htm b/interface/web/mail/templates/spamfilter_config_getmail_edit.htm
index 1bdb886..49f5ff1 100644
--- a/interface/web/mail/templates/spamfilter_config_getmail_edit.htm
+++ b/interface/web/mail/templates/spamfilter_config_getmail_edit.htm
@@ -1,22 +1,22 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_config">
-
- <div class="pnl_formsarea">
- <fieldset id="wf_area_spamfilter_config">
- <span class="wf_oneField">
- <label for="getmail_config_dir" class="wf_preField">{tmpl_var name='getmail_config_dir_txt'}</label>
- <input type="text" id="getmail_config_dir" name="getmail_config_dir" value="{tmpl_var name='getmail_config_dir'}" size="40" maxlength="255">
- </span>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="wf_actions buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_config">
+
+ <div class="pnl_formsarea">
+ <fieldset id="wf_area_spamfilter_config">
+ <span class="wf_oneField">
+ <label for="getmail_config_dir" class="wf_preField">{tmpl_var name='getmail_config_dir_txt'}</label>
+ <input type="text" id="getmail_config_dir" name="getmail_config_dir" value="{tmpl_var name='getmail_config_dir'}" size="40" maxlength="255">
+ </span>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="wf_actions buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_config_mail_edit.htm b/interface/web/mail/templates/spamfilter_config_mail_edit.htm
index 3526589..50d43cd 100644
--- a/interface/web/mail/templates/spamfilter_config_mail_edit.htm
+++ b/interface/web/mail/templates/spamfilter_config_mail_edit.htm
@@ -1,66 +1,66 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_config">
-
- <div class="pnl_formsarea">
- <fieldset id="wf_area_spamfilter_config">
- <span class="wf_oneField">
- <label for="module" class="wf_preField">{tmpl_var name='module_txt'}</label>
- <select id="module" name="module">{tmpl_var name='module'}</select>
- </span>
- <span class="wf_oneField">
- <label for="maildir_path" class="wf_preField">{tmpl_var name='maildir_path_txt'}</label>
- <input type="text" id="maildir_path" name="maildir_path" value="{tmpl_var name='maildir_path'}" size="40" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="homedir_path" class="wf_preField">{tmpl_var name='homedir_path_txt'}</label>
- <input type="text" id="homedir_path" name="homedir_path" value="{tmpl_var name='homedir_path'}" size="40" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="mailuser_uid" class="wf_preField">{tmpl_var name='mailuser_uid_txt'}</label>
- <input type="text" id="mailuser_uid" name="mailuser_uid" value="{tmpl_var name='mailuser_uid'}" size="10" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="mailuser_gid" class="wf_preField">{tmpl_var name='mailuser_gid_txt'}</label>
- <input type="text" id="mailuser_gid" name="mailuser_gid" value="{tmpl_var name='mailuser_gid'}" size="10" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="mailuser_name" class="wf_preField">{tmpl_var name='mailuser_name_txt'}</label>
- <input type="text" id="mailuser_name" name="mailuser_name" value="{tmpl_var name='mailuser_name'}" size="10" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="mailuser_group" class="wf_preField">{tmpl_var name='mailuser_group_txt'}</label>
- <input type="text" id="mailuser_group" name="mailuser_group" value="{tmpl_var name='mailuser_group'}" size="10" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="relayhost" class="wf_preField">{tmpl_var name='relayhost_txt'}</label>
- <input type="text" id="relayhost" name="relayhost" value="{tmpl_var name='relayhost'}" size="40" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="relayhost_user" class="wf_preField">{tmpl_var name='relayhost_user_txt'}</label>
- <input type="text" id="relayhost_user" name="relayhost_user" value="{tmpl_var name='relayhost_user'}" size="40" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="relayhost_password" class="wf_preField">{tmpl_var name='relayhost_password_txt'}</label>
- <input type="text" id="relayhost_password" name="relayhost_password" value="{tmpl_var name='relayhost_password'}" size="40" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="mailbox_size_limit" class="wf_preField">{tmpl_var name='mailbox_size_limit_txt'}</label>
- <input type="text" id="mailbox_size_limit" name="mailbox_size_limit" value="{tmpl_var name='mailbox_size_limit'}" size="10" maxlength="15">
- </span>
- <span class="wf_oneField">
- <label for="message_size_limit" class="wf_preField">{tmpl_var name='message_size_limit_txt'}</label>
- <input type="text" id="message_size_limit" name="message_size_limit" value="{tmpl_var name='message_size_limit'}" size="10" maxlength="15">
- </span>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="wf_actions buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_config">
+
+ <div class="pnl_formsarea">
+ <fieldset id="wf_area_spamfilter_config">
+ <span class="wf_oneField">
+ <label for="module" class="wf_preField">{tmpl_var name='module_txt'}</label>
+ <select id="module" name="module">{tmpl_var name='module'}</select>
+ </span>
+ <span class="wf_oneField">
+ <label for="maildir_path" class="wf_preField">{tmpl_var name='maildir_path_txt'}</label>
+ <input type="text" id="maildir_path" name="maildir_path" value="{tmpl_var name='maildir_path'}" size="40" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="homedir_path" class="wf_preField">{tmpl_var name='homedir_path_txt'}</label>
+ <input type="text" id="homedir_path" name="homedir_path" value="{tmpl_var name='homedir_path'}" size="40" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="mailuser_uid" class="wf_preField">{tmpl_var name='mailuser_uid_txt'}</label>
+ <input type="text" id="mailuser_uid" name="mailuser_uid" value="{tmpl_var name='mailuser_uid'}" size="10" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="mailuser_gid" class="wf_preField">{tmpl_var name='mailuser_gid_txt'}</label>
+ <input type="text" id="mailuser_gid" name="mailuser_gid" value="{tmpl_var name='mailuser_gid'}" size="10" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="mailuser_name" class="wf_preField">{tmpl_var name='mailuser_name_txt'}</label>
+ <input type="text" id="mailuser_name" name="mailuser_name" value="{tmpl_var name='mailuser_name'}" size="10" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="mailuser_group" class="wf_preField">{tmpl_var name='mailuser_group_txt'}</label>
+ <input type="text" id="mailuser_group" name="mailuser_group" value="{tmpl_var name='mailuser_group'}" size="10" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="relayhost" class="wf_preField">{tmpl_var name='relayhost_txt'}</label>
+ <input type="text" id="relayhost" name="relayhost" value="{tmpl_var name='relayhost'}" size="40" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="relayhost_user" class="wf_preField">{tmpl_var name='relayhost_user_txt'}</label>
+ <input type="text" id="relayhost_user" name="relayhost_user" value="{tmpl_var name='relayhost_user'}" size="40" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="relayhost_password" class="wf_preField">{tmpl_var name='relayhost_password_txt'}</label>
+ <input type="text" id="relayhost_password" name="relayhost_password" value="{tmpl_var name='relayhost_password'}" size="40" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="mailbox_size_limit" class="wf_preField">{tmpl_var name='mailbox_size_limit_txt'}</label>
+ <input type="text" id="mailbox_size_limit" name="mailbox_size_limit" value="{tmpl_var name='mailbox_size_limit'}" size="10" maxlength="15">
+ </span>
+ <span class="wf_oneField">
+ <label for="message_size_limit" class="wf_preField">{tmpl_var name='message_size_limit_txt'}</label>
+ <input type="text" id="message_size_limit" name="message_size_limit" value="{tmpl_var name='message_size_limit'}" size="10" maxlength="15">
+ </span>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="wf_actions buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_config_server_edit.htm b/interface/web/mail/templates/spamfilter_config_server_edit.htm
index ac45009..e5b5428 100644
--- a/interface/web/mail/templates/spamfilter_config_server_edit.htm
+++ b/interface/web/mail/templates/spamfilter_config_server_edit.htm
@@ -1,38 +1,38 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_config">
-
- <div class="pnl_formsarea">
- <fieldset id="wf_area_spamfilter_config">
- <span class="wf_oneField">
- <label for="ip_address" class="wf_preField">{tmpl_var name='ip_address_txt'}</label>
- <input type="text" id="ip_address" name="ip_address" value="{tmpl_var name='ip_address'}" size="15" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="netmask" class="wf_preField">{tmpl_var name='netmask_txt'}</label>
- <input type="text" id="netmask" name="netmask" value="{tmpl_var name='netmask'}" size="15" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="gateway" class="wf_preField">{tmpl_var name='gateway_txt'}</label>
- <input type="text" id="gateway" name="gateway" value="{tmpl_var name='gateway'}" size="15" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="hostname" class="wf_preField">{tmpl_var name='hostname_txt'}</label>
- <input type="text" id="hostname" name="hostname" value="{tmpl_var name='hostname'}" size="40" maxlength="255">
- </span>
- <span class="wf_oneField">
- <label for="nameservers" class="wf_preField">{tmpl_var name='nameservers_txt'}</label>
- <input type="text" id="nameservers" name="nameservers" value="{tmpl_var name='nameservers'}" size="40" maxlength="255">
- </span>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="wf_actions buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_config">
+
+ <div class="pnl_formsarea">
+ <fieldset id="wf_area_spamfilter_config">
+ <span class="wf_oneField">
+ <label for="ip_address" class="wf_preField">{tmpl_var name='ip_address_txt'}</label>
+ <input type="text" id="ip_address" name="ip_address" value="{tmpl_var name='ip_address'}" size="15" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="netmask" class="wf_preField">{tmpl_var name='netmask_txt'}</label>
+ <input type="text" id="netmask" name="netmask" value="{tmpl_var name='netmask'}" size="15" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="gateway" class="wf_preField">{tmpl_var name='gateway_txt'}</label>
+ <input type="text" id="gateway" name="gateway" value="{tmpl_var name='gateway'}" size="15" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="hostname" class="wf_preField">{tmpl_var name='hostname_txt'}</label>
+ <input type="text" id="hostname" name="hostname" value="{tmpl_var name='hostname'}" size="40" maxlength="255">
+ </span>
+ <span class="wf_oneField">
+ <label for="nameservers" class="wf_preField">{tmpl_var name='nameservers_txt'}</label>
+ <input type="text" id="nameservers" name="nameservers" value="{tmpl_var name='nameservers'}" size="40" maxlength="255">
+ </span>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="wf_actions buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_other_edit.htm b/interface/web/mail/templates/spamfilter_other_edit.htm
index 76889a6..6b8c739 100644
--- a/interface/web/mail/templates/spamfilter_other_edit.htm
+++ b/interface/web/mail/templates/spamfilter_other_edit.htm
@@ -1,80 +1,80 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_policy">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="addr_extension_virus">{tmpl_var name='addr_extension_virus_txt'}</label>
- <input name="addr_extension_virus" id="addr_extension_virus" value="{tmpl_var name='addr_extension_virus'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="addr_extension_spam">{tmpl_var name='addr_extension_spam_txt'}</label>
- <input name="addr_extension_spam" id="addr_extension_spam" value="{tmpl_var name='addr_extension_spam'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="addr_extension_banned">{tmpl_var name='addr_extension_banned_txt'}</label>
- <input name="addr_extension_banned" id="addr_extension_banned" value="{tmpl_var name='addr_extension_banned'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="addr_extension_bad_header">{tmpl_var name='addr_extension_bad_header_txt'}</label>
- <input name="addr_extension_bad_header" id="addr_extension_bad_header" value="{tmpl_var name='addr_extension_bad_header'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="warnvirusrecip">{tmpl_var name='warnvirusrecip_txt'}</label>
- <select name="warnvirusrecip" id="warnvirusrecip" class="selectInput formLengthBool">
- {tmpl_var name='warnvirusrecip'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="warnbannedrecip">{tmpl_var name='warnbannedrecip_txt'}</label>
- <select name="warnbannedrecip" id="warnbannedrecip" class="selectInput formLengthBool">
- {tmpl_var name='warnbannedrecip'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="warnbadhrecip">{tmpl_var name='warnbadhrecip_txt'}</label>
- <select name="warnbadhrecip" id="warnbadhrecip" class="selectInput formLengthBool">
- {tmpl_var name='warnbadhrecip'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="newvirus_admin">{tmpl_var name='newvirus_admin_txt'}</label>
- <input name="newvirus_admin" id="newvirus_admin" value="{tmpl_var name='newvirus_admin'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="virus_admin">{tmpl_var name='virus_admin_txt'}</label>
- <input name="virus_admin" id="virus_admin" value="{tmpl_var name='virus_admin'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="banned_admin">{tmpl_var name='banned_admin_txt'}</label>
- <input name="banned_admin" id="banned_admin" value="{tmpl_var name='banned_admin'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="bad_header_admin">{tmpl_var name='bad_header_admin_txt'}</label>
- <input name="bad_header_admin" id="bad_header_admin" value="{tmpl_var name='bad_header_admin'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="spam_admin">{tmpl_var name='spam_admin_txt'}</label>
- <input name="spam_admin" id="spam_admin" value="{tmpl_var name='spam_admin'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="message_size_limit">{tmpl_var name='message_size_limit_txt'}</label>
- <input name="message_size_limit" id="message_size_limit" value="{tmpl_var name='message_size_limit'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" /> Bytes
- </div>
- <div class="ctrlHolder">
- <label for="banned_rulenames">{tmpl_var name='banned_rulenames_txt'}</label>
- <input name="banned_rulenames" id="banned_rulenames" value="{tmpl_var name='banned_rulenames'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_policy_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_policy_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_policy">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="addr_extension_virus">{tmpl_var name='addr_extension_virus_txt'}</label>
+ <input name="addr_extension_virus" id="addr_extension_virus" value="{tmpl_var name='addr_extension_virus'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="addr_extension_spam">{tmpl_var name='addr_extension_spam_txt'}</label>
+ <input name="addr_extension_spam" id="addr_extension_spam" value="{tmpl_var name='addr_extension_spam'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="addr_extension_banned">{tmpl_var name='addr_extension_banned_txt'}</label>
+ <input name="addr_extension_banned" id="addr_extension_banned" value="{tmpl_var name='addr_extension_banned'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="addr_extension_bad_header">{tmpl_var name='addr_extension_bad_header_txt'}</label>
+ <input name="addr_extension_bad_header" id="addr_extension_bad_header" value="{tmpl_var name='addr_extension_bad_header'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="warnvirusrecip">{tmpl_var name='warnvirusrecip_txt'}</label>
+ <select name="warnvirusrecip" id="warnvirusrecip" class="selectInput formLengthBool">
+ {tmpl_var name='warnvirusrecip'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="warnbannedrecip">{tmpl_var name='warnbannedrecip_txt'}</label>
+ <select name="warnbannedrecip" id="warnbannedrecip" class="selectInput formLengthBool">
+ {tmpl_var name='warnbannedrecip'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="warnbadhrecip">{tmpl_var name='warnbadhrecip_txt'}</label>
+ <select name="warnbadhrecip" id="warnbadhrecip" class="selectInput formLengthBool">
+ {tmpl_var name='warnbadhrecip'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="newvirus_admin">{tmpl_var name='newvirus_admin_txt'}</label>
+ <input name="newvirus_admin" id="newvirus_admin" value="{tmpl_var name='newvirus_admin'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="virus_admin">{tmpl_var name='virus_admin_txt'}</label>
+ <input name="virus_admin" id="virus_admin" value="{tmpl_var name='virus_admin'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="banned_admin">{tmpl_var name='banned_admin_txt'}</label>
+ <input name="banned_admin" id="banned_admin" value="{tmpl_var name='banned_admin'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="bad_header_admin">{tmpl_var name='bad_header_admin_txt'}</label>
+ <input name="bad_header_admin" id="bad_header_admin" value="{tmpl_var name='bad_header_admin'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_admin">{tmpl_var name='spam_admin_txt'}</label>
+ <input name="spam_admin" id="spam_admin" value="{tmpl_var name='spam_admin'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="message_size_limit">{tmpl_var name='message_size_limit_txt'}</label>
+ <input name="message_size_limit" id="message_size_limit" value="{tmpl_var name='message_size_limit'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" /> Bytes
+ </div>
+ <div class="ctrlHolder">
+ <label for="banned_rulenames">{tmpl_var name='banned_rulenames_txt'}</label>
+ <input name="banned_rulenames" id="banned_rulenames" value="{tmpl_var name='banned_rulenames'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_policy_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_policy_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_policy_edit.htm b/interface/web/mail/templates/spamfilter_policy_edit.htm
index b725df5..6a0d2ac 100644
--- a/interface/web/mail/templates/spamfilter_policy_edit.htm
+++ b/interface/web/mail/templates/spamfilter_policy_edit.htm
@@ -1,64 +1,64 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_policy">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="policy_name">{tmpl_var name='policy_name_txt'}</label>
- <input name="policy_name" id="policy_name" value="{tmpl_var name='policy_name'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="virus_lover">{tmpl_var name='virus_lover_txt'}</label>
- <select name="virus_lover" id="virus_lover" class="selectInput formLengthBool">
- {tmpl_var name='virus_lover'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="spam_lover">{tmpl_var name='spam_lover_txt'}</label>
- <select name="spam_lover" id="spam_lover" class="selectInput formLengthBool">
- {tmpl_var name='spam_lover'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="banned_files_lover">{tmpl_var name='banned_files_lover_txt'}</label>
- <select name="banned_files_lover" id="banned_files_lover" class="selectInput formLengthBool">
- {tmpl_var name='banned_files_lover'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="bad_header_lover">{tmpl_var name='bad_header_lover_txt'}</label>
- <select name="bad_header_lover" id="bad_header_lover" class="selectInput formLengthBool">
- {tmpl_var name='bad_header_lover'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="bypass_virus_checks">{tmpl_var name='bypass_virus_checks_txt'}</label>
- <select name="bypass_virus_checks" id="bypass_virus_checks" class="selectInput formLengthBool">
- {tmpl_var name='bypass_virus_checks'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="bypass_banned_checks">{tmpl_var name='bypass_banned_checks_txt'}</label>
- <select name="bypass_banned_checks" id="bypass_banned_checks" class="selectInput formLengthBool">
- {tmpl_var name='bypass_banned_checks'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="bypass_header_checks">{tmpl_var name='bypass_header_checks_txt'}</label>
- <select name="bypass_header_checks" id="bypass_header_checks" class="selectInput formLengthBool">
- {tmpl_var name='bypass_header_checks'}
- </select>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_policy_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_policy_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_policy">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="policy_name">{tmpl_var name='policy_name_txt'}</label>
+ <input name="policy_name" id="policy_name" value="{tmpl_var name='policy_name'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="virus_lover">{tmpl_var name='virus_lover_txt'}</label>
+ <select name="virus_lover" id="virus_lover" class="selectInput formLengthBool">
+ {tmpl_var name='virus_lover'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_lover">{tmpl_var name='spam_lover_txt'}</label>
+ <select name="spam_lover" id="spam_lover" class="selectInput formLengthBool">
+ {tmpl_var name='spam_lover'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="banned_files_lover">{tmpl_var name='banned_files_lover_txt'}</label>
+ <select name="banned_files_lover" id="banned_files_lover" class="selectInput formLengthBool">
+ {tmpl_var name='banned_files_lover'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="bad_header_lover">{tmpl_var name='bad_header_lover_txt'}</label>
+ <select name="bad_header_lover" id="bad_header_lover" class="selectInput formLengthBool">
+ {tmpl_var name='bad_header_lover'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="bypass_virus_checks">{tmpl_var name='bypass_virus_checks_txt'}</label>
+ <select name="bypass_virus_checks" id="bypass_virus_checks" class="selectInput formLengthBool">
+ {tmpl_var name='bypass_virus_checks'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="bypass_banned_checks">{tmpl_var name='bypass_banned_checks_txt'}</label>
+ <select name="bypass_banned_checks" id="bypass_banned_checks" class="selectInput formLengthBool">
+ {tmpl_var name='bypass_banned_checks'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="bypass_header_checks">{tmpl_var name='bypass_header_checks_txt'}</label>
+ <select name="bypass_header_checks" id="bypass_header_checks" class="selectInput formLengthBool">
+ {tmpl_var name='bypass_header_checks'}
+ </select>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_policy_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_policy_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_quarantine_edit.htm b/interface/web/mail/templates/spamfilter_quarantine_edit.htm
index de33b33..565ec84 100644
--- a/interface/web/mail/templates/spamfilter_quarantine_edit.htm
+++ b/interface/web/mail/templates/spamfilter_quarantine_edit.htm
@@ -1,44 +1,44 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_policy">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="virus_quarantine_to">{tmpl_var name='virus_quarantine_to_txt'}</label>
- <input name="virus_quarantine_to" id="virus_quarantine_to" value="{tmpl_var name='virus_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="spam_quarantine_to">{tmpl_var name='spam_quarantine_to_txt'}</label>
- <input name="spam_quarantine_to" id="spam_quarantine_to" value="{tmpl_var name='spam_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="banned_quarantine_to">{tmpl_var name='banned_quarantine_to_txt'}</label>
- <input name="banned_quarantine_to" id="banned_quarantine_to" value="{tmpl_var name='banned_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="bad_header_quarantine_to">{tmpl_var name='bad_header_quarantine_to_txt'}</label>
- <input name="bad_header_quarantine_to" id="bad_header_quarantine_to" value="{tmpl_var name='bad_header_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
-<!--
- <div class="ctrlHolder">
- <label for="clean_quarantine_to">{tmpl_var name='clean_quarantine_to_txt'}</label>
- <input name="clean_quarantine_to" id="clean_quarantine_to" value="{tmpl_var name='clean_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="other_quarantine_to">{tmpl_var name='other_quarantine_to_txt'}</label>
- <input name="other_quarantine_to" id="other_quarantine_to" value="{tmpl_var name='other_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
--->
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_policy_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_policy_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_policy">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="virus_quarantine_to">{tmpl_var name='virus_quarantine_to_txt'}</label>
+ <input name="virus_quarantine_to" id="virus_quarantine_to" value="{tmpl_var name='virus_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_quarantine_to">{tmpl_var name='spam_quarantine_to_txt'}</label>
+ <input name="spam_quarantine_to" id="spam_quarantine_to" value="{tmpl_var name='spam_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="banned_quarantine_to">{tmpl_var name='banned_quarantine_to_txt'}</label>
+ <input name="banned_quarantine_to" id="banned_quarantine_to" value="{tmpl_var name='banned_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="bad_header_quarantine_to">{tmpl_var name='bad_header_quarantine_to_txt'}</label>
+ <input name="bad_header_quarantine_to" id="bad_header_quarantine_to" value="{tmpl_var name='bad_header_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+<!--
+ <div class="ctrlHolder">
+ <label for="clean_quarantine_to">{tmpl_var name='clean_quarantine_to_txt'}</label>
+ <input name="clean_quarantine_to" id="clean_quarantine_to" value="{tmpl_var name='clean_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="other_quarantine_to">{tmpl_var name='other_quarantine_to_txt'}</label>
+ <input name="other_quarantine_to" id="other_quarantine_to" value="{tmpl_var name='other_quarantine_to'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+-->
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_policy_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_policy_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_taglevel_edit.htm b/interface/web/mail/templates/spamfilter_taglevel_edit.htm
index aef98d3..e111a24 100644
--- a/interface/web/mail/templates/spamfilter_taglevel_edit.htm
+++ b/interface/web/mail/templates/spamfilter_taglevel_edit.htm
@@ -1,52 +1,52 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_policy">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="spam_tag_level">{tmpl_var name='spam_tag_level_txt'}</label>
- <input name="spam_tag_level" id="spam_tag_level" value="{tmpl_var name='spam_tag_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="spam_tag2_level">{tmpl_var name='spam_tag2_level_txt'}</label>
- <input name="spam_tag2_level" id="spam_tag2_level" value="{tmpl_var name='spam_tag2_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="spam_kill_level">{tmpl_var name='spam_kill_level_txt'}</label>
- <input name="spam_kill_level" id="spam_kill_level" value="{tmpl_var name='spam_kill_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="spam_dsn_cutoff_level">{tmpl_var name='spam_dsn_cutoff_level_txt'}</label>
- <input name="spam_dsn_cutoff_level" id="spam_dsn_cutoff_level" value="{tmpl_var name='spam_dsn_cutoff_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="spam_quarantine_cutoff_level">{tmpl_var name='spam_quarantine_cutoff_level_txt'}</label>
- <input name="spam_quarantine_cutoff_level" id="spam_quarantine_cutoff_level" value="{tmpl_var name='spam_quarantine_cutoff_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
- </div>
- <div class="ctrlHolder">
- <label for="spam_modifies_subj">{tmpl_var name='spam_modifies_subj_txt'}</label>
- <select name="spam_modifies_subj" id="spam_modifies_subj" class="selectInput formLengthBool">
- {tmpl_var name='spam_modifies_subj'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="spam_subject_tag">{tmpl_var name='spam_subject_tag_txt'}</label>
- <input name="spam_subject_tag" id="spam_subject_tag" value="{tmpl_var name='spam_subject_tag'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="spam_subject_tag2">{tmpl_var name='spam_subject_tag2_txt'}</label>
- <input name="spam_subject_tag2" id="spam_subject_tag2" value="{tmpl_var name='spam_subject_tag2'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_policy_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_policy_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_policy">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="spam_tag_level">{tmpl_var name='spam_tag_level_txt'}</label>
+ <input name="spam_tag_level" id="spam_tag_level" value="{tmpl_var name='spam_tag_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_tag2_level">{tmpl_var name='spam_tag2_level_txt'}</label>
+ <input name="spam_tag2_level" id="spam_tag2_level" value="{tmpl_var name='spam_tag2_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_kill_level">{tmpl_var name='spam_kill_level_txt'}</label>
+ <input name="spam_kill_level" id="spam_kill_level" value="{tmpl_var name='spam_kill_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_dsn_cutoff_level">{tmpl_var name='spam_dsn_cutoff_level_txt'}</label>
+ <input name="spam_dsn_cutoff_level" id="spam_dsn_cutoff_level" value="{tmpl_var name='spam_dsn_cutoff_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_quarantine_cutoff_level">{tmpl_var name='spam_quarantine_cutoff_level_txt'}</label>
+ <input name="spam_quarantine_cutoff_level" id="spam_quarantine_cutoff_level" value="{tmpl_var name='spam_quarantine_cutoff_level'}" size="10" maxlength="255" type="text" class="textInput formLengthLimit" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_modifies_subj">{tmpl_var name='spam_modifies_subj_txt'}</label>
+ <select name="spam_modifies_subj" id="spam_modifies_subj" class="selectInput formLengthBool">
+ {tmpl_var name='spam_modifies_subj'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_subject_tag">{tmpl_var name='spam_subject_tag_txt'}</label>
+ <input name="spam_subject_tag" id="spam_subject_tag" value="{tmpl_var name='spam_subject_tag'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="spam_subject_tag2">{tmpl_var name='spam_subject_tag2_txt'}</label>
+ <input name="spam_subject_tag2" id="spam_subject_tag2" value="{tmpl_var name='spam_subject_tag2'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_policy_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_policy_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_users_edit.htm b/interface/web/mail/templates/spamfilter_users_edit.htm
index 01d5699..86520a5 100644
--- a/interface/web/mail/templates/spamfilter_users_edit.htm
+++ b/interface/web/mail/templates/spamfilter_users_edit.htm
@@ -1,50 +1,50 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_users">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="priority">{tmpl_var name='priority_txt'}</label>
- <select name="priority" id="priority" class="selectInput formLengthLimit">
- {tmpl_var name='priority'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="policy_id">{tmpl_var name='policy_id_txt'}</label>
- <select name="policy_id" id="policy_id" class="selectInput">
- {tmpl_var name='policy_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="email">{tmpl_var name='email_txt'}</label>
- <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="fullname">{tmpl_var name='fullname_txt'}</label>
- <input name="fullname" id="fullname" value="{tmpl_var name='fullname'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="local">{tmpl_var name='local_txt'}</label>
- <select name="local" id="local" class="selectInput formLengthBool">
- {tmpl_var name='local'}
- </select>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_users_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_users_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_users">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="priority">{tmpl_var name='priority_txt'}</label>
+ <select name="priority" id="priority" class="selectInput formLengthLimit">
+ {tmpl_var name='priority'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="policy_id">{tmpl_var name='policy_id_txt'}</label>
+ <select name="policy_id" id="policy_id" class="selectInput">
+ {tmpl_var name='policy_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="email">{tmpl_var name='email_txt'}</label>
+ <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="fullname">{tmpl_var name='fullname_txt'}</label>
+ <input name="fullname" id="fullname" value="{tmpl_var name='fullname'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="local">{tmpl_var name='local_txt'}</label>
+ <select name="local" id="local" class="selectInput formLengthBool">
+ {tmpl_var name='local'}
+ </select>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_users_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_users_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/mail/templates/spamfilter_whitelist_edit.htm b/interface/web/mail/templates/spamfilter_whitelist_edit.htm
index 3ef8f5f..138364b 100644
--- a/interface/web/mail/templates/spamfilter_whitelist_edit.htm
+++ b/interface/web/mail/templates/spamfilter_whitelist_edit.htm
@@ -1,49 +1,49 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_spamfilter_whitelist">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
-<!--
- <div class="ctrlHolder">
- <label for="server_id">{tmpl_var name='server_id_txt'}</label>
- <select name="server_id" id="server_id" class="selectInput">
- {tmpl_var name='server_id'}
- </select>
- </div>
--->
- <div class="ctrlHolder">
- <label for="rid">{tmpl_var name='rid_txt'}</label>
- <select name="rid" id="rid" class="selectInput">
- {tmpl_var name='rid'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="email">{tmpl_var name='email_txt'}</label>
- <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="priority">{tmpl_var name='priority_txt'}</label>
- <select name="priority" id="priority" class="selectInput formLengthHalf">
- {tmpl_var name='priority'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
- <input type="hidden" name="wb" value="{tmpl_var name='wb'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_whitelist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_whitelist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_spamfilter_whitelist">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+<!--
+ <div class="ctrlHolder">
+ <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+ <select name="server_id" id="server_id" class="selectInput">
+ {tmpl_var name='server_id'}
+ </select>
+ </div>
+-->
+ <div class="ctrlHolder">
+ <label for="rid">{tmpl_var name='rid_txt'}</label>
+ <select name="rid" id="rid" class="selectInput">
+ {tmpl_var name='rid'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="email">{tmpl_var name='email_txt'}</label>
+ <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="priority">{tmpl_var name='priority_txt'}</label>
+ <select name="priority" id="priority" class="selectInput formLengthHalf">
+ {tmpl_var name='priority'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+ <input type="hidden" name="wb" value="{tmpl_var name='wb'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','mail/spamfilter_whitelist_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('mail/spamfilter_whitelist_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/monitor/lib/admin.conf.php b/interface/web/monitor/lib/admin.conf.php
index a45d440..67c94a5 100644
--- a/interface/web/monitor/lib/admin.conf.php
+++ b/interface/web/monitor/lib/admin.conf.php
@@ -1,2 +1,2 @@
-<?php
+<?php
?>
\ No newline at end of file
diff --git a/interface/web/monitor/templates/datalog_list.htm b/interface/web/monitor/templates/datalog_list.htm
index 93eede0..0ddba82 100644
--- a/interface/web/monitor/templates/datalog_list.htm
+++ b/interface/web/monitor/templates/datalog_list.htm
@@ -1,49 +1,49 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_list_datalog">
-
- <div class="pnl_listarea">
- <fieldset><legend><tmpl_var name="list_head_txt"></legend>
- <table class="list">
- <thead>
- <tr>
- <th class="tbl_col_tstamp" scope="col"><tmpl_var name="tstamp_txt"></th>
- <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
- <th class="tbl_col_action" scope="col"><tmpl_var name="action_txt"></th>
- <th class="tbl_col_dbtable" scope="col"><tmpl_var name="dbtable_txt"></th>
- <th class="tbl_col_buttons" scope="col"> </th>
- </tr>
- <tr>
- <td class="tbl_col_tstamp"> </td>
- <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','monitor/datalog_list.php');">{tmpl_var name='search_server_id'}</select></td>
- <td class="tbl_col_action"><select name="search_action" onChange="submitForm('pageForm','monitor/datalog_list.php');">{tmpl_var name='search_action'}</select></td>
- <td class="tbl_col_dbtable"><input type="text" name="search_dbtable" value="{tmpl_var name='search_dbtable'}" /></td>
- <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','monitor/datalog_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
- </tr>
- </thead>
- <tbody>
- <tmpl_loop name="records">
- <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_tstamp">{tmpl_var name="tstamp"}</td>
- <td class="tbl_col_server_id">{tmpl_var name="server_id"}</td>
- <td class="tbl_col_action">{tmpl_var name="action"}</td>
- <td class="tbl_col_dbtable">{tmpl_var name="dbtable"}</td>
- <td class="tbl_col_buttons">
- <div class="buttons icons16">
- <!--<a class="icons16 icoDelete" href="javascript: del_record('monitor/datalog_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a> -->
- </div>
- </td>
- </tr>
- </tmpl_loop>
- </tbody>
- <tfoot>
- <tr>
- <td class="tbl_footer tbl_paging" colspan="5"><tmpl_var name="paging"></td>
- </tr>
- </tfoot>
- </table>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_list_datalog">
+
+ <div class="pnl_listarea">
+ <fieldset><legend><tmpl_var name="list_head_txt"></legend>
+ <table class="list">
+ <thead>
+ <tr>
+ <th class="tbl_col_tstamp" scope="col"><tmpl_var name="tstamp_txt"></th>
+ <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
+ <th class="tbl_col_action" scope="col"><tmpl_var name="action_txt"></th>
+ <th class="tbl_col_dbtable" scope="col"><tmpl_var name="dbtable_txt"></th>
+ <th class="tbl_col_buttons" scope="col"> </th>
+ </tr>
+ <tr>
+ <td class="tbl_col_tstamp"> </td>
+ <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','monitor/datalog_list.php');">{tmpl_var name='search_server_id'}</select></td>
+ <td class="tbl_col_action"><select name="search_action" onChange="submitForm('pageForm','monitor/datalog_list.php');">{tmpl_var name='search_action'}</select></td>
+ <td class="tbl_col_dbtable"><input type="text" name="search_dbtable" value="{tmpl_var name='search_dbtable'}" /></td>
+ <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','monitor/datalog_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
+ </tr>
+ </thead>
+ <tbody>
+ <tmpl_loop name="records">
+ <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+ <td class="tbl_col_tstamp">{tmpl_var name="tstamp"}</td>
+ <td class="tbl_col_server_id">{tmpl_var name="server_id"}</td>
+ <td class="tbl_col_action">{tmpl_var name="action"}</td>
+ <td class="tbl_col_dbtable">{tmpl_var name="dbtable"}</td>
+ <td class="tbl_col_buttons">
+ <div class="buttons icons16">
+ <!--<a class="icons16 icoDelete" href="javascript: del_record('monitor/datalog_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a> -->
+ </div>
+ </td>
+ </tr>
+ </tmpl_loop>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td class="tbl_footer tbl_paging" colspan="5"><tmpl_var name="paging"></td>
+ </tr>
+ </tfoot>
+ </table>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/monitor/templates/show_data.htm b/interface/web/monitor/templates/show_data.htm
index f83440f..96ac62d 100644
--- a/interface/web/monitor/templates/show_data.htm
+++ b/interface/web/monitor/templates/show_data.htm
@@ -1,12 +1,12 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_system">
-
- <div class="pnl_formarea">
- <fieldset><legend><tmpl_var name="monTransDate"><tmpl_var name="time"></legend>
- <div class="systemmonitor"><tmpl_var name="output"></div>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_system">
+
+ <div class="pnl_formarea">
+ <fieldset><legend><tmpl_var name="monTransDate"><tmpl_var name="time"></legend>
+ <div class="systemmonitor"><tmpl_var name="output"></div>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/monitor/templates/show_log.htm b/interface/web/monitor/templates/show_log.htm
index b607727..3b7be6d 100644
--- a/interface/web/monitor/templates/show_log.htm
+++ b/interface/web/monitor/templates/show_log.htm
@@ -1,25 +1,25 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_logview">
-
- <div class="pnl_toolsarea">
- <fieldset class="inlineLabels"><legend><tmpl_var name="monTransRefreshsq"></legend>
- <div class="buttons">
- <div class="ctrlHolder">
- <label for="refreshinterval">{tmpl_var name='refreshinterval_txt'}</label>
- <select name="refreshinterval" id="refreshinterval" class="selectInput withicons" onChange="loadContentRefresh('monitor/show_log.php?log={tmpl_var name="log_id"}')">
- {tmpl_var name='refresh'}
- </select>
- </div>
- </div>
- </fieldset>
- </div>
-
- <div class="pnl_formarea">
- <fieldset><legend><tmpl_var name="monTransDate"><tmpl_var name="time"></legend>
- <div class="codeview"><tmpl_var name="log_data"></div>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_logview">
+
+ <div class="pnl_toolsarea">
+ <fieldset class="inlineLabels"><legend><tmpl_var name="monTransRefreshsq"></legend>
+ <div class="buttons">
+ <div class="ctrlHolder">
+ <label for="refreshinterval">{tmpl_var name='refreshinterval_txt'}</label>
+ <select name="refreshinterval" id="refreshinterval" class="selectInput withicons" onChange="loadContentRefresh('monitor/show_log.php?log={tmpl_var name="log_id"}')">
+ {tmpl_var name='refresh'}
+ </select>
+ </div>
+ </div>
+ </fieldset>
+ </div>
+
+ <div class="pnl_formarea">
+ <fieldset><legend><tmpl_var name="monTransDate"><tmpl_var name="time"></legend>
+ <div class="codeview"><tmpl_var name="log_data"></div>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/monitor/templates/show_sys_state.htm b/interface/web/monitor/templates/show_sys_state.htm
index 904361c..9941738 100644
--- a/interface/web/monitor/templates/show_sys_state.htm
+++ b/interface/web/monitor/templates/show_sys_state.htm
@@ -1,25 +1,25 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_sys_state">
-
- <div class="pnl_toolsarea">
- <fieldset class="inlineLabels"><legend><tmpl_var name="monTransRefreshsq"></legend>
- <div class="buttons">
- <div class="ctrlHolder">
- <label for="refreshinterval">{tmpl_var name='refreshinterval_txt'}</label>
- <select name="refreshinterval" id="refreshinterval" class="selectInput withicons" onChange="loadContentRefresh('monitor/show_sys_state.php?state={tmpl_var name="state_type"}')">
- {tmpl_var name='refresh'}
- </select>
- </div>
- </div>
- </fieldset>
- </div>
-
- <div class="pnl_formarea">
- <fieldset><legend></legend>
- <div class="stateview"><tmpl_var name="state_data"></div>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_sys_state">
+
+ <div class="pnl_toolsarea">
+ <fieldset class="inlineLabels"><legend><tmpl_var name="monTransRefreshsq"></legend>
+ <div class="buttons">
+ <div class="ctrlHolder">
+ <label for="refreshinterval">{tmpl_var name='refreshinterval_txt'}</label>
+ <select name="refreshinterval" id="refreshinterval" class="selectInput withicons" onChange="loadContentRefresh('monitor/show_sys_state.php?state={tmpl_var name="state_type"}')">
+ {tmpl_var name='refresh'}
+ </select>
+ </div>
+ </div>
+ </fieldset>
+ </div>
+
+ <div class="pnl_formarea">
+ <fieldset><legend></legend>
+ <div class="stateview"><tmpl_var name="state_data"></div>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/monitor/templates/syslog_list.htm b/interface/web/monitor/templates/syslog_list.htm
index 0bbb03c..5f87c79 100644
--- a/interface/web/monitor/templates/syslog_list.htm
+++ b/interface/web/monitor/templates/syslog_list.htm
@@ -1,56 +1,56 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_list_syslog">
-
- <div class="pnl_listarea">
- <fieldset><legend><tmpl_var name="list_head_txt"></legend>
- <table class="list">
- <thead>
- <tr>
- <th class="tbl_col_tstamp" scope="col"><tmpl_var name="tstamp_txt"></th>
- <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
- <th class="tbl_col_loglevel" scope="col"><tmpl_var name="loglevel_txt"></th>
- <th class="tbl_col_message" scope="col"><tmpl_var name="message_txt"></th>
- <th class="tbl_col_buttons" scope="col"> </th>
- </tr>
- <tr>
- <td class="tbl_col_tstamp"> </td>
- <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','monitor/log_list.php');">{tmpl_var name='search_server_id'}</select></td>
- <td class="tbl_col_loglevel"><select name="search_loglevel" onChange="submitForm('pageForm','monitor/log_list.php');">{tmpl_var name='search_loglevel'}</select></td>
- <td class="tbl_col_message"><input type="text" name="search_message" value="{tmpl_var name='search_message'}" /></td>
- <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','monitor/log_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
- </tr>
- </thead>
- <tbody>
- <tmpl_loop name="records">
- <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_tstamp">{tmpl_var name="tstamp"}</td>
- <td class="tbl_col_server_id">{tmpl_var name="server_id"}</td>
- <td class="tbl_col_loglevel">{tmpl_var name="loglevel"}</td>
- <td class="tbl_col_message">{tmpl_var name="message"}</td>
- <td class="tbl_col_buttons">
- <tmpl_if name="loglevel" op="==" value="Error">
- <div class="buttons icons16">
- <a class="icons16 icoDelete" href="javascript: del_record('monitor/log_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
- </div>
- </tmpl_if>
- <tmpl_if name="loglevel" op="==" value="Warning">
- <div class="buttons icons16">
- <a class="icons16 icoDelete" href="javascript: del_record('monitor/log_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
- </div>
- </tmpl_if>
- </td>
- </tr>
- </tmpl_loop>
- </tbody>
- <tfoot>
- <tr>
- <td class="tbl_footer tbl_paging" colspan="5"><tmpl_var name="paging"></td>
- </tr>
- </tfoot>
- </table>
- </fieldset>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_list_syslog">
+
+ <div class="pnl_listarea">
+ <fieldset><legend><tmpl_var name="list_head_txt"></legend>
+ <table class="list">
+ <thead>
+ <tr>
+ <th class="tbl_col_tstamp" scope="col"><tmpl_var name="tstamp_txt"></th>
+ <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
+ <th class="tbl_col_loglevel" scope="col"><tmpl_var name="loglevel_txt"></th>
+ <th class="tbl_col_message" scope="col"><tmpl_var name="message_txt"></th>
+ <th class="tbl_col_buttons" scope="col"> </th>
+ </tr>
+ <tr>
+ <td class="tbl_col_tstamp"> </td>
+ <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','monitor/log_list.php');">{tmpl_var name='search_server_id'}</select></td>
+ <td class="tbl_col_loglevel"><select name="search_loglevel" onChange="submitForm('pageForm','monitor/log_list.php');">{tmpl_var name='search_loglevel'}</select></td>
+ <td class="tbl_col_message"><input type="text" name="search_message" value="{tmpl_var name='search_message'}" /></td>
+ <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','monitor/log_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
+ </tr>
+ </thead>
+ <tbody>
+ <tmpl_loop name="records">
+ <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+ <td class="tbl_col_tstamp">{tmpl_var name="tstamp"}</td>
+ <td class="tbl_col_server_id">{tmpl_var name="server_id"}</td>
+ <td class="tbl_col_loglevel">{tmpl_var name="loglevel"}</td>
+ <td class="tbl_col_message">{tmpl_var name="message"}</td>
+ <td class="tbl_col_buttons">
+ <tmpl_if name="loglevel" op="==" value="Error">
+ <div class="buttons icons16">
+ <a class="icons16 icoDelete" href="javascript: del_record('monitor/log_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
+ </div>
+ </tmpl_if>
+ <tmpl_if name="loglevel" op="==" value="Warning">
+ <div class="buttons icons16">
+ <a class="icons16 icoDelete" href="javascript: del_record('monitor/log_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
+ </div>
+ </tmpl_if>
+ </td>
+ </tr>
+ </tmpl_loop>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td class="tbl_footer tbl_paging" colspan="5"><tmpl_var name="paging"></td>
+ </tr>
+ </tfoot>
+ </table>
+ </fieldset>
+ </div>
+
+</div>
diff --git a/interface/web/nav.php b/interface/web/nav.php
index d563bb5..0c57adb 100644
--- a/interface/web/nav.php
+++ b/interface/web/nav.php
@@ -1,115 +1,115 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-require_once('../lib/config.inc.php');
-require_once('../lib/app.inc.php');
-
-$app->uses('tpl');
-
-//** Top Naviation
-if(isset($_GET['nav']) && $_GET['nav'] == 'top') {
-
- $app->tpl->newTemplate('topnav.tpl.htm');
-
- //* Check User Login and current module
- if(isset($_SESSION["s"]["user"]) && $_SESSION["s"]["user"]['active'] == 1 && is_array($_SESSION['s']['module'])) {
- //* Loading modules of the user and building top navigation
- $modules = explode(',', $_SESSION['s']['user']['modules']);
- /*
- * If the dashboard is in the list of modules it always has to be the first!
- */
- if (in_array('dashboard', $modules)) {
- $key = array_search('dashboard', $modules);
- unset($modules[$key]);
- $modules = array_merge(array('dashboard'), $modules);
- }
- if(is_array($modules)) {
- foreach($modules as $mt) {
- if(is_file($mt.'/lib/module.conf.php')) {
- if(!preg_match("/^[a-z]{2,20}$/i", $mt)) die('module name contains unallowed chars.');
- include_once($mt.'/lib/module.conf.php');
- $active = ($module['name'] == $_SESSION['s']['module']['name']) ? 1 : 0;
- $topnav[] = array( 'title' => $app->lng($module['title']),
- 'active' => $active,
- 'module' => $module['name']);
- }
- }
- }
- } else {
- //* Loading Login Module
- include_once('login/lib/module.conf.php');
- $_SESSION['s']['module'] = $module;
- $topnav[] = array( 'title' => 'Login',
- 'active' => 1);
- $module = null;
- unset($module);
- }
-
- //* Topnavigation
- $app->tpl->setLoop('nav_top',$topnav);
-
-}
-
-//** Side Naviation
-if(isset($_GET['nav']) && $_GET['nav'] == 'side') {
-
- if(isset($_SESSION['s']['module']['name']) && is_file($_SESSION['s']['module']['name'].'/lib/custom_menu.inc.php')) {
- include_once($_SESSION['s']['module']['name'].'/lib/custom_menu.inc.php');
- } else {
-
- $app->tpl->newTemplate('sidenav.tpl.htm');
-
- //* translating module navigation
- $nav_translated = array();
- if(isset($_SESSION['s']['module']['nav']) && is_array($_SESSION['s']['module']['nav'])) {
- foreach($_SESSION['s']['module']['nav'] as $nav) {
- $tmp_items = array();
- foreach($nav['items'] as $item) {
- $item['title'] = $app->lng($item['title']);
- $tmp_items[] = $item;
- }
- $nav['title'] = $app->lng($nav['title']);
- $nav['startpage'] = $nav['items'][0]['link'];
- $nav['items'] = $tmp_items;
- $nav_translated[] = $nav;
- }
- } else {
- $nav_translated = null;
- }
- $app->tpl->setLoop('nav_left',$nav_translated);
-
- }
-
-}
-
-$app->tpl_defaults();
-$app->tpl->pparse();
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../lib/config.inc.php');
+require_once('../lib/app.inc.php');
+
+$app->uses('tpl');
+
+//** Top Naviation
+if(isset($_GET['nav']) && $_GET['nav'] == 'top') {
+
+ $app->tpl->newTemplate('topnav.tpl.htm');
+
+ //* Check User Login and current module
+ if(isset($_SESSION["s"]["user"]) && $_SESSION["s"]["user"]['active'] == 1 && is_array($_SESSION['s']['module'])) {
+ //* Loading modules of the user and building top navigation
+ $modules = explode(',', $_SESSION['s']['user']['modules']);
+ /*
+ * If the dashboard is in the list of modules it always has to be the first!
+ */
+ if (in_array('dashboard', $modules)) {
+ $key = array_search('dashboard', $modules);
+ unset($modules[$key]);
+ $modules = array_merge(array('dashboard'), $modules);
+ }
+ if(is_array($modules)) {
+ foreach($modules as $mt) {
+ if(is_file($mt.'/lib/module.conf.php')) {
+ if(!preg_match("/^[a-z]{2,20}$/i", $mt)) die('module name contains unallowed chars.');
+ include_once($mt.'/lib/module.conf.php');
+ $active = ($module['name'] == $_SESSION['s']['module']['name']) ? 1 : 0;
+ $topnav[] = array( 'title' => $app->lng($module['title']),
+ 'active' => $active,
+ 'module' => $module['name']);
+ }
+ }
+ }
+ } else {
+ //* Loading Login Module
+ include_once('login/lib/module.conf.php');
+ $_SESSION['s']['module'] = $module;
+ $topnav[] = array( 'title' => 'Login',
+ 'active' => 1);
+ $module = null;
+ unset($module);
+ }
+
+ //* Topnavigation
+ $app->tpl->setLoop('nav_top',$topnav);
+
+}
+
+//** Side Naviation
+if(isset($_GET['nav']) && $_GET['nav'] == 'side') {
+
+ if(isset($_SESSION['s']['module']['name']) && is_file($_SESSION['s']['module']['name'].'/lib/custom_menu.inc.php')) {
+ include_once($_SESSION['s']['module']['name'].'/lib/custom_menu.inc.php');
+ } else {
+
+ $app->tpl->newTemplate('sidenav.tpl.htm');
+
+ //* translating module navigation
+ $nav_translated = array();
+ if(isset($_SESSION['s']['module']['nav']) && is_array($_SESSION['s']['module']['nav'])) {
+ foreach($_SESSION['s']['module']['nav'] as $nav) {
+ $tmp_items = array();
+ foreach($nav['items'] as $item) {
+ $item['title'] = $app->lng($item['title']);
+ $tmp_items[] = $item;
+ }
+ $nav['title'] = $app->lng($nav['title']);
+ $nav['startpage'] = $nav['items'][0]['link'];
+ $nav['items'] = $tmp_items;
+ $nav_translated[] = $nav;
+ }
+ } else {
+ $nav_translated = null;
+ }
+ $app->tpl->setLoop('nav_left',$nav_translated);
+
+ }
+
+}
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
?>
\ No newline at end of file
diff --git a/interface/web/sites/cron_del.php b/interface/web/sites/cron_del.php
index 516b447..484e507 100644
--- a/interface/web/sites/cron_del.php
+++ b/interface/web/sites/cron_del.php
@@ -1,64 +1,64 @@
-<?php
-
-/*
-Copyright (c) 2008, Till Brehm, projektfarm Gmbh
-Modified 2009, Marius Cramer, pixcept KG
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/cron.list.php";
-$tform_def_file = "form/cron.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('sites');
-
-$app->uses('tpl,tform,tform_actions');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-
- function onBeforeDelete() {
- global $app; $conf;
-
- if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
- }
-}
-
-$page = new page_action;
-$page->onDelete();
-
+<?php
+
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+Modified 2009, Marius Cramer, pixcept KG
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/cron.list.php";
+$tform_def_file = "form/cron.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('sites');
+
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+ function onBeforeDelete() {
+ global $app; $conf;
+
+ if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
+ }
+}
+
+$page = new page_action;
+$page->onDelete();
+
?>
\ No newline at end of file
diff --git a/interface/web/sites/cron_list.php b/interface/web/sites/cron_list.php
index 68e2316..dcd9a54 100644
--- a/interface/web/sites/cron_list.php
+++ b/interface/web/sites/cron_list.php
@@ -1,23 +1,23 @@
-<?php
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$list_def_file = "list/cron.list.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-//* Check permissions for module
-$app->auth->check_module_permissions('sites');
-
-$app->uses('listform_actions');
-
-$app->listform_actions->onLoad();
-
-
+<?php
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$list_def_file = "list/cron.list.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+//* Check permissions for module
+$app->auth->check_module_permissions('sites');
+
+$app->uses('listform_actions');
+
+$app->listform_actions->onLoad();
+
+
?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/admin.conf.php b/interface/web/sites/lib/admin.conf.php
index a45d440..67c94a5 100644
--- a/interface/web/sites/lib/admin.conf.php
+++ b/interface/web/sites/lib/admin.conf.php
@@ -1,2 +1,2 @@
-<?php
+<?php
?>
\ No newline at end of file
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 d076d60..a49adcd 100644
--- a/interface/web/sites/lib/lang/en_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/en_database_admin_list.lng
@@ -1,10 +1,10 @@
-<?php
-$wb["list_head_txt"] = 'Database';
-$wb["active_txt"] = 'Active';
-$wb["remote_access_txt"] = 'Remote Access';
-$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["sys_groupid_txt"] = 'Client';
+<?php
+$wb["list_head_txt"] = 'Database';
+$wb["active_txt"] = 'Active';
+$wb["remote_access_txt"] = 'Remote Access';
+$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["sys_groupid_txt"] = 'Client';
?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_user_quota_stats_list.lng b/interface/web/sites/lib/lang/en_user_quota_stats_list.lng
index 943c13b..1d42908 100644
--- a/interface/web/sites/lib/lang/en_user_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/en_user_quota_stats_list.lng
@@ -1,8 +1,8 @@
-<?php
-$wb["list_head_txt"] = 'Website harddisk quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["system_user_txt"] = 'Linux user';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
+<?php
+$wb["list_head_txt"] = 'Website harddisk quota';
+$wb["domain_txt"] = 'Domain / Website';
+$wb["system_user_txt"] = 'Linux user';
+$wb["used_txt"] = 'Used space';
+$wb["hard_txt"] = 'Hard limit';
+$wb["soft_txt"] = 'Soft limit';
?>
\ 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 3f166cf..d709cc5 100644
--- a/interface/web/sites/lib/lang/en_web_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_domain.lng
@@ -1,75 +1,75 @@
-<?php
-$wb["backup_interval_txt"] = 'Backup interval';
-$wb["backup_copies_txt"] = 'Number of backup copies';
-$wb["ssl_state_txt"] = 'State';
-$wb["ssl_locality_txt"] = 'Locality';
-$wb["ssl_organisation_txt"] = 'Organisation';
-$wb["ssl_organisation_unit_txt"] = 'Organisation Unit';
-$wb["ssl_country_txt"] = 'Country';
-$wb["ssl_request_txt"] = 'SSL Request';
-$wb["ssl_cert_txt"] = 'SSL Certificate';
-$wb["ssl_bundle_txt"] = 'SSL Bundle';
-$wb["ssl_action_txt"] = 'SSL Action';
-$wb["ssl_domain_txt"] = 'SSL Domain';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["type_txt"] = 'Type';
-$wb["parent_domain_id_txt"] = 'Parent Website';
-$wb["redirect_type_txt"] = 'Redirect Type';
-$wb["redirect_path_txt"] = 'Redirect Path';
-$wb["active_txt"] = 'Active';
-$wb["document_root_txt"] = 'Documentroot';
-$wb["system_user_txt"] = 'Linux User';
-$wb["system_group_txt"] = 'Linux Group';
-$wb["ip_address_txt"] = 'IP-Address';
-$wb["vhost_type_txt"] = 'VHost Type';
-$wb["hd_quota_txt"] = 'Harddisk Quota';
-$wb["traffic_quota_txt"] = 'Traffic Quota';
-$wb["cgi_txt"] = 'CGI';
-$wb["ssi_txt"] = 'SSI';
-$wb["errordocs_txt"] = 'Own Error-Documents';
-$wb["subdomain_txt"] = 'Auto-Subdomain';
-$wb["ssl_txt"] = 'SSL';
-$wb["suexec_txt"] = 'SuEXEC';
-$wb["php_txt"] = 'PHP';
-$wb["client_txt"] = 'Client';
-$wb["limit_web_domain_txt"] = 'The max. number of web domains for your account is reached.';
-$wb["limit_web_aliasdomain_txt"] = 'The max. number of aliasdomains for your account is reached.';
-$wb["limit_web_subdomain_txt"] = 'The max. number of web subdomains for your account is reached.';
-$wb["apache_directives_txt"] = 'Apache directives';
-$wb["domain_error_empty"] = 'Domain is empty.';
-$wb["domain_error_unique"] = 'There is already a website or sub / aliasdomain with this domain name.';
-$wb["domain_error_regex"] = 'Domain name invalid.';
-$wb["hd_quota_error_empty"] = 'Harddisk quota is 0 or empty.';
-$wb["traffic_quota_error_empty"] = 'Traffic quota is empty.';
-$wb["error_ssl_state_empty"] = 'SSL State is empty.';
-$wb["error_ssl_locality_empty"] = 'SSL Locality is empty.';
-$wb["error_ssl_organisation_empty"] = 'SSL Organisation is empty.';
-$wb["error_ssl_organisation_unit_empty"] = 'SSL Organisation Unit is empty.';
-$wb["error_ssl_country_empty"] = 'SSL Country is empty.';
-$wb["error_ssl_cert_empty"] = 'SSL Certificate field is empty';
-$wb["client_group_id_txt"] = 'Client';
-$wb["stats_password_txt"] = 'Webstatistics password';
-$wb["allow_override_txt"] = 'Apache AllowOverride';
-$wb["limit_web_quota_free_txt"] = 'Max. available Harddisk Quota';
-$wb["ssl_state_error_regex"] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
-$wb["ssl_locality_error_regex"] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
-$wb["ssl_organisation_error_regex"] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
-$wb["ssl_organistaion_unit_error_regex"] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
-$wb["ssl_country_error_regex"] = 'Invalid SSL Country. Valid characters are: A-Z';
-$wb["limit_traffic_quota_free_txt"] = 'Max. available Traffic Quota';
-$wb["redirect_error_regex"] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
-$wb["php_open_basedir_txt"] = 'PHP open_basedir';
-$wb["traffic_quota_exceeded_txt"] = 'Traffic quota exceeded';
-$wb["ruby_txt"] = 'Ruby';
-$wb["stats_user_txt"] = 'Webstatistics username';
-$wb["stats_type_txt"] = 'Webstatistics program';
-$wb["custom_php_ini_txt"] = 'Custom php.ini settings';
-$wb['none_txt'] = 'None';
-$wb['disabled_txt'] = 'Disabled';
-$wb['no_redirect_txt'] = 'No redirect';
-$wb['no_flag_txt'] = 'No flag';
-$wb['save_certificate_txt'] = 'Save certificate';
-$wb['create_certificate_txt'] = 'Create certificate';
-$wb['delete_certificate_txt'] = 'Delete certificate';
+<?php
+$wb["backup_interval_txt"] = 'Backup interval';
+$wb["backup_copies_txt"] = 'Number of backup copies';
+$wb["ssl_state_txt"] = 'State';
+$wb["ssl_locality_txt"] = 'Locality';
+$wb["ssl_organisation_txt"] = 'Organisation';
+$wb["ssl_organisation_unit_txt"] = 'Organisation Unit';
+$wb["ssl_country_txt"] = 'Country';
+$wb["ssl_request_txt"] = 'SSL Request';
+$wb["ssl_cert_txt"] = 'SSL Certificate';
+$wb["ssl_bundle_txt"] = 'SSL Bundle';
+$wb["ssl_action_txt"] = 'SSL Action';
+$wb["ssl_domain_txt"] = 'SSL Domain';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["type_txt"] = 'Type';
+$wb["parent_domain_id_txt"] = 'Parent Website';
+$wb["redirect_type_txt"] = 'Redirect Type';
+$wb["redirect_path_txt"] = 'Redirect Path';
+$wb["active_txt"] = 'Active';
+$wb["document_root_txt"] = 'Documentroot';
+$wb["system_user_txt"] = 'Linux User';
+$wb["system_group_txt"] = 'Linux Group';
+$wb["ip_address_txt"] = 'IP-Address';
+$wb["vhost_type_txt"] = 'VHost Type';
+$wb["hd_quota_txt"] = 'Harddisk Quota';
+$wb["traffic_quota_txt"] = 'Traffic Quota';
+$wb["cgi_txt"] = 'CGI';
+$wb["ssi_txt"] = 'SSI';
+$wb["errordocs_txt"] = 'Own Error-Documents';
+$wb["subdomain_txt"] = 'Auto-Subdomain';
+$wb["ssl_txt"] = 'SSL';
+$wb["suexec_txt"] = 'SuEXEC';
+$wb["php_txt"] = 'PHP';
+$wb["client_txt"] = 'Client';
+$wb["limit_web_domain_txt"] = 'The max. number of web domains for your account is reached.';
+$wb["limit_web_aliasdomain_txt"] = 'The max. number of aliasdomains for your account is reached.';
+$wb["limit_web_subdomain_txt"] = 'The max. number of web subdomains for your account is reached.';
+$wb["apache_directives_txt"] = 'Apache directives';
+$wb["domain_error_empty"] = 'Domain is empty.';
+$wb["domain_error_unique"] = 'There is already a website or sub / aliasdomain with this domain name.';
+$wb["domain_error_regex"] = 'Domain name invalid.';
+$wb["hd_quota_error_empty"] = 'Harddisk quota is 0 or empty.';
+$wb["traffic_quota_error_empty"] = 'Traffic quota is empty.';
+$wb["error_ssl_state_empty"] = 'SSL State is empty.';
+$wb["error_ssl_locality_empty"] = 'SSL Locality is empty.';
+$wb["error_ssl_organisation_empty"] = 'SSL Organisation is empty.';
+$wb["error_ssl_organisation_unit_empty"] = 'SSL Organisation Unit is empty.';
+$wb["error_ssl_country_empty"] = 'SSL Country is empty.';
+$wb["error_ssl_cert_empty"] = 'SSL Certificate field is empty';
+$wb["client_group_id_txt"] = 'Client';
+$wb["stats_password_txt"] = 'Webstatistics password';
+$wb["allow_override_txt"] = 'Apache AllowOverride';
+$wb["limit_web_quota_free_txt"] = 'Max. available Harddisk Quota';
+$wb["ssl_state_error_regex"] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
+$wb["ssl_locality_error_regex"] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
+$wb["ssl_organisation_error_regex"] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
+$wb["ssl_organistaion_unit_error_regex"] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
+$wb["ssl_country_error_regex"] = 'Invalid SSL Country. Valid characters are: A-Z';
+$wb["limit_traffic_quota_free_txt"] = 'Max. available Traffic Quota';
+$wb["redirect_error_regex"] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
+$wb["php_open_basedir_txt"] = 'PHP open_basedir';
+$wb["traffic_quota_exceeded_txt"] = 'Traffic quota exceeded';
+$wb["ruby_txt"] = 'Ruby';
+$wb["stats_user_txt"] = 'Webstatistics username';
+$wb["stats_type_txt"] = 'Webstatistics program';
+$wb["custom_php_ini_txt"] = 'Custom php.ini settings';
+$wb['none_txt'] = 'None';
+$wb['disabled_txt'] = 'Disabled';
+$wb['no_redirect_txt'] = 'No redirect';
+$wb['no_flag_txt'] = 'No flag';
+$wb['save_certificate_txt'] = 'Save certificate';
+$wb['create_certificate_txt'] = 'Create certificate';
+$wb['delete_certificate_txt'] = 'Delete certificate';
?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_web_domain_admin_list.lng b/interface/web/sites/lib/lang/en_web_domain_admin_list.lng
index f8b37f4..e8825ae 100644
--- a/interface/web/sites/lib/lang/en_web_domain_admin_list.lng
+++ b/interface/web/sites/lib/lang/en_web_domain_admin_list.lng
@@ -1,9 +1,9 @@
-<?php
-$wb["sys_groupid_txt"] = 'Client';
-$wb["list_head_txt"] = 'Websites';
-$wb["domain_id_txt"] = 'ID';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["add_new_record_txt"] = 'Add new website';
+<?php
+$wb["sys_groupid_txt"] = 'Client';
+$wb["list_head_txt"] = 'Websites';
+$wb["domain_id_txt"] = 'ID';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["add_new_record_txt"] = 'Add new website';
?>
\ No newline at end of file
diff --git a/interface/web/sites/templates/cron_edit.htm b/interface/web/sites/templates/cron_edit.htm
index 39f9bc6..bebccbf 100644
--- a/interface/web/sites/templates/cron_edit.htm
+++ b/interface/web/sites/templates/cron_edit.htm
@@ -1,68 +1,68 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_cron">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels"><legend>Cron Job</legend>
- <div class="ctrlHolder">
- <tmpl_if name="edit_disabled">
- <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
- <select name="parent_domain_id" id="parent_domain_id" class="selectInput" disabled="disabled">
- {tmpl_var name='parent_domain_id'}
- </select>
- <input type="hidden" name="parent_domain_id" value="{tmpl_var name='parent_domain_id_value'}" />
- <tmpl_else>
- <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
- <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
- {tmpl_var name='parent_domain_id'}
- </select>
- </tmpl_if>
- </div>
- <div class="ctrlHolder">
- <label for="run_min">{tmpl_var name='run_min_txt'}</label>
- <input name="run_min" id="run_min" value="{tmpl_var name='run_min'}" size="10" maxlength="255" type="text" class="textInput" />
- <p class="formHint">e.g. *, */3, 10-20</p>
- </div>
- <div class="ctrlHolder">
- <label for="run_hour">{tmpl_var name='run_hour_txt'}</label>
- <input name="run_hour" id="run_hour" value="{tmpl_var name='run_hour'}" size="10" maxlength="255" type="text" class="textInput" />
- <p class="formHint">e.g. *, */2, 0, 10-12</p>
- </div>
- <div class="ctrlHolder">
- <label for="run_mday">{tmpl_var name='run_mday_txt'}</label>
- <input name="run_mday" id="run_mday" value="{tmpl_var name='run_mday'}" size="10" maxlength="255" type="text" class="textInput" />
- <p class="formHint">e.g. *, */4, 1-5</p>
- </div>
- <div class="ctrlHolder">
- <label for="run_month">{tmpl_var name='run_month_txt'}</label>
- <input name="run_month" id="run_month" value="{tmpl_var name='run_month'}" size="10" maxlength="255" type="text" class="textInput" />
- <p class="formHint">e.g. *, 1-6</p>
- </div>
- <div class="ctrlHolder">
- <label for="run_wday">{tmpl_var name='run_wday_txt'}</label>
- <input name="run_wday" id="run_wday" value="{tmpl_var name='run_wday'}" size="10" maxlength="255" type="text" class="textInput" />
- <p class="formHint">e.g. *, 0, 1-5</p>
- </div>
- <div class="ctrlHolder">
- <label for="command">{tmpl_var name='command_txt'}</label>
- <input name="command" id="command" value="{tmpl_var name='command'}" size="30" maxlength="255" type="text" class="textInput" />
- <p class="formHint">e.g. /var/www/clients/client1/myscript.sh or http://www.mydomain.com/path/script.php</p>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/cron_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/cron_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_cron">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels"><legend>Cron Job</legend>
+ <div class="ctrlHolder">
+ <tmpl_if name="edit_disabled">
+ <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
+ <select name="parent_domain_id" id="parent_domain_id" class="selectInput" disabled="disabled">
+ {tmpl_var name='parent_domain_id'}
+ </select>
+ <input type="hidden" name="parent_domain_id" value="{tmpl_var name='parent_domain_id_value'}" />
+ <tmpl_else>
+ <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
+ <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
+ {tmpl_var name='parent_domain_id'}
+ </select>
+ </tmpl_if>
+ </div>
+ <div class="ctrlHolder">
+ <label for="run_min">{tmpl_var name='run_min_txt'}</label>
+ <input name="run_min" id="run_min" value="{tmpl_var name='run_min'}" size="10" maxlength="255" type="text" class="textInput" />
+ <p class="formHint">e.g. *, */3, 10-20</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="run_hour">{tmpl_var name='run_hour_txt'}</label>
+ <input name="run_hour" id="run_hour" value="{tmpl_var name='run_hour'}" size="10" maxlength="255" type="text" class="textInput" />
+ <p class="formHint">e.g. *, */2, 0, 10-12</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="run_mday">{tmpl_var name='run_mday_txt'}</label>
+ <input name="run_mday" id="run_mday" value="{tmpl_var name='run_mday'}" size="10" maxlength="255" type="text" class="textInput" />
+ <p class="formHint">e.g. *, */4, 1-5</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="run_month">{tmpl_var name='run_month_txt'}</label>
+ <input name="run_month" id="run_month" value="{tmpl_var name='run_month'}" size="10" maxlength="255" type="text" class="textInput" />
+ <p class="formHint">e.g. *, 1-6</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="run_wday">{tmpl_var name='run_wday_txt'}</label>
+ <input name="run_wday" id="run_wday" value="{tmpl_var name='run_wday'}" size="10" maxlength="255" type="text" class="textInput" />
+ <p class="formHint">e.g. *, 0, 1-5</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="command">{tmpl_var name='command_txt'}</label>
+ <input name="command" id="command" value="{tmpl_var name='command'}" size="30" maxlength="255" type="text" class="textInput" />
+ <p class="formHint">e.g. /var/www/clients/client1/myscript.sh or http://www.mydomain.com/path/script.php</p>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/cron_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/cron_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/database_admin_list.htm b/interface/web/sites/templates/database_admin_list.htm
index face8e4..7cb228d 100644
--- a/interface/web/sites/templates/database_admin_list.htm
+++ b/interface/web/sites/templates/database_admin_list.htm
@@ -17,33 +17,33 @@
<table class="list">
<thead>
<tr>
- <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
- <th class="tbl_col_remote_access" scope="col"><tmpl_var name="remote_access_txt"></th>
- <th class="tbl_col_sys_groupid" scope="col"><tmpl_var name="sys_groupid_txt"></th>
- <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
- <th class="tbl_col_database_user" scope="col"><tmpl_var name="database_user_txt"></th>
- <th class="tbl_col_database_name" scope="col"><tmpl_var name="database_name_txt"></th>
+ <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
+ <th class="tbl_col_remote_access" scope="col"><tmpl_var name="remote_access_txt"></th>
+ <th class="tbl_col_sys_groupid" scope="col"><tmpl_var name="sys_groupid_txt"></th>
+ <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
+ <th class="tbl_col_database_user" scope="col"><tmpl_var name="database_user_txt"></th>
+ <th class="tbl_col_database_name" scope="col"><tmpl_var name="database_name_txt"></th>
<th class="tbl_col_buttons" scope="col"> </th>
</tr>
<tr>
- <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','sites/database_list.php');">{tmpl_var name='search_active'}</select></td>
- <td class="tbl_col_remote_access"><select name="search_remote_access" onChange="submitForm('pageForm','sites/database_list.php');">{tmpl_var name='search_remote_access'}</select></td>
- <td class="tbl_col_sys_groupid"><select name="search_sys_groupid" onChange="submitForm('pageForm','sites/database_list.php');">{tmpl_var name='search_sys_groupid'}</select></td>
- <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','sites/database_list.php');">{tmpl_var name='search_server_id'}</select></td>
- <td class="tbl_col_database_user"><input type="text" name="search_database_user" value="{tmpl_var name='search_database_user'}" /></td>
- <td class="tbl_col_database_name"><input type="text" name="search_database_name" value="{tmpl_var name='search_database_name'}" /></td>
+ <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','sites/database_list.php');">{tmpl_var name='search_active'}</select></td>
+ <td class="tbl_col_remote_access"><select name="search_remote_access" onChange="submitForm('pageForm','sites/database_list.php');">{tmpl_var name='search_remote_access'}</select></td>
+ <td class="tbl_col_sys_groupid"><select name="search_sys_groupid" onChange="submitForm('pageForm','sites/database_list.php');">{tmpl_var name='search_sys_groupid'}</select></td>
+ <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','sites/database_list.php');">{tmpl_var name='search_server_id'}</select></td>
+ <td class="tbl_col_database_user"><input type="text" name="search_database_user" value="{tmpl_var name='search_database_user'}" /></td>
+ <td class="tbl_col_database_name"><input type="text" name="search_database_name" value="{tmpl_var name='search_database_name'}" /></td>
<td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','sites/database_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
</tr>
</thead>
<tbody>
<tmpl_loop name="records">
<tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_active"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
- <td class="tbl_col_remote_access"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="remote_access"}</a></td>
- <td class="tbl_col_sys_groupid"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="sys_groupid"}</a></td>
- <td class="tbl_col_server_id"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
- <td class="tbl_col_database_user"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="database_user"}</a></td>
- <td class="tbl_col_database_name"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="database_name"}</a></td>
+ <td class="tbl_col_active"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
+ <td class="tbl_col_remote_access"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="remote_access"}</a></td>
+ <td class="tbl_col_sys_groupid"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="sys_groupid"}</a></td>
+ <td class="tbl_col_server_id"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
+ <td class="tbl_col_database_user"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="database_user"}</a></td>
+ <td class="tbl_col_database_name"><a href="#" onClick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="database_name"}</a></td>
<td class="tbl_col_buttons">
<div class="buttons icons16">
<tmpl_if name="dblist_phpmyadmin_link"><a class="icons16 icoDbAdmin" href="sites/database_phpmyadmin.php?id={tmpl_var name='id'}" target="phpmyadmin"><span>{tmpl_var name='admin_txt'}</span></a></tmpl_if>
diff --git a/interface/web/sites/templates/ftp_user_advanced.htm b/interface/web/sites/templates/ftp_user_advanced.htm
index 1520630..85e6c66 100644
--- a/interface/web/sites/templates/ftp_user_advanced.htm
+++ b/interface/web/sites/templates/ftp_user_advanced.htm
@@ -1,50 +1,50 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_ftp_user">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="uid">{tmpl_var name='uid_txt'}</label>
- <input name="uid" id="uid" value="{tmpl_var name='uid'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
- </div>
- <div class="ctrlHolder">
- <label for="gid">{tmpl_var name='gid_txt'}</label>
- <input name="gid" id="gid" value="{tmpl_var name='gid'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
- </div>
- <div class="ctrlHolder">
- <label for="dir">{tmpl_var name='dir_txt'}</label>
- <input name="dir" id="dir" value="{tmpl_var name='dir'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="quota_files">{tmpl_var name='quota_files_txt'}</label>
- <input name="quota_files" id="quota_files" value="{tmpl_var name='quota_files'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> {tmpl_var name='quota_files_unity_txt'}</p>
- </div>
- <div class="ctrlHolder">
- <label for="ul_ratio">{tmpl_var name='ul_ratio_txt'}</label>
- <input name="ul_ratio" id="ul_ratio" value="{tmpl_var name='ul_ratio'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> MB</p>
- </div>
- <div class="ctrlHolder">
- <label for="dl_ratio">{tmpl_var name='dl_ratio_txt'}</label>
- <input name="dl_ratio" id="dl_ratio" value="{tmpl_var name='dl_ratio'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> MB</p>
- </div>
- <div class="ctrlHolder">
- <label for="ul_bandwidth">{tmpl_var name='ul_bandwidth_txt'}</label>
- <input name="ul_bandwidth" id="ul_bandwidth" value="{tmpl_var name='ul_bandwidth'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> kb/s</p>
- </div>
- <div class="ctrlHolder">
- <label for="dl_bandwidth">{tmpl_var name='dl_bandwidth_txt'}</label>
- <input name="dl_bandwidth" id="dl_bandwidth" value="{tmpl_var name='dl_bandwidth'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> kb/s</p>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/ftp_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/ftp_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_ftp_user">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="uid">{tmpl_var name='uid_txt'}</label>
+ <input name="uid" id="uid" value="{tmpl_var name='uid'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="gid">{tmpl_var name='gid_txt'}</label>
+ <input name="gid" id="gid" value="{tmpl_var name='gid'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="dir">{tmpl_var name='dir_txt'}</label>
+ <input name="dir" id="dir" value="{tmpl_var name='dir'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="quota_files">{tmpl_var name='quota_files_txt'}</label>
+ <input name="quota_files" id="quota_files" value="{tmpl_var name='quota_files'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> {tmpl_var name='quota_files_unity_txt'}</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="ul_ratio">{tmpl_var name='ul_ratio_txt'}</label>
+ <input name="ul_ratio" id="ul_ratio" value="{tmpl_var name='ul_ratio'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> MB</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="dl_ratio">{tmpl_var name='dl_ratio_txt'}</label>
+ <input name="dl_ratio" id="dl_ratio" value="{tmpl_var name='dl_ratio'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> MB</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="ul_bandwidth">{tmpl_var name='ul_bandwidth_txt'}</label>
+ <input name="ul_bandwidth" id="ul_bandwidth" value="{tmpl_var name='ul_bandwidth'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> kb/s</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="dl_bandwidth">{tmpl_var name='dl_bandwidth_txt'}</label>
+ <input name="dl_bandwidth" id="dl_bandwidth" value="{tmpl_var name='dl_bandwidth'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> kb/s</p>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/ftp_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/ftp_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/ftp_user_advanced_client.htm b/interface/web/sites/templates/ftp_user_advanced_client.htm
index fd8d617..5698bb0 100644
--- a/interface/web/sites/templates/ftp_user_advanced_client.htm
+++ b/interface/web/sites/templates/ftp_user_advanced_client.htm
@@ -1,22 +1,22 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_ftp_user">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="dir">{tmpl_var name='dir_txt'}</label>
- <input name="dir" id="dir" value="{tmpl_var name='dir'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/ftp_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/ftp_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_ftp_user">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="dir">{tmpl_var name='dir_txt'}</label>
+ <input name="dir" id="dir" value="{tmpl_var name='dir'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/ftp_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/ftp_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/ftp_user_edit.htm b/interface/web/sites/templates/ftp_user_edit.htm
index f7588b3..d3c6d78 100644
--- a/interface/web/sites/templates/ftp_user_edit.htm
+++ b/interface/web/sites/templates/ftp_user_edit.htm
@@ -1,48 +1,48 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_ftp_user">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
- <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
- {tmpl_var name='parent_domain_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="username">{tmpl_var name='username_txt'}</label>
- <div style="float: left;">{tmpl_var name='username_prefix'} </div>
- <input name="username" id="username" value="{tmpl_var name='username'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="password">{tmpl_var name='password_txt'}</label>
- <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='password_strength_txt'}</p>
- <div id="passBar"></div>
- <p class="formHint"><span id="passText"> </span></p>
- </div>
- <div class="ctrlHolder">
- <label for="quota_size">{tmpl_var name='quota_size_txt'}</label>
- <input name="quota_size" id="quota_size" value="{tmpl_var name='quota_size'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> MB</p>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/ftp_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/ftp_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_ftp_user">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
+ <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
+ {tmpl_var name='parent_domain_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="username">{tmpl_var name='username_txt'}</label>
+ <div style="float: left;">{tmpl_var name='username_prefix'} </div>
+ <input name="username" id="username" value="{tmpl_var name='username'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="password">{tmpl_var name='password_txt'}</label>
+ <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='password_strength_txt'}</p>
+ <div id="passBar"></div>
+ <p class="formHint"><span id="passText"> </span></p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="quota_size">{tmpl_var name='quota_size_txt'}</label>
+ <input name="quota_size" id="quota_size" value="{tmpl_var name='quota_size'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> MB</p>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/ftp_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/ftp_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/shell_user_advanced.htm b/interface/web/sites/templates/shell_user_advanced.htm
index eb7d8ce..870614c 100644
--- a/interface/web/sites/templates/shell_user_advanced.htm
+++ b/interface/web/sites/templates/shell_user_advanced.htm
@@ -1,34 +1,34 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_shell_user">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="puser">{tmpl_var name='puser_txt'}</label>
- <input name="puser" id="puser" value="{tmpl_var name='puser'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
- </div>
- <div class="ctrlHolder">
- <label for="pgroup">{tmpl_var name='pgroup_txt'}</label>
- <input name="pgroup" id="pgroup" value="{tmpl_var name='pgroup'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
- </div>
- <div class="ctrlHolder">
- <label for="shell">{tmpl_var name='shell_txt'}</label>
- <input name="shell" id="shell" value="{tmpl_var name='shell'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="dir">{tmpl_var name='dir_txt'}</label>
- <input name="dir" id="dir" value="{tmpl_var name='dir'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/shell_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/shell_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_shell_user">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="puser">{tmpl_var name='puser_txt'}</label>
+ <input name="puser" id="puser" value="{tmpl_var name='puser'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="pgroup">{tmpl_var name='pgroup_txt'}</label>
+ <input name="pgroup" id="pgroup" value="{tmpl_var name='pgroup'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="shell">{tmpl_var name='shell_txt'}</label>
+ <input name="shell" id="shell" value="{tmpl_var name='shell'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="dir">{tmpl_var name='dir_txt'}</label>
+ <input name="dir" id="dir" value="{tmpl_var name='dir'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/shell_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/shell_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/shell_user_edit.htm b/interface/web/sites/templates/shell_user_edit.htm
index 6e2c3d9..45bdcc4 100644
--- a/interface/web/sites/templates/shell_user_edit.htm
+++ b/interface/web/sites/templates/shell_user_edit.htm
@@ -1,66 +1,66 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_shell_user">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <tmpl_if name="edit_disabled">
- <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
- <select name="parent_domain_id" id="parent_domain_id" class="selectInput" disabled="disabled">
- {tmpl_var name='parent_domain_id'}
- </select>
- <input type="hidden" name="parent_domain_id" value="{tmpl_var name='parent_domain_id_value'}" />
- <tmpl_else>
- <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
- <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
- {tmpl_var name='parent_domain_id'}
- </select>
- </tmpl_if>
- </div>
- <div class="ctrlHolder">
- <label for="username">{tmpl_var name='username_txt'}</label>
- <div style="float: left;">{tmpl_var name='username_prefix'} </div>
- <input name="username" id="username" value="{tmpl_var name='username'}" size="30" maxlength="255" type="text" class="textInput formLengthFourth"/>
- </div>
- <div class="ctrlHolder">
- <label for="password">{tmpl_var name='password_txt'}</label>
- <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='password_strength_txt'}</p>
- <div id="passBar"></div>
- <p class="formHint"><span id="passText"> </span></p>
- </div>
- <div class="ctrlHolder">
- <label for="chroot">{tmpl_var name='chroot_txt'}</label>
- <select name="chroot" id="chroot" class="selectInput formLengthHalf">
- {tmpl_var name='chroot'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="quota_size">{tmpl_var name='quota_size_txt'}</label>
- <input name="quota_size" id="quota_size" value="{tmpl_var name='quota_size'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> MB</p>
- </div>
- <div class="ctrlHolder">
- <label for="ssh_rsa">ssh_rsa</label>
- <input name="ssh_rsa" id="ssh_rsa" value="" maxlength="600" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/shell_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/shell_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_shell_user">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <tmpl_if name="edit_disabled">
+ <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
+ <select name="parent_domain_id" id="parent_domain_id" class="selectInput" disabled="disabled">
+ {tmpl_var name='parent_domain_id'}
+ </select>
+ <input type="hidden" name="parent_domain_id" value="{tmpl_var name='parent_domain_id_value'}" />
+ <tmpl_else>
+ <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
+ <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
+ {tmpl_var name='parent_domain_id'}
+ </select>
+ </tmpl_if>
+ </div>
+ <div class="ctrlHolder">
+ <label for="username">{tmpl_var name='username_txt'}</label>
+ <div style="float: left;">{tmpl_var name='username_prefix'} </div>
+ <input name="username" id="username" value="{tmpl_var name='username'}" size="30" maxlength="255" type="text" class="textInput formLengthFourth"/>
+ </div>
+ <div class="ctrlHolder">
+ <label for="password">{tmpl_var name='password_txt'}</label>
+ <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='password_strength_txt'}</p>
+ <div id="passBar"></div>
+ <p class="formHint"><span id="passText"> </span></p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="chroot">{tmpl_var name='chroot_txt'}</label>
+ <select name="chroot" id="chroot" class="selectInput formLengthHalf">
+ {tmpl_var name='chroot'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="quota_size">{tmpl_var name='quota_size_txt'}</label>
+ <input name="quota_size" id="quota_size" value="{tmpl_var name='quota_size'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" /><p class="formInputUnity"> MB</p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="ssh_rsa">ssh_rsa</label>
+ <input name="ssh_rsa" id="ssh_rsa" value="" maxlength="600" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/shell_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/shell_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/user_quota_stats_list.htm b/interface/web/sites/templates/user_quota_stats_list.htm
index f7b7eaa..b005d60 100644
--- a/interface/web/sites/templates/user_quota_stats_list.htm
+++ b/interface/web/sites/templates/user_quota_stats_list.htm
@@ -7,30 +7,30 @@
<table class="list">
<thead>
<tr>
- <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
+ <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
<th class="tbl_col_system_user" scope="col"><tmpl_var name="system_user_txt"></th>
<th class="tbl_col_system_user" scope="col" style="text-align:right;"><tmpl_var name="used_txt"></th>
<th class="tbl_col_system_user" scope="col" style="text-align:right;"><tmpl_var name="soft_txt"></th>
- <th class="tbl_col_system_user" scope="col" style="text-align:right;"><tmpl_var name="hard_txt"></th>
+ <th class="tbl_col_system_user" scope="col" style="text-align:right;"><tmpl_var name="hard_txt"></th>
<th class="tbl_col_buttons" scope="col"> </th>
</tr>
<tr>
- <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
+ <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
<td class="tbl_col_system_user"><input type="text" name="search_system_user" value="{tmpl_var name='search_system_user'}" /></td>
<td class="tbl_col_system_user"> </td>
<td class="tbl_col_system_user"> </td>
- <td class="tbl_col_system_user"> </td>
+ <td class="tbl_col_system_user"> </td>
<td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','sites/user_quota_stats.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
</tr>
</thead>
<tbody>
<tmpl_loop name="records">
<tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_domain"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
+ <td class="tbl_col_domain"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
<td class="tbl_col_system_user"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="system_user"}</a></td>
<td class="tbl_col_used" style="text-align:right;"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="used"}</a></td>
<td class="tbl_col_soft" style="text-align:right;"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="soft"}</a></td>
- <td class="tbl_col_hard" style="text-align:right;"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="hard"}</a></td>
+ <td class="tbl_col_hard" style="text-align:right;"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="hard"}</a></td>
<td class="tbl_col_buttons">
<div class="buttons icons16">
diff --git a/interface/web/sites/templates/web_aliasdomain_edit.htm b/interface/web/sites/templates/web_aliasdomain_edit.htm
index 82773d1..688ed52 100644
--- a/interface/web/sites/templates/web_aliasdomain_edit.htm
+++ b/interface/web/sites/templates/web_aliasdomain_edit.htm
@@ -1,56 +1,56 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_web_domain">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="domain">{tmpl_var name='domain_txt'}</label>
- <tmpl_if name="domain_option">
- <select name="domain" id="domain" class="selectInput">
- {tmpl_var name='domain_option'}
- </select>
- <tmpl_else>
- <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
- </tmpl_if>
- </div>
- <div class="ctrlHolder">
- <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
- <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
- {tmpl_var name='parent_domain_id'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="redirect_type">{tmpl_var name='redirect_type_txt'}</label>
- <select name="redirect_type" id="redirect_type" class="selectInput formLengthHalf">
- {tmpl_var name='redirect_type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="redirect_path">{tmpl_var name='redirect_path_txt'}</label>
- <input name="redirect_path" id="redirect_path" value="{tmpl_var name='redirect_path'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="subdomain">{tmpl_var name='subdomain_txt'}</label>
- <select name="subdomain" id="subdomain" class="selectInput formLengthHalf">
- {tmpl_var name='subdomain'}
- </select>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_web_domain">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="domain">{tmpl_var name='domain_txt'}</label>
+ <tmpl_if name="domain_option">
+ <select name="domain" id="domain" class="selectInput">
+ {tmpl_var name='domain_option'}
+ </select>
+ <tmpl_else>
+ <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
+ </tmpl_if>
+ </div>
+ <div class="ctrlHolder">
+ <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
+ <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
+ {tmpl_var name='parent_domain_id'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="redirect_type">{tmpl_var name='redirect_type_txt'}</label>
+ <select name="redirect_type" id="redirect_type" class="selectInput formLengthHalf">
+ {tmpl_var name='redirect_type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="redirect_path">{tmpl_var name='redirect_path_txt'}</label>
+ <input name="redirect_path" id="redirect_path" value="{tmpl_var name='redirect_path'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="subdomain">{tmpl_var name='subdomain_txt'}</label>
+ <select name="subdomain" id="subdomain" class="selectInput formLengthHalf">
+ {tmpl_var name='subdomain'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/web_domain_admin_list.htm b/interface/web/sites/templates/web_domain_admin_list.htm
index 7290f1f..efb7286 100644
--- a/interface/web/sites/templates/web_domain_admin_list.htm
+++ b/interface/web/sites/templates/web_domain_admin_list.htm
@@ -17,30 +17,30 @@
<table class="list">
<thead>
<tr>
- <th class="tbl_col_domain_id" scope="col"><tmpl_var name="domain_id_txt"></th>
- <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
- <th class="tbl_col_sys_groupid" scope="col"><tmpl_var name="sys_groupid_txt"></th>
- <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
- <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
+ <th class="tbl_col_domain_id" scope="col"><tmpl_var name="domain_id_txt"></th>
+ <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
+ <th class="tbl_col_sys_groupid" scope="col"><tmpl_var name="sys_groupid_txt"></th>
+ <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
+ <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
<th class="tbl_col_buttons" scope="col"> </th>
</tr>
<tr>
- <td class="tbl_col_domain_id"><input type="text" name="search_domain_id" size="4" value="{tmpl_var name='search_domain_id'}" /></td>
- <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','sites/web_domain_list.php');">{tmpl_var name='search_active'}</select></td>
- <td class="tbl_col_sys_groupid"><select name="search_sys_groupid" onChange="submitForm('pageForm','sites/web_domain_list.php');">{tmpl_var name='search_sys_groupid'}</select></td>
- <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','sites/web_domain_list.php');">{tmpl_var name='search_server_id'}</select></td>
- <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
+ <td class="tbl_col_domain_id"><input type="text" name="search_domain_id" size="4" value="{tmpl_var name='search_domain_id'}" /></td>
+ <td class="tbl_col_active"><select name="search_active" onChange="submitForm('pageForm','sites/web_domain_list.php');">{tmpl_var name='search_active'}</select></td>
+ <td class="tbl_col_sys_groupid"><select name="search_sys_groupid" onChange="submitForm('pageForm','sites/web_domain_list.php');">{tmpl_var name='search_sys_groupid'}</select></td>
+ <td class="tbl_col_server_id"><select name="search_server_id" onChange="submitForm('pageForm','sites/web_domain_list.php');">{tmpl_var name='search_server_id'}</select></td>
+ <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
<td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','sites/web_domain_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
</tr>
</thead>
<tbody>
<tmpl_loop name="records">
<tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
- <td class="tbl_col_domain_id"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain_id"}</a></td>
- <td class="tbl_col_active"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
- <td class="tbl_col_sys_groupid"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="sys_groupid"}</a></td>
- <td class="tbl_col_server_id"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
- <td class="tbl_col_domain"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
+ <td class="tbl_col_domain_id"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain_id"}</a></td>
+ <td class="tbl_col_active"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
+ <td class="tbl_col_sys_groupid"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="sys_groupid"}</a></td>
+ <td class="tbl_col_server_id"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
+ <td class="tbl_col_domain"><a href="#" onClick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
<td class="tbl_col_buttons">
<div class="buttons icons16">
<a class="icons16 icoDelete" href="javascript: del_record('sites/web_domain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
diff --git a/interface/web/sites/templates/web_domain_redirect.htm b/interface/web/sites/templates/web_domain_redirect.htm
index 89e6fab..8f07bef 100644
--- a/interface/web/sites/templates/web_domain_redirect.htm
+++ b/interface/web/sites/templates/web_domain_redirect.htm
@@ -1,28 +1,28 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_web_domain">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="redirect_type">{tmpl_var name='redirect_type_txt'}</label>
- <select name="redirect_type" id="redirect_type" class="selectInput formLengthHalf">
- {tmpl_var name='redirect_type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="redirect_path">{tmpl_var name='redirect_path_txt'}</label>
- <input name="redirect_path" id="redirect_path" value="{tmpl_var name='redirect_path'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_domain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_domain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_web_domain">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="redirect_type">{tmpl_var name='redirect_type_txt'}</label>
+ <select name="redirect_type" id="redirect_type" class="selectInput formLengthHalf">
+ {tmpl_var name='redirect_type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="redirect_path">{tmpl_var name='redirect_path_txt'}</label>
+ <input name="redirect_path" id="redirect_path" value="{tmpl_var name='redirect_path'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_domain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_domain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/web_subdomain_edit.htm b/interface/web/sites/templates/web_subdomain_edit.htm
index 2206cf7..c0bc0f7 100644
--- a/interface/web/sites/templates/web_subdomain_edit.htm
+++ b/interface/web/sites/templates/web_subdomain_edit.htm
@@ -1,42 +1,42 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_web_subdomain">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="domain">{tmpl_var name='host_txt'}</label>
- <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
- </div>
- <div class="ctrlHolder">
- <label for="parent_domain_id">{tmpl_var name='domain_txt'}</label>
- <select id="parent_domain_id" name="parent_domain_id" class="selectInput formLengthHalf">{tmpl_var name='parent_domain_id'}</select>
- </div>
- <div class="ctrlHolder">
- <label for="redirect_type">{tmpl_var name='redirect_type_txt'}</label>
- <select name="redirect_type" id="redirect_type" class="selectInput formLengthHalf">
- {tmpl_var name='redirect_type'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="redirect_path">{tmpl_var name='redirect_path_txt'}</label>
- <input name="redirect_path" id="redirect_path" value="{tmpl_var name='redirect_path'}" size="30" maxlength="255" type="text" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_subdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_subdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_web_subdomain">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="domain">{tmpl_var name='host_txt'}</label>
+ <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="parent_domain_id">{tmpl_var name='domain_txt'}</label>
+ <select id="parent_domain_id" name="parent_domain_id" class="selectInput formLengthHalf">{tmpl_var name='parent_domain_id'}</select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="redirect_type">{tmpl_var name='redirect_type_txt'}</label>
+ <select name="redirect_type" id="redirect_type" class="selectInput formLengthHalf">
+ {tmpl_var name='redirect_type'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="redirect_path">{tmpl_var name='redirect_path_txt'}</label>
+ <input name="redirect_path" id="redirect_path" value="{tmpl_var name='redirect_path'}" size="30" maxlength="255" type="text" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_subdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_subdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/sites/templates/webdav_user_edit.htm b/interface/web/sites/templates/webdav_user_edit.htm
index 37d46a8..4b6b4ed 100644
--- a/interface/web/sites/templates/webdav_user_edit.htm
+++ b/interface/web/sites/templates/webdav_user_edit.htm
@@ -1,58 +1,58 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_webdav_user">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <tmpl_if name="edit_disabled">
- <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
- <select name="parent_domain_id" id="parent_domain_id" class="selectInput" disabled="disabled">
- {tmpl_var name='parent_domain_id'}
- </select>
- <input type="hidden" name="parent_domain_id" value="{tmpl_var name='parent_domain_id_value'}" />
- <tmpl_else>
- <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
- <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
- {tmpl_var name='parent_domain_id'}
- </select>
- </tmpl_if>
- </div>
- <div class="ctrlHolder">
- <label for="username">{tmpl_var name='username_txt'}</label>
- <div style="float: left;">{tmpl_var name='username_prefix'} </div>
- <input name="username" id="username" value="{tmpl_var name='username'}" size="30" maxlength="255" type="text" class="textInput formLengthFourth" <tmpl_if name="edit_disabled">disabled="disabled"</tmpl_if>/>
- </div>
- <div class="ctrlHolder">
- <label for="password">{tmpl_var name='password_txt'}</label>
- <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='password_strength_txt'}</p>
- <div id="passBar"></div>
- <p class="formHint"><span id="passText"> </span></p>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='active_txt'}</p>
- <div class="multiField">
- {tmpl_var name='active'}
- </div>
- </div>
- <div class="ctrlHolder">
- <label for="dir">{tmpl_var name='dir_txt'}</label>
- <div style="float: left;">webdav/</div>
- <input name="dir" id="dir" value="{tmpl_var name='dir'}" size="30" maxlength="255" type="text" class="textInput" <tmpl_if name="edit_disabled">disabled="disabled"</tmpl_if>/>
- </div>
-
- </fieldset>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/webdav_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/webdav_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_webdav_user">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <tmpl_if name="edit_disabled">
+ <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
+ <select name="parent_domain_id" id="parent_domain_id" class="selectInput" disabled="disabled">
+ {tmpl_var name='parent_domain_id'}
+ </select>
+ <input type="hidden" name="parent_domain_id" value="{tmpl_var name='parent_domain_id_value'}" />
+ <tmpl_else>
+ <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
+ <select name="parent_domain_id" id="parent_domain_id" class="selectInput">
+ {tmpl_var name='parent_domain_id'}
+ </select>
+ </tmpl_if>
+ </div>
+ <div class="ctrlHolder">
+ <label for="username">{tmpl_var name='username_txt'}</label>
+ <div style="float: left;">{tmpl_var name='username_prefix'} </div>
+ <input name="username" id="username" value="{tmpl_var name='username'}" size="30" maxlength="255" type="text" class="textInput formLengthFourth" <tmpl_if name="edit_disabled">disabled="disabled"</tmpl_if>/>
+ </div>
+ <div class="ctrlHolder">
+ <label for="password">{tmpl_var name='password_txt'}</label>
+ <input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='password_strength_txt'}</p>
+ <div id="passBar"></div>
+ <p class="formHint"><span id="passText"> </span></p>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='active_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='active'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
+ <label for="dir">{tmpl_var name='dir_txt'}</label>
+ <div style="float: left;">webdav/</div>
+ <input name="dir" id="dir" value="{tmpl_var name='dir'}" size="30" maxlength="255" type="text" class="textInput" <tmpl_if name="edit_disabled">disabled="disabled"</tmpl_if>/>
+ </div>
+
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/webdav_user_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/webdav_user_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/interface/web/temp/en.lng b/interface/web/temp/en.lng
index 3ce72dc..ccb4786 100644
--- a/interface/web/temp/en.lng
+++ b/interface/web/temp/en.lng
@@ -344,34 +344,34 @@
?>
--|admin|en|en_users.lng
-<?php
-$wb["username_txt"] = 'Username';
-$wb["username_err"] = 'The username is too long or contains invalid characters.';
-$wb["username_empty"] = 'The username is empty.';
-$wb["username_unique"] = 'There is already a user with this username.';
-$wb["passwort_txt"] = 'Password';
-$wb["password_strength_txt"] = 'Password strength';
-$wb["modules_txt"] = 'Module';
-$wb["startmodule_txt"] = 'Startmodule';
-$wb["app_theme_txt"] = 'Design';
-$wb["typ_txt"] = 'Type';
-$wb["active_txt"] = 'Active';
-$wb["language_txt"] = 'Language';
-$wb["name_txt"] = 'Name';
-$wb["vorname_txt"] = 'Forename';
-$wb["unternehmen_txt"] = 'Company';
-$wb["strasse_txt"] = 'Street';
-$wb["ort_txt"] = 'City';
-$wb["plz_txt"] = 'ZIP';
-$wb["land_txt"] = 'Country';
-$wb["email_txt"] = 'Email';
-$wb["url_txt"] = 'Url';
-$wb["telefon_txt"] = 'Telephone';
-$wb["fax_txt"] = 'Fax';
-$wb["groups_txt"] = 'Groups';
-$wb["default_group_txt"] = 'Default Group';
-$wb["startmodule_err"] = 'Start module is not within modules.';
-?>
+<?php
+$wb["username_txt"] = 'Username';
+$wb["username_err"] = 'The username is too long or contains invalid characters.';
+$wb["username_empty"] = 'The username is empty.';
+$wb["username_unique"] = 'There is already a user with this username.';
+$wb["passwort_txt"] = 'Password';
+$wb["password_strength_txt"] = 'Password strength';
+$wb["modules_txt"] = 'Module';
+$wb["startmodule_txt"] = 'Startmodule';
+$wb["app_theme_txt"] = 'Design';
+$wb["typ_txt"] = 'Type';
+$wb["active_txt"] = 'Active';
+$wb["language_txt"] = 'Language';
+$wb["name_txt"] = 'Name';
+$wb["vorname_txt"] = 'Forename';
+$wb["unternehmen_txt"] = 'Company';
+$wb["strasse_txt"] = 'Street';
+$wb["ort_txt"] = 'City';
+$wb["plz_txt"] = 'ZIP';
+$wb["land_txt"] = 'Country';
+$wb["email_txt"] = 'Email';
+$wb["url_txt"] = 'Url';
+$wb["telefon_txt"] = 'Telephone';
+$wb["fax_txt"] = 'Fax';
+$wb["groups_txt"] = 'Groups';
+$wb["default_group_txt"] = 'Default Group';
+$wb["startmodule_err"] = 'Start module is not within modules.';
+?>
--|admin|en|en_users_list.lng
<?php
@@ -1223,13 +1223,13 @@
$wb["add_new_record_txt"] = 'Add new Domain alias';
?>
--|mail|en|en_mail_alias_list.lng
-<?php
-$wb["list_head_txt"] = 'Email Alias';
-$wb["active_txt"] = 'Active';
-$wb["source_txt"] = 'source';
-$wb["destination_txt"] = 'Destination';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add new Email alias';
+<?php
+$wb["list_head_txt"] = 'Email Alias';
+$wb["active_txt"] = 'Active';
+$wb["source_txt"] = 'source';
+$wb["destination_txt"] = 'Destination';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add new Email alias';
?>
--|mail|en|en_mail_blacklist.lng
<?php
@@ -1242,15 +1242,15 @@
$wb["limit_mailfilter_txt"] = 'The max. number of email filters for your account is reached.';
?>
--|mail|en|en_mail_blacklist_list.lng
-<?php
-$wb["list_head_txt"] = 'Email Blacklist';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["source_txt"] = 'Blacklisted address';
-$wb["type_txt"] = 'Type';
-$wb["recipient_txt"] = 'Recipient';
-$wb["add_new_record_txt"] = 'Add new Blacklist record';
-$wb["access_txt"] = 'access';
+<?php
+$wb["list_head_txt"] = 'Email Blacklist';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["source_txt"] = 'Blacklisted address';
+$wb["type_txt"] = 'Type';
+$wb["recipient_txt"] = 'Recipient';
+$wb["add_new_record_txt"] = 'Add new Blacklist record';
+$wb["access_txt"] = 'access';
?>
--|mail|en|en_mail_content_filter.lng
<?php
@@ -1296,14 +1296,14 @@
$wb["limit_mailcatchall_txt"] = 'The max. number of email catchall accounts for your account is reached.';
?>
--|mail|en|en_mail_domain_catchall_list.lng
-<?php
-$wb["list_head_txt"] = 'Email Catchall';
-$wb["active_txt"] = 'Active';
-$wb["source_txt"] = 'source';
-$wb["destination_txt"] = 'Destination email address';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["add_new_record_txt"] = 'Add new Catchall';
+<?php
+$wb["list_head_txt"] = 'Email Catchall';
+$wb["active_txt"] = 'Active';
+$wb["source_txt"] = 'source';
+$wb["destination_txt"] = 'Destination email address';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["add_new_record_txt"] = 'Add new Catchall';
?>
--|mail|en|en_mail_domain_list.lng
<?php
@@ -1322,13 +1322,13 @@
$wb["duplicate_mailbox_txt"] = 'There is already a mailbox with this email address';
?>
--|mail|en|en_mail_forward_list.lng
-<?php
-$wb["list_head_txt"] = 'Mail Forward';
-$wb["active_txt"] = 'Active';
-$wb["source_txt"] = 'source';
-$wb["destination_txt"] = 'Destination';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add new Email forward';
+<?php
+$wb["list_head_txt"] = 'Mail Forward';
+$wb["active_txt"] = 'Active';
+$wb["source_txt"] = 'source';
+$wb["destination_txt"] = 'Destination';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add new Email forward';
?>
--|mail|en|en_mail_get.lng
<?php
@@ -1395,13 +1395,13 @@
$wb["days_txt"] = 'Days.';
?>
--|mail|en|en_mail_spamfilter_list.lng
-<?php
-$wb["list_head_txt"] = 'Spamfilter';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["server_name_txt"] = 'server_name';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add new Spamfilter record';
+<?php
+$wb["list_head_txt"] = 'Spamfilter';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["server_name_txt"] = 'server_name';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add new Spamfilter record';
?>
--|mail|en|en_mail_transport.lng
<?php
@@ -1415,14 +1415,14 @@
$wb["limit_mailrouting_txt"] = 'The max. number of routes for your account is reached.';
?>
--|mail|en|en_mail_transport_list.lng
-<?php
-$wb["list_head_txt"] = 'Advanced Email Routing';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["transport_txt"] = 'Transport';
-$wb["sort_order_txt"] = 'Sort by';
-$wb["add_new_record_txt"] = 'Add new transport';
+<?php
+$wb["list_head_txt"] = 'Advanced Email Routing';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["transport_txt"] = 'Transport';
+$wb["sort_order_txt"] = 'Sort by';
+$wb["add_new_record_txt"] = 'Add new transport';
?>
--|mail|en|en_mail_user.lng
<?php
@@ -1478,11 +1478,11 @@
$wb["delete_confirmation"] = 'Do you really want to Delete the mailfilter?';
?>
--|mail|en|en_mail_user_list.lng
-<?php
-$wb["list_head_txt"] = 'Mailbox';
-$wb["email_txt"] = 'Email';
-$wb["autoresponder_txt"] = 'Autoresponder';
-$wb["add_new_record_txt"] = 'Add new Mailbox';
+<?php
+$wb["list_head_txt"] = 'Mailbox';
+$wb["email_txt"] = 'Email';
+$wb["autoresponder_txt"] = 'Autoresponder';
+$wb["add_new_record_txt"] = 'Add new Mailbox';
?>
--|mail|en|en_mail_user_stats_list.lng
<?php
@@ -1504,15 +1504,15 @@
$wb["limit_mailfilter_txt"] = 'The max. number of email filters for your account is reached.';
?>
--|mail|en|en_mail_whitelist_list.lng
-<?php
-$wb["list_head_txt"] = 'Email Whitelist';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["source_txt"] = 'Whitelisted address';
-$wb["type_txt"] = 'Type';
-$wb["recipient_txt"] = 'Recipient';
-$wb["add_new_record_txt"] = 'Add new Whitelist record';
-$wb["access_txt"] = 'access';
+<?php
+$wb["list_head_txt"] = 'Email Whitelist';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["source_txt"] = 'Whitelisted address';
+$wb["type_txt"] = 'Type';
+$wb["recipient_txt"] = 'Recipient';
+$wb["add_new_record_txt"] = 'Add new Whitelist record';
+$wb["access_txt"] = 'access';
?>
--|mail|en|en_spamfilter_blacklist.lng
<?php
@@ -1601,14 +1601,14 @@
$wb["banned_rulenames_txt"] = 'Banned rulenames';
?>
--|mail|en|en_spamfilter_policy_list.lng
-<?php
-$wb["list_head_txt"] = 'Spamfilter Policy';
-$wb["policy_name_txt"] = 'Name';
-$wb["virus_lover_txt"] = 'Virus lover';
-$wb["spam_lover_txt"] = 'Spam lover';
-$wb["banned_files_lover_txt"] = 'Banned Files lover';
-$wb["bad_header_lover_txt"] = 'Bad Header lover';
-$wb["add_new_record_txt"] = 'Add Policy record';
+<?php
+$wb["list_head_txt"] = 'Spamfilter Policy';
+$wb["policy_name_txt"] = 'Name';
+$wb["virus_lover_txt"] = 'Virus lover';
+$wb["spam_lover_txt"] = 'Spam lover';
+$wb["banned_files_lover_txt"] = 'Banned Files lover';
+$wb["bad_header_lover_txt"] = 'Bad Header lover';
+$wb["add_new_record_txt"] = 'Add Policy record';
?>
--|mail|en|en_spamfilter_users.lng
<?php
@@ -1620,15 +1620,15 @@
$wb["local_txt"] = 'Local';
?>
--|mail|en|en_spamfilter_users_list.lng
-<?php
-$wb["list_head_txt"] = 'Spamfilter Users';
-$wb["local_txt"] = 'Local';
-$wb["server_id_txt"] = 'Server';
-$wb["priority_txt"] = 'Priority';
-$wb["policy_id_txt"] = 'Policy';
-$wb["fullname_txt"] = 'Name';
-$wb["email_txt"] = 'Email';
-$wb["add_new_record_txt"] = 'Add Spamfilter User';
+<?php
+$wb["list_head_txt"] = 'Spamfilter Users';
+$wb["local_txt"] = 'Local';
+$wb["server_id_txt"] = 'Server';
+$wb["priority_txt"] = 'Priority';
+$wb["policy_id_txt"] = 'Policy';
+$wb["fullname_txt"] = 'Name';
+$wb["email_txt"] = 'Email';
+$wb["add_new_record_txt"] = 'Add Spamfilter User';
?>
--|mail|en|en_spamfilter_whitelist.lng
<?php
@@ -1641,14 +1641,14 @@
$wb["limit_spamfilter_wblist_txt"] = 'The max. number of White- or Blacklist records for your account is reached.';
?>
--|mail|en|en_spamfilter_whitelist_list.lng
-<?php
-$wb["list_head_txt"] = 'Spamfilter Whitelist';
-$wb["active_txt"] = 'Active';
-$wb["server_id_txt"] = 'Server';
-$wb["priority_txt"] = 'Priority';
-$wb["rid_txt"] = 'User';
-$wb["email_txt"] = 'Whitelisted Email';
-$wb["add_new_record_txt"] = 'Add Whitelist record';
+<?php
+$wb["list_head_txt"] = 'Spamfilter Whitelist';
+$wb["active_txt"] = 'Active';
+$wb["server_id_txt"] = 'Server';
+$wb["priority_txt"] = 'Priority';
+$wb["rid_txt"] = 'User';
+$wb["email_txt"] = 'Whitelisted Email';
+$wb["add_new_record_txt"] = 'Add Whitelist record';
?>
--|monitor|en|en.lng
<?php
@@ -2053,44 +2053,44 @@
$wb["last_year_txt"] = 'Last year';
?>
--|sites|en|en_web_subdomain.lng
-<?php
-$wb["ssl_state_txt"] = 'State';
-$wb["ssl_locality_txt"] = 'Locality';
-$wb["ssl_organisation_txt"] = 'Organisation';
-$wb["ssl_organisation_unit_txt"] = 'Organisation Unit';
-$wb["ssl_country_txt"] = 'Country';
-$wb["ssl_request_txt"] = 'SSL Request';
-$wb["ssl_cert_txt"] = 'SSL Certificate';
-$wb["ssl_bundle_txt"] = 'SSL Bundle';
-$wb["ssl_action_txt"] = 'SSL Action';
-$wb["server_id_txt"] = 'Server';
-$wb["domain_txt"] = 'Domain';
-$wb["type_txt"] = 'Type';
-$wb["parent_domain_id_txt"] = 'Parent Website';
-$wb["redirect_type_txt"] = 'Redirect Type';
-$wb["redirect_path_txt"] = 'Redirect Path';
-$wb["active_txt"] = 'Active';
-$wb["document_root_txt"] = 'Documentroot';
-$wb["system_user_txt"] = 'Linux User';
-$wb["system_group_txt"] = 'Linux Group';
-$wb["ip_address_txt"] = 'IP-Address';
-$wb["vhost_type_txt"] = 'VHost Type';
-$wb["hd_quota_txt"] = 'Harddisk Quota';
-$wb["traffic_quota_txt"] = 'Traffic Quaota';
-$wb["cgi_txt"] = 'CGI';
-$wb["ssi_txt"] = 'SSI';
-$wb["ssl_txt"] = 'SSL';
-$wb["suexec_txt"] = 'SuEXEC';
-$wb["php_txt"] = 'PHP';
-$wb["client_txt"] = 'Client';
-$wb["limit_web_domain_txt"] = 'The max. number of web domains for your account is reached.';
-$wb["limit_web_aliasdomain_txt"] = 'The max. number of aliasdomains for your account is reached.';
-$wb["limit_web_subdomain_txt"] = 'The max. number of web subdomains for your account is reached.';
-$wb["apache_directives_txt"] = 'Apache directives';
-$wb["domain_error_empty"] = 'Domain is empty.';
-$wb["domain_error_unique"] = 'There is already a website or sub / aliasdomain with this domain name.';
-$wb["domain_error_regex"] = 'Domain name invalid.';
-$wb["host_txt"] = 'Host';
+<?php
+$wb["ssl_state_txt"] = 'State';
+$wb["ssl_locality_txt"] = 'Locality';
+$wb["ssl_organisation_txt"] = 'Organisation';
+$wb["ssl_organisation_unit_txt"] = 'Organisation Unit';
+$wb["ssl_country_txt"] = 'Country';
+$wb["ssl_request_txt"] = 'SSL Request';
+$wb["ssl_cert_txt"] = 'SSL Certificate';
+$wb["ssl_bundle_txt"] = 'SSL Bundle';
+$wb["ssl_action_txt"] = 'SSL Action';
+$wb["server_id_txt"] = 'Server';
+$wb["domain_txt"] = 'Domain';
+$wb["type_txt"] = 'Type';
+$wb["parent_domain_id_txt"] = 'Parent Website';
+$wb["redirect_type_txt"] = 'Redirect Type';
+$wb["redirect_path_txt"] = 'Redirect Path';
+$wb["active_txt"] = 'Active';
+$wb["document_root_txt"] = 'Documentroot';
+$wb["system_user_txt"] = 'Linux User';
+$wb["system_group_txt"] = 'Linux Group';
+$wb["ip_address_txt"] = 'IP-Address';
+$wb["vhost_type_txt"] = 'VHost Type';
+$wb["hd_quota_txt"] = 'Harddisk Quota';
+$wb["traffic_quota_txt"] = 'Traffic Quaota';
+$wb["cgi_txt"] = 'CGI';
+$wb["ssi_txt"] = 'SSI';
+$wb["ssl_txt"] = 'SSL';
+$wb["suexec_txt"] = 'SuEXEC';
+$wb["php_txt"] = 'PHP';
+$wb["client_txt"] = 'Client';
+$wb["limit_web_domain_txt"] = 'The max. number of web domains for your account is reached.';
+$wb["limit_web_aliasdomain_txt"] = 'The max. number of aliasdomains for your account is reached.';
+$wb["limit_web_subdomain_txt"] = 'The max. number of web subdomains for your account is reached.';
+$wb["apache_directives_txt"] = 'Apache directives';
+$wb["domain_error_empty"] = 'Domain is empty.';
+$wb["domain_error_unique"] = 'There is already a website or sub / aliasdomain with this domain name.';
+$wb["domain_error_regex"] = 'Domain name invalid.';
+$wb["host_txt"] = 'Host';
?>
--|sites|en|en_web_subdomain_list.lng
<?php
diff --git a/interface/web/themes/default/css/central.css b/interface/web/themes/default/css/central.css
index e9268d5..0afb8c6 100644
--- a/interface/web/themes/default/css/central.css
+++ b/interface/web/themes/default/css/central.css
@@ -1,32 +1,32 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) central stylesheet - ISPConfig 3: default theme
- * (de) Zentrales Stylesheet - ISPConfig 3: default theme
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import core styles | Basis-Stylesheets einbinden */
-@import url(../yaml/core/base.css);
-
-/* import screen layout | Screen-Layout einbinden */
-@import url(navigation/nav_top.css);
-@import url(navigation/nav_side.css);
-@import url(screen/basemod.css);
-@import url(screen/basemod_2col_left_seo.css);
-@import url(screen/content.css);
-@import url(screen/uni-form-generic.css);
-@import url(screen/uni-form.css);
-@import url(screen/content_ispc.css);
-
-/* import print layout | Druck-Layout einbinden */
-@import url(print/print_100.css);
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) central stylesheet - ISPConfig 3: default theme
+ * (de) Zentrales Stylesheet - ISPConfig 3: default theme
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import core styles | Basis-Stylesheets einbinden */
+@import url(../yaml/core/base.css);
+
+/* import screen layout | Screen-Layout einbinden */
+@import url(navigation/nav_top.css);
+@import url(navigation/nav_side.css);
+@import url(screen/basemod.css);
+@import url(screen/basemod_2col_left_seo.css);
+@import url(screen/content.css);
+@import url(screen/uni-form-generic.css);
+@import url(screen/uni-form.css);
+@import url(screen/content_ispc.css);
+
+/* import print layout | Druck-Layout einbinden */
+@import url(print/print_100.css);
diff --git a/interface/web/themes/default/css/patches/central.css b/interface/web/themes/default/css/patches/central.css
index 3ed0040..27dd462 100644
--- a/interface/web/themes/default/css/patches/central.css
+++ b/interface/web/themes/default/css/patches/central.css
@@ -1,37 +1,37 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) IE-Patch stylesheet - ISPConfig 3: default theme
- * (de) IE-Korrektur-Stylesheet - ISPConfig 3: default theme
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* Layout-independent adjustments | Layout-unabhängige Anpassungen ----------------------------------- */
-@import url(../yaml/core/iehacks.css);
-
-/* Layout-dependent adjustments | Layout-abhängige Anpassungen --------------------------------------- */
-@media screen, projection
-{
- /**
- * min-width/max-width workaround for IE5.x & IE6
- *
- * @workaround
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid no
- */
-
- * html #page_margins {
- /* Fallback if JavaScript is disabled */
- width: 80%;
- }
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) IE-Patch stylesheet - ISPConfig 3: default theme
+ * (de) IE-Korrektur-Stylesheet - ISPConfig 3: default theme
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* Layout-independent adjustments | Layout-unabhängige Anpassungen ----------------------------------- */
+@import url(../yaml/core/iehacks.css);
+
+/* Layout-dependent adjustments | Layout-abhängige Anpassungen --------------------------------------- */
+@media screen, projection
+{
+ /**
+ * min-width/max-width workaround for IE5.x & IE6
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid no
+ */
+
+ * html #page_margins {
+ /* Fallback if JavaScript is disabled */
+ width: 80%;
+ }
+}
diff --git a/interface/web/themes/default/css/print/print_100.css b/interface/web/themes/default/css/print/print_100.css
index 94315a8..95e63e8 100644
--- a/interface/web/themes/default/css/print/print_100.css
+++ b/interface/web/themes/default/css/print/print_100.css
@@ -1,31 +1,31 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) print stylesheet - ISPConfig 3: default theme
- * (de) Druck-Stylesheet - ISPConfig 3: default theme
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import print base styles | Basisformatierung für Drucklayout einbinden */
-@import url(../../yaml/core/print_base.css);
-
-/* #col1 - x
-** #col2 - 0
-** #col3 - 0
-*/
-@media print
-{
- #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
-
- #col2 { display:none; }
- #col3 { display:none; }
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet - ISPConfig 3: default theme
+ * (de) Druck-Stylesheet - ISPConfig 3: default theme
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import print base styles | Basisformatierung für Drucklayout einbinden */
+@import url(../../yaml/core/print_base.css);
+
+/* #col1 - x
+** #col2 - 0
+** #col3 - 0
+*/
+@media print
+{
+ #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+
+ #col2 { display:none; }
+ #col3 { display:none; }
+}
diff --git a/interface/web/themes/default/css/screen/basemod_2col_left_seo.css b/interface/web/themes/default/css/screen/basemod_2col_left_seo.css
index 525204b..3914fc3 100644
--- a/interface/web/themes/default/css/screen/basemod_2col_left_seo.css
+++ b/interface/web/themes/default/css/screen/basemod_2col_left_seo.css
@@ -1,48 +1,48 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) Variation of screen layout (basemod.css) - ISPConfig 3: default theme
- * (de) Variation des Screenlayouts (basemod.css) - ISPConfig 3: default theme
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-@media screen, projection
-{
- /**
- * (en) Repositioning content container
- * (de) Neupositionierung der Content Container
- *
- * |-------------------------------|
- * | #header |
- * |-------------------------------|
- * | #col1 | #col3 |
- * | 200px | flexible |
- * |-------------------------------|
- * | #footer |
- * |-------------------------------|
- */
-
- /* #col1 becomes the fixed navigation column | #col1 wird zur Navigationsspalte mit fester Breite */
- #col1 { width: 200px; float:left}
- #col1_content { padding: 0 10px 0 0; }
-
- /* #col2 is turned off | #col2 abschalten */
- #col2 { display:none; }
-
- /* #col3 becomes the main column | #col3 wird zur Hauptspalte */
- #col3 { margin-left: 200px; margin-right: 0; }
- #col3_content { padding: 0px 10px 10px 20px; }
-
- /* Graphic-free column dividers between #col1 and #col3 | Grafikfreier Spaltentrenner zw. #col1 und #col3*/
- #col3 {border-left: 1px #ddd solid;}
- #main {padding: 1em 0}
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Variation of screen layout (basemod.css) - ISPConfig 3: default theme
+ * (de) Variation des Screenlayouts (basemod.css) - ISPConfig 3: default theme
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+@media screen, projection
+{
+ /**
+ * (en) Repositioning content container
+ * (de) Neupositionierung der Content Container
+ *
+ * |-------------------------------|
+ * | #header |
+ * |-------------------------------|
+ * | #col1 | #col3 |
+ * | 200px | flexible |
+ * |-------------------------------|
+ * | #footer |
+ * |-------------------------------|
+ */
+
+ /* #col1 becomes the fixed navigation column | #col1 wird zur Navigationsspalte mit fester Breite */
+ #col1 { width: 200px; float:left}
+ #col1_content { padding: 0 10px 0 0; }
+
+ /* #col2 is turned off | #col2 abschalten */
+ #col2 { display:none; }
+
+ /* #col3 becomes the main column | #col3 wird zur Hauptspalte */
+ #col3 { margin-left: 200px; margin-right: 0; }
+ #col3_content { padding: 0px 10px 10px 20px; }
+
+ /* Graphic-free column dividers between #col1 and #col3 | Grafikfreier Spaltentrenner zw. #col1 und #col3*/
+ #col3 {border-left: 1px #ddd solid;}
+ #main {padding: 1em 0}
+}
diff --git a/interface/web/themes/default/css/screen/content.css b/interface/web/themes/default/css/screen/content.css
index ad5a0d2..daf1310 100644
--- a/interface/web/themes/default/css/screen/content.css
+++ b/interface/web/themes/default/css/screen/content.css
@@ -1,188 +1,188 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) Uniform design of standard content elements - ISPConfig 3: default theme
- * (de) Einheitliche Standardformatierungen f�r die wichtigten Inhalts-Elemente - ISPConfig 3: default theme
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- * @appdef yaml
- */
-
-@media all
-{
- /**
- * Fonts
- * (en) font-family and font-size selection for headings and standard text elements
- * (de) Zeichensatz und Schriftgrößen für Überschriften und übliche Text-Elemente
- *
- * @section content-fonts
- */
-
- /* (en) reset font size for all elements to standard (16 Pixel) */
- /* (de) Alle Schriftgrößen auf Standardgröße (16 Pixel) zurücksetzen */
- html * { font-size: 100.01% }
-
- /* (en) reset monospaced elements to font size 16px in Gecko browsers */
- /* (de) Schriftgröße von monospaced Elemente auf 16 Pixel setzen */
- textarea, pre, tt, code {
- font-family: Consolas,"Lucida Console","Courier New",monospace;
- font-size: 0.9em;
- }
-
- /* (en) base layout gets standard font size 12px */
- /* (de) Basis-Layout erhält Standardschriftgröße von 12 Pixeln */
- body {
- font-family: 'Trebuchet MS', sans-serif;
- font-size: 75.00%;
- color: #444;
- }
-
- h1,h2,h3,h4,h5,h6 {
- font-family: 'Trebuchet MS', sans-serif;
- font-weight:bold;
- color:#666;
- margin: 0 0 0.25em 0;
- }
-
- h1 { font-size: 200% } /* 24px */
- h2 { font-size: 200% } /* 24px */
- h3 { font-size: 150% } /* 18px */
- h4 { font-size: 133.33% } /* 16px */
- h5 { font-size: 116.67% } /* 14px */
- h6 { font-size: 116.67%; font-style:italic } /* 14px */
-
- #header h1 {
- font-size:2.5em;
- letter-spacing:-2px;
- line-height:65%;
- color: silver;
- }
-
- #header span {
- color:#333333;
- }
-
- p { line-height: 1.5em; margin: 0 0 1em 0; }
-
- /* ### Lists | Listen #### */
-
- ul, ol, dl { line-height: 1.5em; margin: 0 0 1em 1em }
- li { margin-left: 1.5em; line-height: 1.5em }
-
- dt { font-weight: bold }
- dd { margin: 0 0 1em 2em }
-
- /* ### text formatting | Textauszeichnung ### */
-
- cite, blockquote { font-style:italic }
- blockquote { margin: 0 0 1em 1.5em }
-
- strong,b { font-weight: bold }
- em,i { font-style:italic }
-
- pre, code { font-family: monospace; font-size: 1.1em; }
-
- acronym, abbr {
- letter-spacing: .07em;
- border-bottom: .1em dashed #c00;
- cursor: help;
- }
-
- /**
- * Generic Content Classes
- * (en) standard classes for positioning and highlighting
- * (de) Standardklassen zur Positionierung und Hervorhebung
- *
- * @section content-generic-classes
- */
-
- .note {background: #dfd; padding: 1em; border-top: 1px #bdb dotted; border-bottom: 1px #bdb dotted;}
- .important {background: #ffd; padding: 1em; border-top: 1px #ddb dotted; border-bottom: 1px #ddb dotted;}
- .warning {background: #fdd; padding: 1em; border-top: 1px #dbb dotted; border-bottom: 1px #dbb dotted;}
-
- .float_left { float: left; display:inline; margin-right: 1em; margin-bottom: 0.15em; }
- .float_right { float: right; display:inline; margin-left: 1em; margin-bottom: 0.15em; }
- .center { text-align:center; margin: 0.5em auto }
-
- /**
- * External Links
- *
- * (en) Formatting of hyperlinks
- * (de) Gestaltung von Hyperlinks
- *
- */
-
- a {color: #4D87C7; text-decoration:none;}
- a:focus,
- a:hover,
- a:active {color:#182E7A; text-decoration:underline;}
-
- #topsubnav a { color: #f0f8ff; font-weight: normal; background:transparent; text-decoration:none; }
- #topsubnav a:focus,
- #topsubnav a:hover,
- #topsubnav a:active { text-decoration:underline; background-color: transparent;}
-
- #footer a { color: #999; background:transparent; font-weight: bold;}
- #footer a:focus,
- #footer a:hover,
- #footer a:active {color: #4D87C7; background-color: transparent; text-decoration:underline;}
-
- /**
- * (en) Emphasizing external Hyperlinks via CSS
- * (de) Hervorhebung externer Hyperlinks mit CSS
- *
- * @section content-external-links
- * @app-yaml-default disabled
- */
-
- /*
- #main a[href^="http://www.my-domain.com"],
- #main a[href^="https://www.my-domain.com"]
- {
- padding-left: 12px;
- background-image: url('your_image.gif');
- background-repeat: no-repeat;
- background-position: 0 0.45em;
- }
- */
-
- /**
- * Tables | Tabellen
- * (en) Generic classes for table-width and design definition
- * (de) Generische Klassen für die Tabellenbreite und Gestaltungsvorschriften für Tabellen
- *
- * @section content-tables
- */
-
- table { width: auto; border-collapse:collapse; margin-bottom: 0.5em; }
- table.full { width: 100%; }
- table.fixed { table-layout:fixed }
-
- th,td { padding: 0.5em; }
- thead th { background: #444 url(../../images/lists_thead_bg.png) repeat-x; color: #fff }
- tbody th { background: #ccc; color: #333 }
- tbody th.sub { background: #ddd; color: #333 }
-
- /**
- * Miscellaneous | Sonstiges
- *
- * @section content-misc
- */
-
- hr {
- color: #fff;
- background:transparent;
- margin: 0 0 0.5em 0;
- padding: 0 0 0.5em 0;
- border:0;
- border-bottom: 1px #eee solid;
- }
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Uniform design of standard content elements - ISPConfig 3: default theme
+ * (de) Einheitliche Standardformatierungen f�r die wichtigten Inhalts-Elemente - ISPConfig 3: default theme
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ * @appdef yaml
+ */
+
+@media all
+{
+ /**
+ * Fonts
+ * (en) font-family and font-size selection for headings and standard text elements
+ * (de) Zeichensatz und Schriftgrößen für Überschriften und übliche Text-Elemente
+ *
+ * @section content-fonts
+ */
+
+ /* (en) reset font size for all elements to standard (16 Pixel) */
+ /* (de) Alle Schriftgrößen auf Standardgröße (16 Pixel) zurücksetzen */
+ html * { font-size: 100.01% }
+
+ /* (en) reset monospaced elements to font size 16px in Gecko browsers */
+ /* (de) Schriftgröße von monospaced Elemente auf 16 Pixel setzen */
+ textarea, pre, tt, code {
+ font-family: Consolas,"Lucida Console","Courier New",monospace;
+ font-size: 0.9em;
+ }
+
+ /* (en) base layout gets standard font size 12px */
+ /* (de) Basis-Layout erhält Standardschriftgröße von 12 Pixeln */
+ body {
+ font-family: 'Trebuchet MS', sans-serif;
+ font-size: 75.00%;
+ color: #444;
+ }
+
+ h1,h2,h3,h4,h5,h6 {
+ font-family: 'Trebuchet MS', sans-serif;
+ font-weight:bold;
+ color:#666;
+ margin: 0 0 0.25em 0;
+ }
+
+ h1 { font-size: 200% } /* 24px */
+ h2 { font-size: 200% } /* 24px */
+ h3 { font-size: 150% } /* 18px */
+ h4 { font-size: 133.33% } /* 16px */
+ h5 { font-size: 116.67% } /* 14px */
+ h6 { font-size: 116.67%; font-style:italic } /* 14px */
+
+ #header h1 {
+ font-size:2.5em;
+ letter-spacing:-2px;
+ line-height:65%;
+ color: silver;
+ }
+
+ #header span {
+ color:#333333;
+ }
+
+ p { line-height: 1.5em; margin: 0 0 1em 0; }
+
+ /* ### Lists | Listen #### */
+
+ ul, ol, dl { line-height: 1.5em; margin: 0 0 1em 1em }
+ li { margin-left: 1.5em; line-height: 1.5em }
+
+ dt { font-weight: bold }
+ dd { margin: 0 0 1em 2em }
+
+ /* ### text formatting | Textauszeichnung ### */
+
+ cite, blockquote { font-style:italic }
+ blockquote { margin: 0 0 1em 1.5em }
+
+ strong,b { font-weight: bold }
+ em,i { font-style:italic }
+
+ pre, code { font-family: monospace; font-size: 1.1em; }
+
+ acronym, abbr {
+ letter-spacing: .07em;
+ border-bottom: .1em dashed #c00;
+ cursor: help;
+ }
+
+ /**
+ * Generic Content Classes
+ * (en) standard classes for positioning and highlighting
+ * (de) Standardklassen zur Positionierung und Hervorhebung
+ *
+ * @section content-generic-classes
+ */
+
+ .note {background: #dfd; padding: 1em; border-top: 1px #bdb dotted; border-bottom: 1px #bdb dotted;}
+ .important {background: #ffd; padding: 1em; border-top: 1px #ddb dotted; border-bottom: 1px #ddb dotted;}
+ .warning {background: #fdd; padding: 1em; border-top: 1px #dbb dotted; border-bottom: 1px #dbb dotted;}
+
+ .float_left { float: left; display:inline; margin-right: 1em; margin-bottom: 0.15em; }
+ .float_right { float: right; display:inline; margin-left: 1em; margin-bottom: 0.15em; }
+ .center { text-align:center; margin: 0.5em auto }
+
+ /**
+ * External Links
+ *
+ * (en) Formatting of hyperlinks
+ * (de) Gestaltung von Hyperlinks
+ *
+ */
+
+ a {color: #4D87C7; text-decoration:none;}
+ a:focus,
+ a:hover,
+ a:active {color:#182E7A; text-decoration:underline;}
+
+ #topsubnav a { color: #f0f8ff; font-weight: normal; background:transparent; text-decoration:none; }
+ #topsubnav a:focus,
+ #topsubnav a:hover,
+ #topsubnav a:active { text-decoration:underline; background-color: transparent;}
+
+ #footer a { color: #999; background:transparent; font-weight: bold;}
+ #footer a:focus,
+ #footer a:hover,
+ #footer a:active {color: #4D87C7; background-color: transparent; text-decoration:underline;}
+
+ /**
+ * (en) Emphasizing external Hyperlinks via CSS
+ * (de) Hervorhebung externer Hyperlinks mit CSS
+ *
+ * @section content-external-links
+ * @app-yaml-default disabled
+ */
+
+ /*
+ #main a[href^="http://www.my-domain.com"],
+ #main a[href^="https://www.my-domain.com"]
+ {
+ padding-left: 12px;
+ background-image: url('your_image.gif');
+ background-repeat: no-repeat;
+ background-position: 0 0.45em;
+ }
+ */
+
+ /**
+ * Tables | Tabellen
+ * (en) Generic classes for table-width and design definition
+ * (de) Generische Klassen für die Tabellenbreite und Gestaltungsvorschriften für Tabellen
+ *
+ * @section content-tables
+ */
+
+ table { width: auto; border-collapse:collapse; margin-bottom: 0.5em; }
+ table.full { width: 100%; }
+ table.fixed { table-layout:fixed }
+
+ th,td { padding: 0.5em; }
+ thead th { background: #444 url(../../images/lists_thead_bg.png) repeat-x; color: #fff }
+ tbody th { background: #ccc; color: #333 }
+ tbody th.sub { background: #ddd; color: #333 }
+
+ /**
+ * Miscellaneous | Sonstiges
+ *
+ * @section content-misc
+ */
+
+ hr {
+ color: #fff;
+ background:transparent;
+ margin: 0 0 0.5em 0;
+ padding: 0 0 0.5em 0;
+ border:0;
+ border-bottom: 1px #eee solid;
+ }
+}
diff --git a/interface/web/themes/default/css/screen/uni-form-generic.css b/interface/web/themes/default/css/screen/uni-form-generic.css
index f9e0f39..8daf439 100644
--- a/interface/web/themes/default/css/screen/uni-form-generic.css
+++ b/interface/web/themes/default/css/screen/uni-form-generic.css
@@ -1,136 +1,136 @@
-/* Uni-Form by Dragan Babic [Superawesome Industries] - http: //sprawsm.com/uni-form/ */
-/* Some rights reserved - http: //creativecommons.org/licenses/by-sa/2.5/ */
-/* Do not edit this file directly, make your changes to uni-form.css in the same folder */
-
-/* ------------------------------------------------------------------------------ */
-
-.uniForm{ margin: 0; padding: 0; position: relative; z-index: 1; } /* reset stuff */
-
- /* Some generals and more resets */
- .uniForm fieldset{ border: none; margin: 0; padding: 0; }
- .uniForm fieldset legend{ margin: 0; padding: 0; }
-
- /* This is the main unit that contains our form elements */
- .uniForm .ctrlHolder,
- .uniForm .buttonHolder{ margin: 0; padding: 0; clear: both; }
-
- /* Clear all floats */
- .uniForm:after,
- .uniForm .buttonHolder:after,
- .uniForm .ctrlHolder:after,
- .uniForm .ctrlHolder .multiField:after,
- .uniForm .inlineLabel:after{ content: "."; display: block; height: 0; line-height: 0; font-size: 0; clear: both; min-height: 0; visibility: hidden; }
-
- /* A class to be used on a label that contains a checkbox or a radio button */
- .uniForm .inlineLabel,
- .uniForm .inlineLabels .inlineLabel,
- .uniForm .blockLabels .inlineLabel{ width: auto; float: none; margin: 0; display: block; }
- /* IE shows borders & padding on checkboxes and radio buttons if they are declared on an input element, remove them */
- /* Legacy/Inheritance fix */
- .uniForm .inlineLabel input,
- .uniForm .inlineLabels .inlineLabel input,
- .uniForm .blockLabels .inlineLabel input{ border: none; padding: 0; margin: 0; }
-
-/* ------------------------------------------------------------------------------ */
-
- /* Styles for form controls where labels are above the input elements */
- /* Set the class of the parent (preferably to a fieldset) to .blockLabels */
-
- .uniForm label,
- .uniForm .label,
- .uniForm .blockLabels label,
- .uniForm .blockLabels .label{ display: block; float: none; padding: 0; line-height: 100%; width: auto; }
-
- /* Float the input elements */
- .uniForm .textInput,
- .uniForm .blockLabels .textInput,
- .uniForm .blockLabels .fileUpload,
- .uniForm .selectInput,
- .uniForm .blockLabels .selectInput,
- .uniForm .blockLabels select,
- .uniForm textarea,
- .uniForm .blockLabels textarea{ float: left; }
-
- /* Postition the hints */
- .uniForm .formHint,
- .uniForm .blockLabels .formHint{ float: right; margin: 0; clear: none; }
-
- /* Position the elements inside combo boxes (multiple selects/checkboxes/radio buttons per unit) */
- .uniForm .multiField,
- .uniForm .blockLabels .multiField{ width: auto; float: left; }
- .uniForm .multiField .inlineLabel,
- .uniForm .blockLabels .multiField .inlineLabel{ display: block; margin: 0 0 .5em 0; }
- .uniForm .multiField .blockLabel,
- .uniForm .blockLabels .multiField .blockLabel{ float: left; width: auto; margin: 0; }
- .uniForm .multiField .blockLabel .textInput,
- .uniForm .multiField .blockLabel .selectInput,
- .uniForm .multiField .blockLabel select,
- .uniForm .blockLabels .multiField .blockLabel .textInput,
- .uniForm .blockLabels .multiField .blockLabel .selectInput,
- .uniForm .blockLabels .multiField .blockLabel select{ width: 100%; margin: 0; }
-
-/* ------------------------------------------------------------------------------ */
-
- /* Styles for form controls where labels are in line with the input elements */
- /* Set the class of the parent (preferably to a fieldset) to .inlineLabels */
- .uniForm .inlineLabels label,
- .uniForm .inlineLabels .label{ float: left; margin: 0; padding: 0; line-height: 100%; position: relative; }
-
- /* Float the input elements */
- .uniForm .inlineLabels .textInput,
- .uniForm .inlineLabels .fileUpload,
- .uniForm .inlineLabels .selectInput,
- .uniForm .inlineLabels select,
- .uniForm .inlineLabels textarea{ float: left; }
-
- /* Postition the hints */
- .uniForm .inlineLabels .formHint{ clear: both; float: none; }
- .uniForm .inlineLabels .multiField{ float: left; }
- .uniForm .inlineLabels .multiField .inlineLabel{}
- .uniForm .inlineLabels .multiField .blockLabel{}
- .uniForm .inlineLabels .multiField .blockLabel .textInput,
- .uniForm .inlineLabels .multiField .blockLabel .selectInput,
- .uniForm .inlineLabels .multiField .blockLabel select{ display: block; width: 100%; float: none; }
- .uniForm .inlineLabels .multiField select{ float: left; }
-
-/* ------------------------------------------------------------------------------ */
-
- /* Required fields asterisk styling for .blockLabels */
- .uniForm label em,
- .uniForm .label em,
- .uniForm .blockLabels label em,
- .uniForm .blockLabels .label em{ position: absolute; left: -7px; }
-
- /* Required fields asterisk styling for .inlineLabels */
- .uniForm .inlineLabels label em,
- .uniForm .inlineLabels .label em{ display: block; position: absolute; left: auto; right: 0; font-style: normal; font-weight: bold; }
- .uniForm .inlineLabel em{ position: absolute; left: 7px; }
-
-/* ------------------------------------------------------------------------------ */
-
- /* Messages */
- .uniForm #errorMsg,
- .uniForm .error{
- }
- .uniForm #errorMsg dt,
- .uniForm #errorMsg h3{
- }
- .uniForm #errorMsg dd{
- }
- .uniForm #errorMsg ol{
- }
- .uniForm #errorMsg ol li{
- }
- .uniForm .errorField{
- }
-
- .uniForm #OKMsg{
- }
-
-/* ------------------------------------------------------------------------------ */
-
- /* Columns */
-
- .uniForm .col{ float: left; }
- .uniForm .col.first{}
+/* Uni-Form by Dragan Babic [Superawesome Industries] - http: //sprawsm.com/uni-form/ */
+/* Some rights reserved - http: //creativecommons.org/licenses/by-sa/2.5/ */
+/* Do not edit this file directly, make your changes to uni-form.css in the same folder */
+
+/* ------------------------------------------------------------------------------ */
+
+.uniForm{ margin: 0; padding: 0; position: relative; z-index: 1; } /* reset stuff */
+
+ /* Some generals and more resets */
+ .uniForm fieldset{ border: none; margin: 0; padding: 0; }
+ .uniForm fieldset legend{ margin: 0; padding: 0; }
+
+ /* This is the main unit that contains our form elements */
+ .uniForm .ctrlHolder,
+ .uniForm .buttonHolder{ margin: 0; padding: 0; clear: both; }
+
+ /* Clear all floats */
+ .uniForm:after,
+ .uniForm .buttonHolder:after,
+ .uniForm .ctrlHolder:after,
+ .uniForm .ctrlHolder .multiField:after,
+ .uniForm .inlineLabel:after{ content: "."; display: block; height: 0; line-height: 0; font-size: 0; clear: both; min-height: 0; visibility: hidden; }
+
+ /* A class to be used on a label that contains a checkbox or a radio button */
+ .uniForm .inlineLabel,
+ .uniForm .inlineLabels .inlineLabel,
+ .uniForm .blockLabels .inlineLabel{ width: auto; float: none; margin: 0; display: block; }
+ /* IE shows borders & padding on checkboxes and radio buttons if they are declared on an input element, remove them */
+ /* Legacy/Inheritance fix */
+ .uniForm .inlineLabel input,
+ .uniForm .inlineLabels .inlineLabel input,
+ .uniForm .blockLabels .inlineLabel input{ border: none; padding: 0; margin: 0; }
+
+/* ------------------------------------------------------------------------------ */
+
+ /* Styles for form controls where labels are above the input elements */
+ /* Set the class of the parent (preferably to a fieldset) to .blockLabels */
+
+ .uniForm label,
+ .uniForm .label,
+ .uniForm .blockLabels label,
+ .uniForm .blockLabels .label{ display: block; float: none; padding: 0; line-height: 100%; width: auto; }
+
+ /* Float the input elements */
+ .uniForm .textInput,
+ .uniForm .blockLabels .textInput,
+ .uniForm .blockLabels .fileUpload,
+ .uniForm .selectInput,
+ .uniForm .blockLabels .selectInput,
+ .uniForm .blockLabels select,
+ .uniForm textarea,
+ .uniForm .blockLabels textarea{ float: left; }
+
+ /* Postition the hints */
+ .uniForm .formHint,
+ .uniForm .blockLabels .formHint{ float: right; margin: 0; clear: none; }
+
+ /* Position the elements inside combo boxes (multiple selects/checkboxes/radio buttons per unit) */
+ .uniForm .multiField,
+ .uniForm .blockLabels .multiField{ width: auto; float: left; }
+ .uniForm .multiField .inlineLabel,
+ .uniForm .blockLabels .multiField .inlineLabel{ display: block; margin: 0 0 .5em 0; }
+ .uniForm .multiField .blockLabel,
+ .uniForm .blockLabels .multiField .blockLabel{ float: left; width: auto; margin: 0; }
+ .uniForm .multiField .blockLabel .textInput,
+ .uniForm .multiField .blockLabel .selectInput,
+ .uniForm .multiField .blockLabel select,
+ .uniForm .blockLabels .multiField .blockLabel .textInput,
+ .uniForm .blockLabels .multiField .blockLabel .selectInput,
+ .uniForm .blockLabels .multiField .blockLabel select{ width: 100%; margin: 0; }
+
+/* ------------------------------------------------------------------------------ */
+
+ /* Styles for form controls where labels are in line with the input elements */
+ /* Set the class of the parent (preferably to a fieldset) to .inlineLabels */
+ .uniForm .inlineLabels label,
+ .uniForm .inlineLabels .label{ float: left; margin: 0; padding: 0; line-height: 100%; position: relative; }
+
+ /* Float the input elements */
+ .uniForm .inlineLabels .textInput,
+ .uniForm .inlineLabels .fileUpload,
+ .uniForm .inlineLabels .selectInput,
+ .uniForm .inlineLabels select,
+ .uniForm .inlineLabels textarea{ float: left; }
+
+ /* Postition the hints */
+ .uniForm .inlineLabels .formHint{ clear: both; float: none; }
+ .uniForm .inlineLabels .multiField{ float: left; }
+ .uniForm .inlineLabels .multiField .inlineLabel{}
+ .uniForm .inlineLabels .multiField .blockLabel{}
+ .uniForm .inlineLabels .multiField .blockLabel .textInput,
+ .uniForm .inlineLabels .multiField .blockLabel .selectInput,
+ .uniForm .inlineLabels .multiField .blockLabel select{ display: block; width: 100%; float: none; }
+ .uniForm .inlineLabels .multiField select{ float: left; }
+
+/* ------------------------------------------------------------------------------ */
+
+ /* Required fields asterisk styling for .blockLabels */
+ .uniForm label em,
+ .uniForm .label em,
+ .uniForm .blockLabels label em,
+ .uniForm .blockLabels .label em{ position: absolute; left: -7px; }
+
+ /* Required fields asterisk styling for .inlineLabels */
+ .uniForm .inlineLabels label em,
+ .uniForm .inlineLabels .label em{ display: block; position: absolute; left: auto; right: 0; font-style: normal; font-weight: bold; }
+ .uniForm .inlineLabel em{ position: absolute; left: 7px; }
+
+/* ------------------------------------------------------------------------------ */
+
+ /* Messages */
+ .uniForm #errorMsg,
+ .uniForm .error{
+ }
+ .uniForm #errorMsg dt,
+ .uniForm #errorMsg h3{
+ }
+ .uniForm #errorMsg dd{
+ }
+ .uniForm #errorMsg ol{
+ }
+ .uniForm #errorMsg ol li{
+ }
+ .uniForm .errorField{
+ }
+
+ .uniForm #OKMsg{
+ }
+
+/* ------------------------------------------------------------------------------ */
+
+ /* Columns */
+
+ .uniForm .col{ float: left; }
+ .uniForm .col.first{}
.uniForm .col.last{}
\ No newline at end of file
diff --git a/interface/web/themes/default/licences.txt b/interface/web/themes/default/licences.txt
index 5a50cbb..9b81005 100644
--- a/interface/web/themes/default/licences.txt
+++ b/interface/web/themes/default/licences.txt
@@ -1,8 +1,8 @@
-Theme created by Martin Henne (red-ray.de)
-
-based on:
-
-Templates: http://www.yaml.de
-Web-Forms: http://www.sprawsm.com/uni-form/
-Icons: http://www.pinvoke.com and http://www.randomjabber.com/static/sizcons
-Know-How: http://particletree.com/features/rediscovering-the-button-element
+Theme created by Martin Henne (red-ray.de)
+
+based on:
+
+Templates: http://www.yaml.de
+Web-Forms: http://www.sprawsm.com/uni-form/
+Icons: http://www.pinvoke.com and http://www.randomjabber.com/static/sizcons
+Know-How: http://particletree.com/features/rediscovering-the-button-element
diff --git a/interface/web/themes/default/templates/module.tpl.htm b/interface/web/themes/default/templates/module.tpl.htm
index 36cdd09..5192c43 100644
--- a/interface/web/themes/default/templates/module.tpl.htm
+++ b/interface/web/themes/default/templates/module.tpl.htm
@@ -1,37 +1,37 @@
- <tr>
- <td width="128" height="26" background="themes/{tmpl_var name="theme"}/images/nav_top_bg.gif"> </td>
- <td rowspan="3" class="mainContent">
- <table width="100%" height="100%" border="0" cellpadding="20" cellspacing="0">
- <tr>
- <td><iframe height="100%" width="100%" frameborder="0" name="content" src="{tmpl_var name="startpage"}"></iframe></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td width="128" align="right" valign="top" bgcolor="#DEE4F2"><table width="128" border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td height="10"> </td>
- </tr>
- <tr><td align="center">
- <tmpl_loop name="nav_left">
- <table bgcolor="#F4F6FB" width="115">
- <tr>
- <td class="navLeftHead"><tmpl_var name="title"></td>
- </tr>
- <tr>
- <td>
- <tmpl_loop name="items">
- <a href="<tmpl_var name='link'>" class="navLeftItem" target="<tmpl_var name='target'>"><tmpl_var name="title"></a><br>
- </tmpl_loop>
- </td>
- </tr>
- </table>
- <br />
- </tmpl_loop>
- </td></tr>
- </table></td>
- </tr>
- <tr>
- <td align="left" valign="bottom" bgcolor="#DEE4F2"> </td>
+ <tr>
+ <td width="128" height="26" background="themes/{tmpl_var name="theme"}/images/nav_top_bg.gif"> </td>
+ <td rowspan="3" class="mainContent">
+ <table width="100%" height="100%" border="0" cellpadding="20" cellspacing="0">
+ <tr>
+ <td><iframe height="100%" width="100%" frameborder="0" name="content" src="{tmpl_var name="startpage"}"></iframe></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td width="128" align="right" valign="top" bgcolor="#DEE4F2"><table width="128" border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td height="10"> </td>
+ </tr>
+ <tr><td align="center">
+ <tmpl_loop name="nav_left">
+ <table bgcolor="#F4F6FB" width="115">
+ <tr>
+ <td class="navLeftHead"><tmpl_var name="title"></td>
+ </tr>
+ <tr>
+ <td>
+ <tmpl_loop name="items">
+ <a href="<tmpl_var name='link'>" class="navLeftItem" target="<tmpl_var name='target'>"><tmpl_var name="title"></a><br>
+ </tmpl_loop>
+ </td>
+ </tr>
+ </table>
+ <br />
+ </tmpl_loop>
+ </td></tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td align="left" valign="bottom" bgcolor="#DEE4F2"> </td>
</tr>
\ No newline at end of file
diff --git a/interface/web/themes/default/templates/module_tree.tpl.htm b/interface/web/themes/default/templates/module_tree.tpl.htm
index b089578..bb6242d 100644
--- a/interface/web/themes/default/templates/module_tree.tpl.htm
+++ b/interface/web/themes/default/templates/module_tree.tpl.htm
@@ -1,38 +1,38 @@
- <tr>
- <td width="128" height="26" background="themes/{tmpl_var name="theme"}/images/nav_top_bg.gif"> </td>
- <td rowspan="3" class="mainContent">
- <table width="100%" height="100%" border="0" cellpadding="20" cellspacing="0">
- <tr>
- <td width="200"><iframe height="100%" width="100%" frameborder="0" name="navframe" src="{tmpl_var name="navframe_page"}"></iframe></td>
- <td><iframe height="100%" width="100%" frameborder="0" name="content" src="{tmpl_var name="startpage"}"></iframe></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td width="128" align="right" valign="top" bgcolor="#DEE4F2"><table width="128" border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td height="10"> </td>
- </tr>
- <tr><td align="center">
- <tmpl_loop name="nav_left">
- <table bgcolor="#F4F6FB" width="115">
- <tr>
- <td class="navLeftHead"><tmpl_var name="title"></td>
- </tr>
- <tr>
- <td>
- <tmpl_loop name="items">
- <a href="<tmpl_var name='link'>" class="navLeftItem" target="<tmpl_var name='target'>"><tmpl_var name="title"></a><br>
- </tmpl_loop>
- </td>
- </tr>
- </table>
- <br />
- </tmpl_loop>
- </td></tr>
- </table></td>
- </tr>
- <tr>
- <td align="left" valign="bottom" bgcolor="#DEE4F2"> </td>
+ <tr>
+ <td width="128" height="26" background="themes/{tmpl_var name="theme"}/images/nav_top_bg.gif"> </td>
+ <td rowspan="3" class="mainContent">
+ <table width="100%" height="100%" border="0" cellpadding="20" cellspacing="0">
+ <tr>
+ <td width="200"><iframe height="100%" width="100%" frameborder="0" name="navframe" src="{tmpl_var name="navframe_page"}"></iframe></td>
+ <td><iframe height="100%" width="100%" frameborder="0" name="content" src="{tmpl_var name="startpage"}"></iframe></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td width="128" align="right" valign="top" bgcolor="#DEE4F2"><table width="128" border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td height="10"> </td>
+ </tr>
+ <tr><td align="center">
+ <tmpl_loop name="nav_left">
+ <table bgcolor="#F4F6FB" width="115">
+ <tr>
+ <td class="navLeftHead"><tmpl_var name="title"></td>
+ </tr>
+ <tr>
+ <td>
+ <tmpl_loop name="items">
+ <a href="<tmpl_var name='link'>" class="navLeftItem" target="<tmpl_var name='target'>"><tmpl_var name="title"></a><br>
+ </tmpl_loop>
+ </td>
+ </tr>
+ </table>
+ <br />
+ </tmpl_loop>
+ </td></tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td align="left" valign="bottom" bgcolor="#DEE4F2"> </td>
</tr>
\ No newline at end of file
diff --git a/interface/web/themes/default/templates/sidenav.tpl.htm b/interface/web/themes/default/templates/sidenav.tpl.htm
index 71cb9bb..c71361c 100644
--- a/interface/web/themes/default/templates/sidenav.tpl.htm
+++ b/interface/web/themes/default/templates/sidenav.tpl.htm
@@ -1,24 +1,24 @@
-<ul id="submenu">
-<tmpl_loop name="nav_left">
- <li class="title">
- <tmpl_if name="startpage">
- <a href="#" onClick="loadContent('<tmpl_var name='startpage'>')">
- </tmpl_if>
- <tmpl_var name="title">
- <tmpl_if name="startpage">
- </a>
- </tmpl_if>
- </li>
- <tmpl_loop name="items">
- <li <tmpl_if name="html_id"> id='<tmpl_var name="html_id">' </tmpl_if>>
- <tmpl_if name="link">
- <a href="#" onClick="loadContent('<tmpl_var name='link'>')">
- </tmpl_if>
- <tmpl_var name="title">
- <tmpl_if name="link">
- </a>
- </tmpl_if>
- </li>
- </tmpl_loop>
-</tmpl_loop>
-</ul>
+<ul id="submenu">
+<tmpl_loop name="nav_left">
+ <li class="title">
+ <tmpl_if name="startpage">
+ <a href="#" onClick="loadContent('<tmpl_var name='startpage'>')">
+ </tmpl_if>
+ <tmpl_var name="title">
+ <tmpl_if name="startpage">
+ </a>
+ </tmpl_if>
+ </li>
+ <tmpl_loop name="items">
+ <li <tmpl_if name="html_id"> id='<tmpl_var name="html_id">' </tmpl_if>>
+ <tmpl_if name="link">
+ <a href="#" onClick="loadContent('<tmpl_var name='link'>')">
+ </tmpl_if>
+ <tmpl_var name="title">
+ <tmpl_if name="link">
+ </a>
+ </tmpl_if>
+ </li>
+ </tmpl_loop>
+</tmpl_loop>
+</ul>
diff --git a/interface/web/themes/default/templates/tabbed_form.tpl.htm b/interface/web/themes/default/templates/tabbed_form.tpl.htm
index 0e31bc0..c4e618d 100644
--- a/interface/web/themes/default/templates/tabbed_form.tpl.htm
+++ b/interface/web/themes/default/templates/tabbed_form.tpl.htm
@@ -1,28 +1,28 @@
-<tmpl_if name="form_hint">
-<h2><tmpl_var name="form_hint"></h2>
-</tmpl_if>
-<div class="tabbox_tabs">
- <ul>
-<tmpl_loop name="formTab">
-<tmpl_if name="active">
- <li class="active"><a href="javascript:changeTab('<tmpl_var name='name'>','<tmpl_var name='app_module'>/<tmpl_var name='form_action'>')"><tmpl_var name='title'></a></li>
-<tmpl_else>
- <li><a href="javascript:changeTab('<tmpl_var name='name'>','<tmpl_var name='app_module'>/<tmpl_var name='form_action'>')"><tmpl_var name='title'></a></li>
-</tmpl_if>
-</tmpl_loop>
- </ul>
-</div>
-<div id="tabbox_content">
-
- <tmpl_if name="msg">
- <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
- </tmpl_if>
- <tmpl_if name="error">
- <div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
- </tmpl_if>
-
- <tmpl_dyninclude name="content_tpl">
-</div>
-
-<input type="hidden" name="next_tab" value="">
-<input type="hidden" name="phpsessid" value="{tmpl_var name='phpsessid'}">
+<tmpl_if name="form_hint">
+<h2><tmpl_var name="form_hint"></h2>
+</tmpl_if>
+<div class="tabbox_tabs">
+ <ul>
+<tmpl_loop name="formTab">
+<tmpl_if name="active">
+ <li class="active"><a href="javascript:changeTab('<tmpl_var name='name'>','<tmpl_var name='app_module'>/<tmpl_var name='form_action'>')"><tmpl_var name='title'></a></li>
+<tmpl_else>
+ <li><a href="javascript:changeTab('<tmpl_var name='name'>','<tmpl_var name='app_module'>/<tmpl_var name='form_action'>')"><tmpl_var name='title'></a></li>
+</tmpl_if>
+</tmpl_loop>
+ </ul>
+</div>
+<div id="tabbox_content">
+
+ <tmpl_if name="msg">
+ <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+ </tmpl_if>
+ <tmpl_if name="error">
+ <div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+ </tmpl_if>
+
+ <tmpl_dyninclude name="content_tpl">
+</div>
+
+<input type="hidden" name="next_tab" value="">
+<input type="hidden" name="phpsessid" value="{tmpl_var name='phpsessid'}">
diff --git a/interface/web/themes/default/templates/topnav.tpl.htm b/interface/web/themes/default/templates/topnav.tpl.htm
index 668df7b..562f4a0 100644
--- a/interface/web/themes/default/templates/topnav.tpl.htm
+++ b/interface/web/themes/default/templates/topnav.tpl.htm
@@ -1,9 +1,9 @@
-<ul id="topmenu">
-<tmpl_loop name="nav_top">
-<tmpl_if name="active">
- <li id="topNav_current"><a href="#" class="topnav topnav-<tmpl_var name='module'>"><tmpl_var name="title"></a></li>
-<tmpl_else>
- <li><a href="#" onClick="capp('<tmpl_var name='module'>')" class="topnav topnav-<tmpl_var name='module'>"><tmpl_var name="title"></a></li>
-</tmpl_if>
-</tmpl_loop>
-</ul>
+<ul id="topmenu">
+<tmpl_loop name="nav_top">
+<tmpl_if name="active">
+ <li id="topNav_current"><a href="#" class="topnav topnav-<tmpl_var name='module'>"><tmpl_var name="title"></a></li>
+<tmpl_else>
+ <li><a href="#" onClick="capp('<tmpl_var name='module'>')" class="topnav topnav-<tmpl_var name='module'>"><tmpl_var name="title"></a></li>
+</tmpl_if>
+</tmpl_loop>
+</ul>
diff --git "a/interface/web/themes/default/yaml/\041important.txt" "b/interface/web/themes/default/yaml/\041important.txt"
index dfdf80d..ce2cc2d 100644
--- "a/interface/web/themes/default/yaml/\041important.txt"
+++ "b/interface/web/themes/default/yaml/\041important.txt"
@@ -1,4 +1,4 @@
-DON'T EDIT ANYTHING INSIDE THIS DIRECTORY!
-
-This theme is based on YAML V3.0.6, Build: 080609 (http://www.yaml.de/)
-CSS-Styles can be changed in the /themes/default/css/ directory
+DON'T EDIT ANYTHING INSIDE THIS DIRECTORY!
+
+This theme is based on YAML V3.0.6, Build: 080609 (http://www.yaml.de/)
+CSS-Styles can be changed in the /themes/default/css/ directory
diff --git a/interface/web/themes/default/yaml/core/base.css b/interface/web/themes/default/yaml/core/base.css
index 632248e..bc24d15 100644
--- a/interface/web/themes/default/yaml/core/base.css
+++ b/interface/web/themes/default/yaml/core/base.css
@@ -1,229 +1,229 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) YAML core stylesheet
- * (de) YAML Basis-Stylesheet
- *
- * Don't make any changes in this file!
- * Your changes should be placed in any css-file in your own stylesheet folder.
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-@media all
-{
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section browser reset
- * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html
- */
-
- /* (en) Global reset of paddings and margins for all HTML elements */
- /* (de) Globales Zurücksetzen der Innen- und Außenabstände für alle HTML-Elemente */
- * { margin:0; padding: 0; }
-
- /* (en) Correction: margin/padding reset caused too small select boxes. */
- /* (de) Korrektur: Das Zurücksetzen der Abstände verursacht zu kleine Selectboxen. */
- option { padding-left: 0.4em; }
-
- /**
- * (en) Global fix of the Italics bugs in IE 5.x and IE 6
- * (de) Globale Korrektur des Italics Bugs des IE 5.x und IE 6
- *
- * @bugfix
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid yes
- */
- * html body * { overflow:visible; }
- * html iframe, * html frame { overflow:auto; }
- * html frameset { overflow:hidden; }
-
- /* (en) Forcing vertical scrollbars in Netscape, Firefox and Safari browsers */
- /* (de) Erzwingen vertikaler Scrollbalken in Netscape, Firefox und Safari Browsern */
- html { height: 100%; margin-bottom: 1px; }
- body {
- /* (en) Fix for rounding errors when scaling font sizes in older versions of Opera browser */
- /* (de) Beseitigung von Rundungsfehler beim Skalieren von Schriftgrößen in älteren Opera Versionen */
- font-size: 100.01%;
-
- /* (en) Standard values for colors and text alignment */
- /* (de) Vorgabe der Standardfarben und Textausrichtung */
- color: #000;
- background: #fff;
- text-align: left;
- }
-
- /* (en) Clear borders for <fieldset> and <img> elements */
- /* (de) Rahmen für <fieldset> und <img> Elemente löschen */
- fieldset, img { border: 0 solid; }
-
- /* (en) new standard values for lists, blockquote and cite */
- /* (de) Neue Standardwerte für Listen & Zitate */
- ul, ol, dl { margin: 0 0 1em 1em }
- li { margin-left: 1.5em; line-height: 1.5em; }
-
- dt { font-weight: bold; }
- dd { margin: 0 0 1em 2em; }
-
- blockquote { margin: 0 0 1em 1.5em; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section base layout | Basis Layout
- * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html
- *
- * |-------------------------------|
- * | #header |
- * |-------------------------------|
- * | #col1 | #col3 | #col2 |
- * | 200 px | flexible | 200px |
- * |-------------------------------|
- * | #footer |
- * |-------------------------------|
- */
-
- #header { position:relative; }
-
- /* (en) Text Alignment for #topnav content */
- /* (de) Textausrichtung für #topnav Inhalte */
- #topnav { text-align: right; }
-
- /* (en) Absolute positioning only within #header */
- /* (de) Absolute Positionierung erfolgt nur innerhalb von #header */
- #header #topnav {
- position:absolute;
- top: 10px;
- right: 10px;
- }
-
- /* (en) Backup for correct positioning */
- /* (de) Absicherung korrekte Positionierung */
- #header, #nav, #main, #footer { clear:both; }
-
- /* (en/de) Standard: 200 Pixel */
- #col1 { float: left; width: 200px }
- /* (en/de) Standard: 200 Pixel */
- #col2 { float:right; width: 200px }
- /* (en) Standard: center column with flexible width */
- /* (de) Standard: Flexible mittlere Spalte */
- #col3 { width:auto; margin: 0 200px }
-
- /* (en) Preparation for absolute positioning within content columns */
- /* (de) Vorbereitung für absolute Positionierungen innerhalb der Inhaltsspalten */
- #col1_content, #col2_content, #col3_content { position:relative; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section generic classes for layout switching | Generische Klassen zur Layoutumschaltung
- * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html
- *
- * .hidecol1 -> 2-column-layout (using #col2 and #col3)
- * .hidecol2 -> 2-column-layout (using #col1 and #col3)
- * .hideboth -> single-column-layout (using #col3)
- */
-
- .hideboth #col3 { margin-left: 0; margin-right: 0; }
- .hidecol1 #col3 { margin-left: 0; margin-right: 200px; }
- .hidecol2 #col3 { margin-left: 200px; margin-right: 0; }
-
- .hideboth #col1, .hideboth #col2, .hidecol1 #col1, .hidecol2 #col2 { display:none; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section clearing methods
- * @see http://yaml.de/en/documentation/basics/general.html
- */
-
- /* (en) clearfix method for clearing floats */
- /* (de) Clearfix-Methode zum Clearen der Float-Umgebungen */
- .clearfix:after {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
- }
-
- /* (en) essential for Safari browser !! */
- /* (de) Diese Angabe benötigt der Safari-Browser zwingend !! */
- .clearfix { display: block; }
-
- /* (en) overflow method for clearing floats */
- /* (de) Overflow-Methode zum Clearen der Float-Umgebungen */
- .floatbox { overflow:hidden; }
-
- /* (en) IE-Clearing: Only used in Internet Explorer, switched on in iehacks.css */
- /* (de) IE-Clearing: Benötigt nur der Internet Explorer und über iehacks.css zugeschaltet */
- #ie_clearing { display: none; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section subtemplates
- * @see http://www.yaml.de/en/documentation/practice/subtemplates.html
- */
-
- .subcolumns { width: 100%; overflow:hidden; }
-
- /* (en) alternative class for optional support of old Mozilla/Netscape browers */
- /* (de) Alternative Klasse zur optionalen Unterstützung alter Mozilla/Netscape-Brower */
- .subcolumns_oldgecko { width: 100%; float:left; }
-
- .c50l, .c25l, .c33l, .c38l, .c66l, .c75l, .c62l {float: left; }
- .c50r, .c25r, .c33r, .c38r, .c66r, .c75r, .c62r {float: right; margin-left: -5px; }
-
- .c25l, .c25r { width: 25%; }
- .c33l, .c33r { width: 33.333%; }
- .c50l, .c50r { width: 50%; }
- .c66l, .c66r { width: 66.666%; }
- .c75l, .c75r { width: 75%; }
- .c38l, .c38r { width: 38.2%; }
- .c62l, .c62r { width: 61.8%; }
-
- .subc { padding: 0 0.5em; }
- .subcl { padding: 0 1em 0 0; }
- .subcr { padding: 0 0 0 1em; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section hidden elements | Versteckte Elemente
- * @see http://www.yaml.de/en/documentation/basics/skip-links.html
- *
- * (en) skip links and hidden content
- * (de) Skip-Links und versteckte Inhalte
- */
-
- /* (en) classes for invisible elements in the base layout */
- /* (de) Klassen für unsichtbare Elemente im Basislayout */
- .skip, .hideme, .print {
- position: absolute;
- top: -1000em;
- left: -1000em;
- height: 1px;
- width: 1px;
- }
-
- /* (en) make skip links visible when using tab navigation */
- /* (de) Skip-Links für Tab-Navigation sichtbar schalten */
- .skip:focus, .skip:active {
- position: static;
- top: 0;
- left: 0;
- height: auto;
- width: auto;
- }
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) YAML core stylesheet
+ * (de) YAML Basis-Stylesheet
+ *
+ * Don't make any changes in this file!
+ * Your changes should be placed in any css-file in your own stylesheet folder.
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+@media all
+{
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section browser reset
+ * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html
+ */
+
+ /* (en) Global reset of paddings and margins for all HTML elements */
+ /* (de) Globales Zurücksetzen der Innen- und Außenabstände für alle HTML-Elemente */
+ * { margin:0; padding: 0; }
+
+ /* (en) Correction: margin/padding reset caused too small select boxes. */
+ /* (de) Korrektur: Das Zurücksetzen der Abstände verursacht zu kleine Selectboxen. */
+ option { padding-left: 0.4em; }
+
+ /**
+ * (en) Global fix of the Italics bugs in IE 5.x and IE 6
+ * (de) Globale Korrektur des Italics Bugs des IE 5.x und IE 6
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+ * html body * { overflow:visible; }
+ * html iframe, * html frame { overflow:auto; }
+ * html frameset { overflow:hidden; }
+
+ /* (en) Forcing vertical scrollbars in Netscape, Firefox and Safari browsers */
+ /* (de) Erzwingen vertikaler Scrollbalken in Netscape, Firefox und Safari Browsern */
+ html { height: 100%; margin-bottom: 1px; }
+ body {
+ /* (en) Fix for rounding errors when scaling font sizes in older versions of Opera browser */
+ /* (de) Beseitigung von Rundungsfehler beim Skalieren von Schriftgrößen in älteren Opera Versionen */
+ font-size: 100.01%;
+
+ /* (en) Standard values for colors and text alignment */
+ /* (de) Vorgabe der Standardfarben und Textausrichtung */
+ color: #000;
+ background: #fff;
+ text-align: left;
+ }
+
+ /* (en) Clear borders for <fieldset> and <img> elements */
+ /* (de) Rahmen für <fieldset> und <img> Elemente löschen */
+ fieldset, img { border: 0 solid; }
+
+ /* (en) new standard values for lists, blockquote and cite */
+ /* (de) Neue Standardwerte für Listen & Zitate */
+ ul, ol, dl { margin: 0 0 1em 1em }
+ li { margin-left: 1.5em; line-height: 1.5em; }
+
+ dt { font-weight: bold; }
+ dd { margin: 0 0 1em 2em; }
+
+ blockquote { margin: 0 0 1em 1.5em; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section base layout | Basis Layout
+ * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html
+ *
+ * |-------------------------------|
+ * | #header |
+ * |-------------------------------|
+ * | #col1 | #col3 | #col2 |
+ * | 200 px | flexible | 200px |
+ * |-------------------------------|
+ * | #footer |
+ * |-------------------------------|
+ */
+
+ #header { position:relative; }
+
+ /* (en) Text Alignment for #topnav content */
+ /* (de) Textausrichtung für #topnav Inhalte */
+ #topnav { text-align: right; }
+
+ /* (en) Absolute positioning only within #header */
+ /* (de) Absolute Positionierung erfolgt nur innerhalb von #header */
+ #header #topnav {
+ position:absolute;
+ top: 10px;
+ right: 10px;
+ }
+
+ /* (en) Backup for correct positioning */
+ /* (de) Absicherung korrekte Positionierung */
+ #header, #nav, #main, #footer { clear:both; }
+
+ /* (en/de) Standard: 200 Pixel */
+ #col1 { float: left; width: 200px }
+ /* (en/de) Standard: 200 Pixel */
+ #col2 { float:right; width: 200px }
+ /* (en) Standard: center column with flexible width */
+ /* (de) Standard: Flexible mittlere Spalte */
+ #col3 { width:auto; margin: 0 200px }
+
+ /* (en) Preparation for absolute positioning within content columns */
+ /* (de) Vorbereitung für absolute Positionierungen innerhalb der Inhaltsspalten */
+ #col1_content, #col2_content, #col3_content { position:relative; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section generic classes for layout switching | Generische Klassen zur Layoutumschaltung
+ * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html
+ *
+ * .hidecol1 -> 2-column-layout (using #col2 and #col3)
+ * .hidecol2 -> 2-column-layout (using #col1 and #col3)
+ * .hideboth -> single-column-layout (using #col3)
+ */
+
+ .hideboth #col3 { margin-left: 0; margin-right: 0; }
+ .hidecol1 #col3 { margin-left: 0; margin-right: 200px; }
+ .hidecol2 #col3 { margin-left: 200px; margin-right: 0; }
+
+ .hideboth #col1, .hideboth #col2, .hidecol1 #col1, .hidecol2 #col2 { display:none; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section clearing methods
+ * @see http://yaml.de/en/documentation/basics/general.html
+ */
+
+ /* (en) clearfix method for clearing floats */
+ /* (de) Clearfix-Methode zum Clearen der Float-Umgebungen */
+ .clearfix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+
+ /* (en) essential for Safari browser !! */
+ /* (de) Diese Angabe benötigt der Safari-Browser zwingend !! */
+ .clearfix { display: block; }
+
+ /* (en) overflow method for clearing floats */
+ /* (de) Overflow-Methode zum Clearen der Float-Umgebungen */
+ .floatbox { overflow:hidden; }
+
+ /* (en) IE-Clearing: Only used in Internet Explorer, switched on in iehacks.css */
+ /* (de) IE-Clearing: Benötigt nur der Internet Explorer und über iehacks.css zugeschaltet */
+ #ie_clearing { display: none; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section subtemplates
+ * @see http://www.yaml.de/en/documentation/practice/subtemplates.html
+ */
+
+ .subcolumns { width: 100%; overflow:hidden; }
+
+ /* (en) alternative class for optional support of old Mozilla/Netscape browers */
+ /* (de) Alternative Klasse zur optionalen Unterstützung alter Mozilla/Netscape-Brower */
+ .subcolumns_oldgecko { width: 100%; float:left; }
+
+ .c50l, .c25l, .c33l, .c38l, .c66l, .c75l, .c62l {float: left; }
+ .c50r, .c25r, .c33r, .c38r, .c66r, .c75r, .c62r {float: right; margin-left: -5px; }
+
+ .c25l, .c25r { width: 25%; }
+ .c33l, .c33r { width: 33.333%; }
+ .c50l, .c50r { width: 50%; }
+ .c66l, .c66r { width: 66.666%; }
+ .c75l, .c75r { width: 75%; }
+ .c38l, .c38r { width: 38.2%; }
+ .c62l, .c62r { width: 61.8%; }
+
+ .subc { padding: 0 0.5em; }
+ .subcl { padding: 0 1em 0 0; }
+ .subcr { padding: 0 0 0 1em; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section hidden elements | Versteckte Elemente
+ * @see http://www.yaml.de/en/documentation/basics/skip-links.html
+ *
+ * (en) skip links and hidden content
+ * (de) Skip-Links und versteckte Inhalte
+ */
+
+ /* (en) classes for invisible elements in the base layout */
+ /* (de) Klassen für unsichtbare Elemente im Basislayout */
+ .skip, .hideme, .print {
+ position: absolute;
+ top: -1000em;
+ left: -1000em;
+ height: 1px;
+ width: 1px;
+ }
+
+ /* (en) make skip links visible when using tab navigation */
+ /* (de) Skip-Links für Tab-Navigation sichtbar schalten */
+ .skip:focus, .skip:active {
+ position: static;
+ top: 0;
+ left: 0;
+ height: auto;
+ width: auto;
+ }
+}
diff --git a/interface/web/themes/default/yaml/core/iehacks.css b/interface/web/themes/default/yaml/core/iehacks.css
index 8544596..41c3ee4 100644
--- a/interface/web/themes/default/yaml/core/iehacks.css
+++ b/interface/web/themes/default/yaml/core/iehacks.css
@@ -1,310 +1,310 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) YAML core stylesheet - structure-independent bugfixes of IE/Win CSS-bugs
- * (de) YAML Basis-Stylesheet - Strukturunabhängige Bugfixes von CSS-Bugs des IE/Win
- *
- * Don't make any changes in this file!
- * Your changes should be added to a separate patch-file.
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- * @appdef yaml
- */
-
-@media all
-{
- /**
- * (en) Debugging: When you see a green background, IE is getting this stylesheet
- * (de) Fehlersuche: Hintergrund leuchtet grün, wenn das Stylesheet korrekt geladen wurde
- *
- * @debug
- * @app-yaml-default disabled
- */
-
- /* body { background: #0f0; background-image: none; } */
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en) Forcing vertical scrollbars is not needed in IE (only for Firefox/Netscape/Safari)
- * (de) Erzwingen vertikaler Scrollbalken im IE nicht benötigt (nur im Firefox/Netscape/Safari)
- *
- * @workaround
- * @affected IE 5.x/Win, IE6, IE7
- * @css-for IE 5.x/Win, IE6, IE7
- * @valid yes
- */
-
- html { height: auto; margin-bottom:0; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en) Fixes IE5.x and IE6 overflow behavior of textarea and input elements elements
- * (de) Korrigiert das fehlerhafte overflow-Verhalten von textarea und input-Elementen
- *
- * @workaround
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid no
- */
-
- * html textarea { overflow:scroll; overflow-x: hidden; }
- * html input { overflow: hidden; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en) Stability fixes with 'position:relative'
- * (de) Stabilitätsverbesserungen durch 'position:relative'
- *
- * @bugfix
- * @affected IE 5.x/Win, IE6, IE7
- * @css-for IE 5.x/Win, IE6, IE7
- * @valid yes
- */
-
- body { position:relative; } /* Essential in IE7 for correct layout scaling ... */
- * html body { position:static; } /* ... but not for IE5.x and IE6 */
- #main { position: relative; } /* helpful for several problems in older IE versions*/
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en) Clearfix Method for containing floats in IE
- * (de) Clearfix-Anpassung für diverse IE-Versionen
- *
- * @workaround
- * @see http://www.456bereastreet.com/archive/200603/new_clearing_method_needed_for_ie7/#comment28
- * @affected IE 5.x/Win, IE6, IE7
- * @css-for IE 5.x/Win, IE6, IE7
- * @valid yes
- */
-
-
- .clearfix { display: inline-block; } /* ... especial for IE7 */
- .clearfix { display: block; } /* ... für IE5,IE6,IE7 */
- * html .clearfix { height: 1%; } /* ... für IE5 + IE6/Win | hasLayout aktivieren */
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en) Adjustment of .floatbox class for IE
- * (de) Anpassung der .floatbox-Klasse für IE
- *
- * @workaround
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid yes
- */
-
- * html .floatbox { width:100%; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en) Special class for oversized content element
- * (de) Spezielle Klasse für übergroße Inhaltselemente
- *
- * @workaround
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid yes
- */
-
- .slidebox {
- position:relative;
- margin-right: -1000px;
- height: 1%;
- }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en): Bugfix for partially displayed column separators
- * (de): Bugfix für unvollständige Darstellung der Spalteninhalte / Spaltentrenner
- *
- * @bugfix
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid yes
- */
-
- * html #col1,
- * html #col2,
- * html #col3 { position:relative; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en) Preventing several css bugs by forcing "hasLayout"
- * (de) Vermeidung verschiedenster Bugs durch Erzwingen von "hasLayout"
- *
- * @workaround
- * @affected IE 5.x/Win, IE6, IE7
- * @css-for IE 5.x/Win, IE6, IE7
- * @valid no
- */
-
- body { height: 1%; }
- #page_margins, #page, #header, #nav, #main, #footer { zoom:1; } /* IE6 & IE7 */
- #page_margins, #page { height: 1%; } /* IE 5.x */
- * html #header, * html #nav, * html #main, * html #footer { width: 100%; } /* IE 5.x & IE6 */
- * html #header, * html #nav, * html #main, * html #footer { wid\th: auto; } /* IE 6 */
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * Disappearing List-Background Bug
- * @see http://www.positioniseverything.net/explorer/ie-listbug.html
- *
- * @bugfix
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid yes
- */
- * html ul, * html ol, * html dl { position: relative; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * List-Numbering Bug
- *
- * @bugfix
- * @affected IE 5.x/Win, IE6, IE7
- * @css-for IE 5.x/Win, IE6, IE7
- * @valid yes
- */
- body ol li { display:list-item; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * (en) Workaround for 'collapsing margin at #col3' when using CSS-property clear
- * Left margin of #col3 collapses when using clear:both in 1-3-2 (or 2-3-1) layout and right column is the
- * longest and left column is the shortest one. For IE6 and IE7 a special workaround was developed
- * in YAML.
- *
- * (de) Workaround für 'kollabierenden Margin an #col3' bei Verwendung der CSS-Eigenschaft clear
- * Der linke Margin von #col3 kollabiert bei der Verwendung von clear:both im 1-3-2 (oder 2-3-1) Layout
- * wenn gleichzeitig die rechte Spalte die kürzeste und die rechte die Längste ist. Im IE6 und IE7 lässt
- * sich der Bug durch eine speziell für YAML entwickelten Workaround umgehen.
- *
- * @workaround
- * @affected IE 5.x/Win, IE6, IE7
- * @css-for IE 5.x/Win, IE6, IE7
- * @valid no
- */
-
- #ie_clearing {
- /* (en) Only a small help for debugging */
- /* (de) Nur eine kleine Hilfe zur Fehlersuche */
- position:static;
-
- /* (en) Make container visible in IE */
- /* (de) Container sichtbar machen im IE */
- display:block;
-
- /* (en) No fix possible in IE5.x, normal clearing used instead */
- /* (de) Kein Fix im IE5.x möglich, daher normales Clearing */
- \clear:both;
-
- /* (en) forcing clearing-like behavior with a simple oversized container in IE6 & IE7*/
- /* (de) IE-Clearing mit 100%-DIV für IE6 bzw. übergroßem Container im IE7 */
- width: 100%;
- font-size:0px;
- margin: -2px 0 -1em 1px;
- }
-
- * html #ie_clearing { margin: -2px 0 -1em 0; }
- #col3_content {margin-bottom:-2px; }
-
- /* (en) avoid horizontal scrollbars in IE7 in borderless layouts because of negative margins */
- /* (de) Vermeidung horizontaler Scrollbalken bei randabfallenden Layouts im IE7 */
- html { margin-right: 1px; }
- * html { margin-right: 0 }
-
-
- /* (en) Bugfix: Essential for IE7 */
- /* (de) Bugfix: Notwendig im IE7 */
- #col3 { position:relative; z-index: -1; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * IE/Win Guillotine Bug
- * @see http://www.positioniseverything.net/explorer/guillotine.html
- *
- * @workaround
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid yes
- */
-
- * html body a, * html body a:hover { background-color: transparent; }
-
-}
-
-@media screen, projection
-{
- /**
- * (en) IE-Adjustments for content columns and subtemplates
- * (de) IE-Anpassung für Spaltencontainer und Subtemplates
- *
- * Doubled Float-Margin Bug
- * @see http://positioniseverything.net/explorer/doubled-margin.html
- *
- * @bugfix
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6, IE7
- * @valid yes
- */
-
- #col1, #col2 { display:inline; }
-
- .c50l, .c25l, .c33l, .c38l, .c66l, .c75l, .c62l,
- .c50r, .c25r, .c33r, .c38r, .c66r, .c75r, .c62r { display:inline; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * Internet Explorer and the Expanding Box Problem
- * @see http://www.positioniseverything.net/explorer/expandingboxbug.html
- *
- * @workaround
- * @affected IE 5.x/Win, IE6
- * @css-for IE 5.x/Win, IE6
- * @valid yes
- */
-
- * html #col1_content,
- * html #col2_content,
- * html #col3_content { word-wrap: break-word; }
-
- * html .subcolumns .subc,
- * html .subcolumns .subcl,
- * html .subcolumns .subcr { word-wrap: break-word; overflow:hidden; }
-}
-
-@media print
-{
- /**
- * (en) Avoid unneeded page breaks of #col3 content in print layout.
- * (de) Vermeiden von unnötigen Seitenumbrüchen beim Ausdruck der Spalte #col3.
- *
- * @bugfix
- * @affected IE7
- * @css-for IE 5.x/Win, IE6, IE7
- * @valid yes
- */
-
- #col3 { height: 1%; }
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) YAML core stylesheet - structure-independent bugfixes of IE/Win CSS-bugs
+ * (de) YAML Basis-Stylesheet - Strukturunabhängige Bugfixes von CSS-Bugs des IE/Win
+ *
+ * Don't make any changes in this file!
+ * Your changes should be added to a separate patch-file.
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ * @appdef yaml
+ */
+
+@media all
+{
+ /**
+ * (en) Debugging: When you see a green background, IE is getting this stylesheet
+ * (de) Fehlersuche: Hintergrund leuchtet grün, wenn das Stylesheet korrekt geladen wurde
+ *
+ * @debug
+ * @app-yaml-default disabled
+ */
+
+ /* body { background: #0f0; background-image: none; } */
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Forcing vertical scrollbars is not needed in IE (only for Firefox/Netscape/Safari)
+ * (de) Erzwingen vertikaler Scrollbalken im IE nicht benötigt (nur im Firefox/Netscape/Safari)
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ html { height: auto; margin-bottom:0; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Fixes IE5.x and IE6 overflow behavior of textarea and input elements elements
+ * (de) Korrigiert das fehlerhafte overflow-Verhalten von textarea und input-Elementen
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid no
+ */
+
+ * html textarea { overflow:scroll; overflow-x: hidden; }
+ * html input { overflow: hidden; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Stability fixes with 'position:relative'
+ * (de) Stabilitätsverbesserungen durch 'position:relative'
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ body { position:relative; } /* Essential in IE7 for correct layout scaling ... */
+ * html body { position:static; } /* ... but not for IE5.x and IE6 */
+ #main { position: relative; } /* helpful for several problems in older IE versions*/
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Clearfix Method for containing floats in IE
+ * (de) Clearfix-Anpassung für diverse IE-Versionen
+ *
+ * @workaround
+ * @see http://www.456bereastreet.com/archive/200603/new_clearing_method_needed_for_ie7/#comment28
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+
+ .clearfix { display: inline-block; } /* ... especial for IE7 */
+ .clearfix { display: block; } /* ... für IE5,IE6,IE7 */
+ * html .clearfix { height: 1%; } /* ... für IE5 + IE6/Win | hasLayout aktivieren */
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Adjustment of .floatbox class for IE
+ * (de) Anpassung der .floatbox-Klasse für IE
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ * html .floatbox { width:100%; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Special class for oversized content element
+ * (de) Spezielle Klasse für übergroße Inhaltselemente
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ .slidebox {
+ position:relative;
+ margin-right: -1000px;
+ height: 1%;
+ }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en): Bugfix for partially displayed column separators
+ * (de): Bugfix für unvollständige Darstellung der Spalteninhalte / Spaltentrenner
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ * html #col1,
+ * html #col2,
+ * html #col3 { position:relative; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Preventing several css bugs by forcing "hasLayout"
+ * (de) Vermeidung verschiedenster Bugs durch Erzwingen von "hasLayout"
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid no
+ */
+
+ body { height: 1%; }
+ #page_margins, #page, #header, #nav, #main, #footer { zoom:1; } /* IE6 & IE7 */
+ #page_margins, #page { height: 1%; } /* IE 5.x */
+ * html #header, * html #nav, * html #main, * html #footer { width: 100%; } /* IE 5.x & IE6 */
+ * html #header, * html #nav, * html #main, * html #footer { wid\th: auto; } /* IE 6 */
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * Disappearing List-Background Bug
+ * @see http://www.positioniseverything.net/explorer/ie-listbug.html
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+ * html ul, * html ol, * html dl { position: relative; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * List-Numbering Bug
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+ body ol li { display:list-item; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Workaround for 'collapsing margin at #col3' when using CSS-property clear
+ * Left margin of #col3 collapses when using clear:both in 1-3-2 (or 2-3-1) layout and right column is the
+ * longest and left column is the shortest one. For IE6 and IE7 a special workaround was developed
+ * in YAML.
+ *
+ * (de) Workaround für 'kollabierenden Margin an #col3' bei Verwendung der CSS-Eigenschaft clear
+ * Der linke Margin von #col3 kollabiert bei der Verwendung von clear:both im 1-3-2 (oder 2-3-1) Layout
+ * wenn gleichzeitig die rechte Spalte die kürzeste und die rechte die Längste ist. Im IE6 und IE7 lässt
+ * sich der Bug durch eine speziell für YAML entwickelten Workaround umgehen.
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid no
+ */
+
+ #ie_clearing {
+ /* (en) Only a small help for debugging */
+ /* (de) Nur eine kleine Hilfe zur Fehlersuche */
+ position:static;
+
+ /* (en) Make container visible in IE */
+ /* (de) Container sichtbar machen im IE */
+ display:block;
+
+ /* (en) No fix possible in IE5.x, normal clearing used instead */
+ /* (de) Kein Fix im IE5.x möglich, daher normales Clearing */
+ \clear:both;
+
+ /* (en) forcing clearing-like behavior with a simple oversized container in IE6 & IE7*/
+ /* (de) IE-Clearing mit 100%-DIV für IE6 bzw. übergroßem Container im IE7 */
+ width: 100%;
+ font-size:0px;
+ margin: -2px 0 -1em 1px;
+ }
+
+ * html #ie_clearing { margin: -2px 0 -1em 0; }
+ #col3_content {margin-bottom:-2px; }
+
+ /* (en) avoid horizontal scrollbars in IE7 in borderless layouts because of negative margins */
+ /* (de) Vermeidung horizontaler Scrollbalken bei randabfallenden Layouts im IE7 */
+ html { margin-right: 1px; }
+ * html { margin-right: 0 }
+
+
+ /* (en) Bugfix: Essential for IE7 */
+ /* (de) Bugfix: Notwendig im IE7 */
+ #col3 { position:relative; z-index: -1; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * IE/Win Guillotine Bug
+ * @see http://www.positioniseverything.net/explorer/guillotine.html
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ * html body a, * html body a:hover { background-color: transparent; }
+
+}
+
+@media screen, projection
+{
+ /**
+ * (en) IE-Adjustments for content columns and subtemplates
+ * (de) IE-Anpassung für Spaltencontainer und Subtemplates
+ *
+ * Doubled Float-Margin Bug
+ * @see http://positioniseverything.net/explorer/doubled-margin.html
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ #col1, #col2 { display:inline; }
+
+ .c50l, .c25l, .c33l, .c38l, .c66l, .c75l, .c62l,
+ .c50r, .c25r, .c33r, .c38r, .c66r, .c75r, .c62r { display:inline; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * Internet Explorer and the Expanding Box Problem
+ * @see http://www.positioniseverything.net/explorer/expandingboxbug.html
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ * html #col1_content,
+ * html #col2_content,
+ * html #col3_content { word-wrap: break-word; }
+
+ * html .subcolumns .subc,
+ * html .subcolumns .subcl,
+ * html .subcolumns .subcr { word-wrap: break-word; overflow:hidden; }
+}
+
+@media print
+{
+ /**
+ * (en) Avoid unneeded page breaks of #col3 content in print layout.
+ * (de) Vermeiden von unnötigen Seitenumbrüchen beim Ausdruck der Spalte #col3.
+ *
+ * @bugfix
+ * @affected IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ #col3 { height: 1%; }
+}
diff --git a/interface/web/themes/default/yaml/core/print_base.css b/interface/web/themes/default/yaml/core/print_base.css
index 54c6a39..4418795 100644
--- a/interface/web/themes/default/yaml/core/print_base.css
+++ b/interface/web/themes/default/yaml/core/print_base.css
@@ -1,120 +1,120 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) YAML core stylesheet - print layout
- * (de) YAML Core-Stylesheet - Druck Layout
- *
- * Don't make any changes in this file!
- * Your changes should be added to 'print_xyz_draft.css' drafts from 'yaml/print/' folder.
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-@media print
-{
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section layout preparation
- * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html
- */
-
- /* (en) Preparing base layout for print */
- /* (de) Basislayout für Druck aufbereiten */
- body, #page_margins, #page, #main { margin:0; padding: 0; border: 0; }
- #page_margins, #page { width: 100% !important; min-width:0; max-width: none; }
- #header { height: auto; }
-
- /* (en) Hide unneeded container of the screenlayout in print layout */
- /* (de) Für den Druck nicht benötigte Container des Layouts abschalten */
- #topnav, #nav, #search, #footer { display: none; }
-
- /* (en) Linearising subtemplates */
- /* (de) Linearisierung der Subtemplates */
- .c25l, .c33l, .c38l, .c50l, .c62l, .c66l, .c75l,
- .c25r, .c33r, .c38r, .c50r, .c62r, .c66r, .c75r {
- width: 100%; margin:0; float:none; overflow:visible; display:table;
- }
- .subc, .subcl, .subcr { margin: 0; padding: 0; }
-
- /* (en) make .print class visible */
- /* (de) .print-Klasse sichtbar schalten */
- .print { position: static; top: 0; left: 0; height: auto; width: auto; }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section content preparation
- * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html
- */
-
- /* (en) Change font to serif */
- /* (de) Zeichensatz auf Serifen umstellen */
- body * { font-family: "Times New Roman", Times, serif; }
- code, pre { font-family:"Courier New", Courier, mono; }
- body { font-size: 12pt; }
-
- /* (en) Avoid page breaks right after headings */
- /* (de) Vermeidung von Seitenumbrüchen direkt nach einer Überschrift */
- h1,h2,h3,h4,h5,h6 { page-break-after:avoid; }
-
- /* (en) Format acronyms and abbreviations for print*/
- /* (de) Auszeichnung von Abkürzungen */
- abbr[title]:after,
- acronym[title]:after { content: '(' attr(title) ')'; }
-
- /* (en) Disable background graphics of links */
- /* (de) Abschalten evlt. vorhandener Hintergrundgrafiken zur Linkkennzeichnung */
- #page a[href^="http:"],
- #page a[href^="https:"] { padding-left: 0; background-image: none; }
-
- /* (en) Enable URL output in print layout */
- /* (de) Sichtbare Auszeichnung der URLs von Links */
- a[href]:after {
- content:" <URL: "attr(href)">";
- color:#444;
- background:inherit;
- font-style:italic;
- }
-
- /* (en) Preparation for optional column labels */
- /* (de) Vorbereitung für optionale Spaltenauszeichnung */
- #col1_content:before, #col2_content:before, #col3_content:before {
- content: "";
- color:#888;
- background:inherit;
- display:block;
- font-weight:bold;
- font-size:1.5em;
- }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section browser fixes for print layouts
- * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html
- */
-
- /**
- * (en) overflow:hidden Bug in print layouts
- * (de) overflow:hidden Bug in Drucklayouts
- *
- * @bugfix
- * @since 3.0
- * @affected FF2.0, IE7
- * @css-for all browsers
- * @valid yes
- */
-
- .floatbox,
- .subcolumns,
- .subcolums_oldgecko { overflow:visible; display: table; }
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) YAML core stylesheet - print layout
+ * (de) YAML Core-Stylesheet - Druck Layout
+ *
+ * Don't make any changes in this file!
+ * Your changes should be added to 'print_xyz_draft.css' drafts from 'yaml/print/' folder.
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+@media print
+{
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section layout preparation
+ * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html
+ */
+
+ /* (en) Preparing base layout for print */
+ /* (de) Basislayout für Druck aufbereiten */
+ body, #page_margins, #page, #main { margin:0; padding: 0; border: 0; }
+ #page_margins, #page { width: 100% !important; min-width:0; max-width: none; }
+ #header { height: auto; }
+
+ /* (en) Hide unneeded container of the screenlayout in print layout */
+ /* (de) Für den Druck nicht benötigte Container des Layouts abschalten */
+ #topnav, #nav, #search, #footer { display: none; }
+
+ /* (en) Linearising subtemplates */
+ /* (de) Linearisierung der Subtemplates */
+ .c25l, .c33l, .c38l, .c50l, .c62l, .c66l, .c75l,
+ .c25r, .c33r, .c38r, .c50r, .c62r, .c66r, .c75r {
+ width: 100%; margin:0; float:none; overflow:visible; display:table;
+ }
+ .subc, .subcl, .subcr { margin: 0; padding: 0; }
+
+ /* (en) make .print class visible */
+ /* (de) .print-Klasse sichtbar schalten */
+ .print { position: static; top: 0; left: 0; height: auto; width: auto; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section content preparation
+ * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html
+ */
+
+ /* (en) Change font to serif */
+ /* (de) Zeichensatz auf Serifen umstellen */
+ body * { font-family: "Times New Roman", Times, serif; }
+ code, pre { font-family:"Courier New", Courier, mono; }
+ body { font-size: 12pt; }
+
+ /* (en) Avoid page breaks right after headings */
+ /* (de) Vermeidung von Seitenumbrüchen direkt nach einer Überschrift */
+ h1,h2,h3,h4,h5,h6 { page-break-after:avoid; }
+
+ /* (en) Format acronyms and abbreviations for print*/
+ /* (de) Auszeichnung von Abkürzungen */
+ abbr[title]:after,
+ acronym[title]:after { content: '(' attr(title) ')'; }
+
+ /* (en) Disable background graphics of links */
+ /* (de) Abschalten evlt. vorhandener Hintergrundgrafiken zur Linkkennzeichnung */
+ #page a[href^="http:"],
+ #page a[href^="https:"] { padding-left: 0; background-image: none; }
+
+ /* (en) Enable URL output in print layout */
+ /* (de) Sichtbare Auszeichnung der URLs von Links */
+ a[href]:after {
+ content:" <URL: "attr(href)">";
+ color:#444;
+ background:inherit;
+ font-style:italic;
+ }
+
+ /* (en) Preparation for optional column labels */
+ /* (de) Vorbereitung für optionale Spaltenauszeichnung */
+ #col1_content:before, #col2_content:before, #col3_content:before {
+ content: "";
+ color:#888;
+ background:inherit;
+ display:block;
+ font-weight:bold;
+ font-size:1.5em;
+ }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section browser fixes for print layouts
+ * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html
+ */
+
+ /**
+ * (en) overflow:hidden Bug in print layouts
+ * (de) overflow:hidden Bug in Drucklayouts
+ *
+ * @bugfix
+ * @since 3.0
+ * @affected FF2.0, IE7
+ * @css-for all browsers
+ * @valid yes
+ */
+
+ .floatbox,
+ .subcolumns,
+ .subcolums_oldgecko { overflow:visible; display: table; }
+}
diff --git a/interface/web/themes/default/yaml/core/slim_base.css b/interface/web/themes/default/yaml/core/slim_base.css
index ef205e1..75596ca 100644
--- a/interface/web/themes/default/yaml/core/slim_base.css
+++ b/interface/web/themes/default/yaml/core/slim_base.css
@@ -1,50 +1,50 @@
-@charset "UTF-8";
-/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de)
-* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */
-@media all {
-*{margin:0;padding:0}
-option{padding-left:.4em}
-* html body *{overflow:visible}
-* html iframe,* html frame{overflow:auto}
-* html frameset{overflow:hidden}
-html{height:100%;margin-bottom:1px}
-body{font-size:100.01%;color:#000;background:#fff;text-align:left}
-fieldset,img{border:0 solid}
-ul,ol,dl{margin:0 0 1em 1em}
-li{margin-left:1.5em;line-height:1.5em}
-dt{font-weight:700}
-dd{margin:0 0 1em 2em}
-blockquote{margin:0 0 1em 1.5em}
-#header{position:relative}
-#topnav{text-align:right}
-#header #topnav{position:absolute;top:10px;right:10px}
-#header,#nav,#main,#footer{clear:both}
-#col1{float:left;width:200px}
-#col2{float:right;width:200px}
-#col3{width:auto;margin:0 200px}
-#col1_content,#col2_content,#col3_content{position:relative}
-.hideboth #col3{margin-left:0;margin-right:0}
-.hidecol1 #col3{margin-left:0;margin-right:200px}
-.hidecol2 #col3{margin-left:200px;margin-right:0}
-.hideboth #col1,.hideboth #col2,.hidecol1 #col1,.hidecol2 #col2{display:none}
-.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}
-.clearfix{display:block}
-.floatbox{overflow:hidden}
-#ie_clearing{display:none}
-.subcolumns{width:100%;overflow:hidden}
-.subcolumns_oldgecko{width:100%;float:left}
-.c50l,.c25l,.c33l,.c38l,.c66l,.c75l,.c62l{float:left}
-.c50r,.c25r,.c33r,.c38r,.c66r,.c75r,.c62r{float:right;margin-left:-5px}
-.c25l,.c25r{width:25%}
-.c33l,.c33r{width:33.333%}
-.c50l,.c50r{width:50%}
-.c66l,.c66r{width:66.666%}
-.c75l,.c75r{width:75%}
-.c38l,.c38r{width:38.2%}
-.c62l,.c62r{width:61.8%}
-.subc{padding:0 .5em}
-.subcl{padding:0 1em 0 0}
-.subcr{padding:0 0 0 1em}
-.skip,.hideme,.print{position:absolute;top:-1000em;left:-1000em;height:1px;width:1px}
-.skip:focus,.skip:active{position:static;top:0;left:0;height:auto;width:auto}
+@charset "UTF-8";
+/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de)
+* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */
+@media all {
+*{margin:0;padding:0}
+option{padding-left:.4em}
+* html body *{overflow:visible}
+* html iframe,* html frame{overflow:auto}
+* html frameset{overflow:hidden}
+html{height:100%;margin-bottom:1px}
+body{font-size:100.01%;color:#000;background:#fff;text-align:left}
+fieldset,img{border:0 solid}
+ul,ol,dl{margin:0 0 1em 1em}
+li{margin-left:1.5em;line-height:1.5em}
+dt{font-weight:700}
+dd{margin:0 0 1em 2em}
+blockquote{margin:0 0 1em 1.5em}
+#header{position:relative}
+#topnav{text-align:right}
+#header #topnav{position:absolute;top:10px;right:10px}
+#header,#nav,#main,#footer{clear:both}
+#col1{float:left;width:200px}
+#col2{float:right;width:200px}
+#col3{width:auto;margin:0 200px}
+#col1_content,#col2_content,#col3_content{position:relative}
+.hideboth #col3{margin-left:0;margin-right:0}
+.hidecol1 #col3{margin-left:0;margin-right:200px}
+.hidecol2 #col3{margin-left:200px;margin-right:0}
+.hideboth #col1,.hideboth #col2,.hidecol1 #col1,.hidecol2 #col2{display:none}
+.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}
+.clearfix{display:block}
+.floatbox{overflow:hidden}
+#ie_clearing{display:none}
+.subcolumns{width:100%;overflow:hidden}
+.subcolumns_oldgecko{width:100%;float:left}
+.c50l,.c25l,.c33l,.c38l,.c66l,.c75l,.c62l{float:left}
+.c50r,.c25r,.c33r,.c38r,.c66r,.c75r,.c62r{float:right;margin-left:-5px}
+.c25l,.c25r{width:25%}
+.c33l,.c33r{width:33.333%}
+.c50l,.c50r{width:50%}
+.c66l,.c66r{width:66.666%}
+.c75l,.c75r{width:75%}
+.c38l,.c38r{width:38.2%}
+.c62l,.c62r{width:61.8%}
+.subc{padding:0 .5em}
+.subcl{padding:0 1em 0 0}
+.subcr{padding:0 0 0 1em}
+.skip,.hideme,.print{position:absolute;top:-1000em;left:-1000em;height:1px;width:1px}
+.skip:focus,.skip:active{position:static;top:0;left:0;height:auto;width:auto}
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/core/slim_iehacks.css b/interface/web/themes/default/yaml/core/slim_iehacks.css
index 0b46deb..a201c14 100644
--- a/interface/web/themes/default/yaml/core/slim_iehacks.css
+++ b/interface/web/themes/default/yaml/core/slim_iehacks.css
@@ -1,36 +1,36 @@
-@charset UTF-8;
-/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de)
-* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */
-@media all {
-html{height:auto;margin-bottom:0;margin-right:1px}
-* html textarea{overflow:scroll;overflow-x:hidden}
-* html input{overflow:hidden}
-body{position:relative;height:1%}
-* html body{position:static}
-#main{position:relative}
-.clearfix{display:inline-block}
-.clearfix{display:block}
-* html .clearfix{height:1%}
-* html .floatbox{width:100%}
-.slidebox{position:relative;margin-right:-1000px;height:1%}
-* html #col1,* html #col2,* html #col3{position:relative}
-#page_margins,#page,#header,#nav,#main,#footer{zoom:1}
-#page_margins,#page{height:1%}
-* html #header,* html #nav,* html #main,* html #footer{width:100%;wid\th:auto}
-* html ul,* html ol,* html dl{position:relative}
-body ol li{display:list-item}
-#ie_clearing{position:static;display:block;\clear:both;width:100%;font-size:0;margin:-2px 0 -1em 1px}
-* html #ie_clearing{margin:-2px 0 -1em}
-#col3_content{margin-bottom:-2px}
-* html{margin-right:0}
-#col3{position:relative;z-index:-1}
-* html body a,* html body a:hover{background-color:transparent}
-}
-@media screen,projection {
-#col1,#col2,.c50l,.c25l,.c33l,.c38l,.c66l,.c75l,.c62l,.c50r,.c25r,.c33r,.c38r,.c66r,.c75r,.c62r{display:inline}
-* html #col1_content,* html #col2_content,* html #col3_content{word-wrap:break-word}
-* html .subcolumns .subc,* html .subcolumns .subcl,* html .subcolumns .subcr{word-wrap:break-word;overflow:hidden}
-}
-@media print {
-#col3{height:1%}
+@charset UTF-8;
+/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de)
+* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */
+@media all {
+html{height:auto;margin-bottom:0;margin-right:1px}
+* html textarea{overflow:scroll;overflow-x:hidden}
+* html input{overflow:hidden}
+body{position:relative;height:1%}
+* html body{position:static}
+#main{position:relative}
+.clearfix{display:inline-block}
+.clearfix{display:block}
+* html .clearfix{height:1%}
+* html .floatbox{width:100%}
+.slidebox{position:relative;margin-right:-1000px;height:1%}
+* html #col1,* html #col2,* html #col3{position:relative}
+#page_margins,#page,#header,#nav,#main,#footer{zoom:1}
+#page_margins,#page{height:1%}
+* html #header,* html #nav,* html #main,* html #footer{width:100%;wid\th:auto}
+* html ul,* html ol,* html dl{position:relative}
+body ol li{display:list-item}
+#ie_clearing{position:static;display:block;\clear:both;width:100%;font-size:0;margin:-2px 0 -1em 1px}
+* html #ie_clearing{margin:-2px 0 -1em}
+#col3_content{margin-bottom:-2px}
+* html{margin-right:0}
+#col3{position:relative;z-index:-1}
+* html body a,* html body a:hover{background-color:transparent}
+}
+@media screen,projection {
+#col1,#col2,.c50l,.c25l,.c33l,.c38l,.c66l,.c75l,.c62l,.c50r,.c25r,.c33r,.c38r,.c66r,.c75r,.c62r{display:inline}
+* html #col1_content,* html #col2_content,* html #col3_content{word-wrap:break-word}
+* html .subcolumns .subc,* html .subcolumns .subcl,* html .subcolumns .subcr{word-wrap:break-word;overflow:hidden}
+}
+@media print {
+#col3{height:1%}
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/core/slim_print_base.css b/interface/web/themes/default/yaml/core/slim_print_base.css
index 42a5d5b..f371b15 100644
--- a/interface/web/themes/default/yaml/core/slim_print_base.css
+++ b/interface/web/themes/default/yaml/core/slim_print_base.css
@@ -1,21 +1,21 @@
-@charset "UTF-8";
-/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de)
-* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */
-@media print {
-body,#page_margins,#page,#main{border:0;margin:0;padding:0}
-#page_margins,#page{width:100%!important;min-width:0;max-width:none}
-#header{height:auto}
-#topnav,#nav,#search,#footer{display:none}
-.c25l,.c33l,.c38l,.c50l,.c62l,.c66l,.c75l,.c25r,.c33r,.c38r,.c50r,.c62r,.c66r,.c75r{width:100%;float:none;overflow:visible;display:table;margin:0}
-.subc,.subcl,.subcr{margin:0;padding:0}
-.print{position:static;top:0;left:0;height:auto;width:auto}
-body *{font-family:"Times New Roman", Times, serif}
-code,pre{font-family:"Courier New", Courier, mono}
-body{font-size:12pt}
-h1,h2,h3,h4,h5,h6{page-break-after:avoid}
-abbr[title]:after,acronym[title]:after{content:'(' attr(title) ')'}
-#page a[href^="http:"],#page a[href^="https:"]{padding-left:0;background-image:none}
-a[href]:after{content:" <URL: "attr(href)">";color:#444;background:inherit;font-style:italic}
-#col1_content:before,#col2_content:before,#col3_content:before{content:"";color:#888;background:inherit;display:block;font-weight:700;font-size:1.5em}
-.floatbox,.subcolumns,.subcolums_oldgecko{overflow:visible;display:table}
+@charset "UTF-8";
+/* "Yet Another Multicolumn Layout" v3.0.6 (c) by Dirk Jesse (http://www.yaml.de)
+* $Revision: 202 $ $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $ */
+@media print {
+body,#page_margins,#page,#main{border:0;margin:0;padding:0}
+#page_margins,#page{width:100%!important;min-width:0;max-width:none}
+#header{height:auto}
+#topnav,#nav,#search,#footer{display:none}
+.c25l,.c33l,.c38l,.c50l,.c62l,.c66l,.c75l,.c25r,.c33r,.c38r,.c50r,.c62r,.c66r,.c75r{width:100%;float:none;overflow:visible;display:table;margin:0}
+.subc,.subcl,.subcr{margin:0;padding:0}
+.print{position:static;top:0;left:0;height:auto;width:auto}
+body *{font-family:"Times New Roman", Times, serif}
+code,pre{font-family:"Courier New", Courier, mono}
+body{font-size:12pt}
+h1,h2,h3,h4,h5,h6{page-break-after:avoid}
+abbr[title]:after,acronym[title]:after{content:'(' attr(title) ')'}
+#page a[href^="http:"],#page a[href^="https:"]{padding-left:0;background-image:none}
+a[href]:after{content:" <URL: "attr(href)">";color:#444;background:inherit;font-style:italic}
+#col1_content:before,#col2_content:before,#col3_content:before{content:"";color:#888;background:inherit;display:block;font-weight:700;font-size:1.5em}
+.floatbox,.subcolumns,.subcolums_oldgecko{overflow:visible;display:table}
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/debug/debug.css b/interface/web/themes/default/yaml/debug/debug.css
index 0c4269b..f0a1304 100644
--- a/interface/web/themes/default/yaml/debug/debug.css
+++ b/interface/web/themes/default/yaml/debug/debug.css
@@ -1,157 +1,157 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) YAML debugging stylesheet
- * (de) YAML Stylesheet zur Fehlersuche
- *
- * Don't make any changes in this file!
- * Your changes should be placed in any css-file in your own stylesheet folder.
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 43 $
- * @lastmodified $Date: 2007-06-11 16:09:28 +0200 (Mo, 11 Jun 2007) $
- */
-
-@media all
-{
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * @section layout preparation for debugging
- * @see http://www.yaml.de/en/documentation/practice/drafting-and-debugging.html
- */
-
- /* Adding debugging background */
- body { background: transparent url(images/grid_pattern.png) top left no-repeat !important; }
-
- /* CSS-Warning, if core stylesheet 'iehacks.css' is missing in the layout */
- *:first-child+html #ie_clearing { display:block; }
- * html #ie_clearing { display:block; }
-
- #ie_clearing {
- width: 500px;
- font-size: 25px;
- position:absolute;
- top: -2px;
- left:0px;
- background: url("images/warning_iehacks.gif") top left no-repeat;
- }
-
- /**
- * @section pixel grid
- */
-
- .bg_grid {
- background-image:url(images/grid_pattern.png) !important;
- background-repeat:no-repeat;
- background-position:top left !important;
- }
-
- /**
- * @section transparency
- */
-
- .transOFF { -moz-opacity: 1.0; opacity: 1.0; filter: alpha(Opacity=100);}
- .trans50,
- .transON { -moz-opacity: 0.5; opacity: 0.5; filter: alpha(Opacity=50);}
- .trans25 { -moz-opacity: 0.25; opacity: 0.25; filter: alpha(Opacity=25);}
- .trans75 { -moz-opacity: 0.75; opacity: 0.75; filter: alpha(Opacity=75);}
-
- /**
- * @section colors
- */
-
- .bg_red { background-color: #f00 !important;}
- .bg_blue { background-color: #00f !important;}
- .bg_green { background-color: #0f0 !important;}
-
- /**
- * @visualize semantic structure
- *
- * Many thanks to Tomas Caspers for some ideas
- */
-
- div[id] { padding: 0 !important; margin: 2px; border: 1px #000 solid !important; }
- div[id]:before {
- display:block;
- color: #fff;
- background: #800;
- padding: 2px;
- font: bold .8em "Lucida console", monospace;
- content: "[div #"attr(id)"]";
- }
-
- div[class="floatbox"] { background: #f4f4f4; }
- div[class="floatbox"]:before {
- display:block;
- color: #fff;
- background: #66a;
- padding: 2px;
- font: bold .8em "Lucida console", monospace;
- content: "[div ."attr(class)"]";
- }
-
- div[class="subcolumns"] { background: #f8f8f8; }
- div[class="subcolumns"]:before {
- display:block;
- color: #fff;
- background: #444;
- padding: 2px;
- font: bold .8em "Lucida console", monospace;
- content: "[div ."attr(class)"]";
- }
-
- div[class="subcolumns"] > div:before {
- display:block;
- color: #fff;
- background: #080;
- padding: 2px;
- font: bold .8em "Lucida console", monospace;
- content: "[div ."attr(class)"]";
- }
-
- div[class="subc"], div[class="subcl"], div[class="subcr"] { background: #eee; }
- div[class="subc"]:before, div[class="subcl"]:before, div[class="subcr"]:before {
- display:block;
- color: #fff;
- background: #6a6;
- padding: 2px;
- font: bold .8em "Lucida console", monospace;
- content: "[div ."attr(class)"]";
- }
-
- h1:before { content: "[h1] "; }
- h2:before { content: "[h2] "; }
- h3:before { content: "[h3] "; }
- h4:before { content: "[h4] "; }
- h5:before { content: "[h5] "; }
- h6:before { content: "[h6] "; }
-
- a:hover:before { content: " ( href='" attr(href) "' ) "; }
- a:hover:after { content: " [ title='"attr(title)"' ] "; }
-
- img:after { content:" ( alt='" attr(alt)"' ) "; }
-
- address, blockquote, dl, fieldset, form, h1, h2, h3, h4, ol, p, pre, ul {
- border: 1px dotted #888;
- margin: 2px;
- padding: 2px;
- display: block;
- }
-
- /**
- * @visualize inline elements
- *
- * Many thanks to Tomas Caspers for some ideas
- */
-
- abbr, acronym { background: #d9eaff; }
- q, cite, dfn, kbd { background: #ffe3f6; }
- /* :lang(de), :lang(en), :lang(fr), :lang(es) { background: #d9efaa !important; } */
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) YAML debugging stylesheet
+ * (de) YAML Stylesheet zur Fehlersuche
+ *
+ * Don't make any changes in this file!
+ * Your changes should be placed in any css-file in your own stylesheet folder.
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 43 $
+ * @lastmodified $Date: 2007-06-11 16:09:28 +0200 (Mo, 11 Jun 2007) $
+ */
+
+@media all
+{
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section layout preparation for debugging
+ * @see http://www.yaml.de/en/documentation/practice/drafting-and-debugging.html
+ */
+
+ /* Adding debugging background */
+ body { background: transparent url(images/grid_pattern.png) top left no-repeat !important; }
+
+ /* CSS-Warning, if core stylesheet 'iehacks.css' is missing in the layout */
+ *:first-child+html #ie_clearing { display:block; }
+ * html #ie_clearing { display:block; }
+
+ #ie_clearing {
+ width: 500px;
+ font-size: 25px;
+ position:absolute;
+ top: -2px;
+ left:0px;
+ background: url("images/warning_iehacks.gif") top left no-repeat;
+ }
+
+ /**
+ * @section pixel grid
+ */
+
+ .bg_grid {
+ background-image:url(images/grid_pattern.png) !important;
+ background-repeat:no-repeat;
+ background-position:top left !important;
+ }
+
+ /**
+ * @section transparency
+ */
+
+ .transOFF { -moz-opacity: 1.0; opacity: 1.0; filter: alpha(Opacity=100);}
+ .trans50,
+ .transON { -moz-opacity: 0.5; opacity: 0.5; filter: alpha(Opacity=50);}
+ .trans25 { -moz-opacity: 0.25; opacity: 0.25; filter: alpha(Opacity=25);}
+ .trans75 { -moz-opacity: 0.75; opacity: 0.75; filter: alpha(Opacity=75);}
+
+ /**
+ * @section colors
+ */
+
+ .bg_red { background-color: #f00 !important;}
+ .bg_blue { background-color: #00f !important;}
+ .bg_green { background-color: #0f0 !important;}
+
+ /**
+ * @visualize semantic structure
+ *
+ * Many thanks to Tomas Caspers for some ideas
+ */
+
+ div[id] { padding: 0 !important; margin: 2px; border: 1px #000 solid !important; }
+ div[id]:before {
+ display:block;
+ color: #fff;
+ background: #800;
+ padding: 2px;
+ font: bold .8em "Lucida console", monospace;
+ content: "[div #"attr(id)"]";
+ }
+
+ div[class="floatbox"] { background: #f4f4f4; }
+ div[class="floatbox"]:before {
+ display:block;
+ color: #fff;
+ background: #66a;
+ padding: 2px;
+ font: bold .8em "Lucida console", monospace;
+ content: "[div ."attr(class)"]";
+ }
+
+ div[class="subcolumns"] { background: #f8f8f8; }
+ div[class="subcolumns"]:before {
+ display:block;
+ color: #fff;
+ background: #444;
+ padding: 2px;
+ font: bold .8em "Lucida console", monospace;
+ content: "[div ."attr(class)"]";
+ }
+
+ div[class="subcolumns"] > div:before {
+ display:block;
+ color: #fff;
+ background: #080;
+ padding: 2px;
+ font: bold .8em "Lucida console", monospace;
+ content: "[div ."attr(class)"]";
+ }
+
+ div[class="subc"], div[class="subcl"], div[class="subcr"] { background: #eee; }
+ div[class="subc"]:before, div[class="subcl"]:before, div[class="subcr"]:before {
+ display:block;
+ color: #fff;
+ background: #6a6;
+ padding: 2px;
+ font: bold .8em "Lucida console", monospace;
+ content: "[div ."attr(class)"]";
+ }
+
+ h1:before { content: "[h1] "; }
+ h2:before { content: "[h2] "; }
+ h3:before { content: "[h3] "; }
+ h4:before { content: "[h4] "; }
+ h5:before { content: "[h5] "; }
+ h6:before { content: "[h6] "; }
+
+ a:hover:before { content: " ( href='" attr(href) "' ) "; }
+ a:hover:after { content: " [ title='"attr(title)"' ] "; }
+
+ img:after { content:" ( alt='" attr(alt)"' ) "; }
+
+ address, blockquote, dl, fieldset, form, h1, h2, h3, h4, ol, p, pre, ul {
+ border: 1px dotted #888;
+ margin: 2px;
+ padding: 2px;
+ display: block;
+ }
+
+ /**
+ * @visualize inline elements
+ *
+ * Many thanks to Tomas Caspers for some ideas
+ */
+
+ abbr, acronym { background: #d9eaff; }
+ q, cite, dfn, kbd { background: #ffe3f6; }
+ /* :lang(de), :lang(en), :lang(fr), :lang(es) { background: #d9efaa !important; } */
+}
diff --git a/interface/web/themes/default/yaml/navigation/nav_vlist.css b/interface/web/themes/default/yaml/navigation/nav_vlist.css
index af2f7e8..7f1a5b9 100644
--- a/interface/web/themes/default/yaml/navigation/nav_vlist.css
+++ b/interface/web/themes/default/yaml/navigation/nav_vlist.css
@@ -1,109 +1,109 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) Vertical list navigation "vlist"
- * (de) Vertikale Navigationsliste "vlist"
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-@media all
-{
- #submenu {
- width: 100%;
- overflow: hidden;
- margin: 2.4em 0 1.5em 0;
- list-style-type: none;
- border-top: 2px #ddd solid;
- border-bottom: 2px #ddd solid;
- }
-
- #submenu ul { list-style-type: none; margin:0; padding: 0; }
- #submenu li { float:left; width: 100%; margin:0; padding: 0; }
-
- #submenu a,
- #submenu strong {
- display:block;
- width: 90%;
- padding: 3px 0px 3px 10%;
- text-decoration: none;
- background-color:#fff;
- color: #444;
- border-bottom: 1px #eee solid;
- }
-
- /* Menu Title */
- #submenu li#title {
- width: 90%;
- padding: 3px 0px 3px 10%;
- font-weight: bold;
- color: #444;
- background-color: #fff;
- border-bottom: 4px #888 solid;
- }
-
- #submenu li span {
- display:block;
- width: 90%;
- padding: 3px 0px 3px 10%;
- font-weight: bold;
- border-bottom: 1px #ddd solid;
- }
-
- /* Level 1 */
- #submenu li#active,
- #submenu li strong {
- width: 90%;
- padding: 3px 0px 3px 10%;
- font-weight: bold;
- color: #fff;
- background-color:#aab;
- border-bottom: 1px #eee solid;
- }
-
- #submenu li a { width: 90%; padding-left: 10%; background-color:#fff; color: #444; }
- #submenu li a:focus,
- #submenu li a:hover,
- #submenu li a:active { background-color:#f63; color: #fff; }
-
- /* Level 2 */
- #submenu li ul li a,
- #submenu li ul li#active,
- #submenu li ul li strong,
- #submenu li ul li span { width: 80%; padding-left: 20%; }
-
- #submenu li ul li a { background-color:#f8f8f8; color: #666; }
- #submenu li ul li a:focus,
- #submenu li ul li a:hover,
- #submenu li ul li a:active { background-color:#f63; color: #fff; }
-
- /* Level 3 */
- #submenu li ul li ul li a,
- #submenu li ul li ul li#active,
- #submenu li ul li ul li strong,
- #submenu li ul li ul li span { width: 70%; padding-left: 30%; }
-
- #submenu li ul li ul li a { background-color:#fcfcfc; color: #888; }
- #submenu li ul li ul li a:focus,
- #submenu li ul li ul li a:hover,
- #submenu li ul li ul li a:active { background-color:#f63; color: #fff; }
-
- /* Level 4 */
- #submenu li ul li ul li ul li a,
- #submenu li ul li ul li ul li#active,
- #submenu li ul li ul li ul li strong,
- #submenu li ul li ul li ul li span { width: 60%; padding-left: 40%; }
-
- #submenu li ul li ul li ul li a { background-color:#ffffff; color: #aaa; }
- #submenu li ul li ul li ul li a:focus,
- #submenu li ul li ul li ul li a:hover,
- #submenu li ul li ul li ul li a:active { background-color:#f63; color: #fff; }
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Vertical list navigation "vlist"
+ * (de) Vertikale Navigationsliste "vlist"
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+@media all
+{
+ #submenu {
+ width: 100%;
+ overflow: hidden;
+ margin: 2.4em 0 1.5em 0;
+ list-style-type: none;
+ border-top: 2px #ddd solid;
+ border-bottom: 2px #ddd solid;
+ }
+
+ #submenu ul { list-style-type: none; margin:0; padding: 0; }
+ #submenu li { float:left; width: 100%; margin:0; padding: 0; }
+
+ #submenu a,
+ #submenu strong {
+ display:block;
+ width: 90%;
+ padding: 3px 0px 3px 10%;
+ text-decoration: none;
+ background-color:#fff;
+ color: #444;
+ border-bottom: 1px #eee solid;
+ }
+
+ /* Menu Title */
+ #submenu li#title {
+ width: 90%;
+ padding: 3px 0px 3px 10%;
+ font-weight: bold;
+ color: #444;
+ background-color: #fff;
+ border-bottom: 4px #888 solid;
+ }
+
+ #submenu li span {
+ display:block;
+ width: 90%;
+ padding: 3px 0px 3px 10%;
+ font-weight: bold;
+ border-bottom: 1px #ddd solid;
+ }
+
+ /* Level 1 */
+ #submenu li#active,
+ #submenu li strong {
+ width: 90%;
+ padding: 3px 0px 3px 10%;
+ font-weight: bold;
+ color: #fff;
+ background-color:#aab;
+ border-bottom: 1px #eee solid;
+ }
+
+ #submenu li a { width: 90%; padding-left: 10%; background-color:#fff; color: #444; }
+ #submenu li a:focus,
+ #submenu li a:hover,
+ #submenu li a:active { background-color:#f63; color: #fff; }
+
+ /* Level 2 */
+ #submenu li ul li a,
+ #submenu li ul li#active,
+ #submenu li ul li strong,
+ #submenu li ul li span { width: 80%; padding-left: 20%; }
+
+ #submenu li ul li a { background-color:#f8f8f8; color: #666; }
+ #submenu li ul li a:focus,
+ #submenu li ul li a:hover,
+ #submenu li ul li a:active { background-color:#f63; color: #fff; }
+
+ /* Level 3 */
+ #submenu li ul li ul li a,
+ #submenu li ul li ul li#active,
+ #submenu li ul li ul li strong,
+ #submenu li ul li ul li span { width: 70%; padding-left: 30%; }
+
+ #submenu li ul li ul li a { background-color:#fcfcfc; color: #888; }
+ #submenu li ul li ul li a:focus,
+ #submenu li ul li ul li a:hover,
+ #submenu li ul li ul li a:active { background-color:#f63; color: #fff; }
+
+ /* Level 4 */
+ #submenu li ul li ul li ul li a,
+ #submenu li ul li ul li ul li#active,
+ #submenu li ul li ul li ul li strong,
+ #submenu li ul li ul li ul li span { width: 60%; padding-left: 40%; }
+
+ #submenu li ul li ul li ul li a { background-color:#ffffff; color: #aaa; }
+ #submenu li ul li ul li ul li a:focus,
+ #submenu li ul li ul li ul li a:hover,
+ #submenu li ul li ul li ul li a:active { background-color:#f63; color: #fff; }
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/patches/patch_layout_draft.css b/interface/web/themes/default/yaml/patches/patch_layout_draft.css
index 83e8353..4490d7f 100644
--- a/interface/web/themes/default/yaml/patches/patch_layout_draft.css
+++ b/interface/web/themes/default/yaml/patches/patch_layout_draft.css
@@ -1,29 +1,29 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) Example of a patch stylesheet for the Internet Explorer
- * (de) Beispiel für ein Anpassungs-Stylesheet für den Internet Explorer
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* Layout independent adjustments | Layout-unabhängige Anpassungen ----------------------------------- */
-@import url(/yaml/core/iehacks.css);
-
-/* Box model adjustments for vlist navigation | Box-Modell-Anpassungen für vlist-Navigation */
-/* @import url(/yaml/patches/patch_nav_vlist.css); */
-
-/* Layout-dependent adjustments | Layout-abhängige Anpassungen --------------------------------------- */
-@media screen, projection
-{
- /* add your adjustments here | Fügen Sie Ihre Anpassungen hier ein */
-
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Example of a patch stylesheet for the Internet Explorer
+ * (de) Beispiel für ein Anpassungs-Stylesheet für den Internet Explorer
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* Layout independent adjustments | Layout-unabhängige Anpassungen ----------------------------------- */
+@import url(/yaml/core/iehacks.css);
+
+/* Box model adjustments for vlist navigation | Box-Modell-Anpassungen für vlist-Navigation */
+/* @import url(/yaml/patches/patch_nav_vlist.css); */
+
+/* Layout-dependent adjustments | Layout-abhängige Anpassungen --------------------------------------- */
+@media screen, projection
+{
+ /* add your adjustments here | Fügen Sie Ihre Anpassungen hier ein */
+
+}
diff --git a/interface/web/themes/default/yaml/patches/patch_nav_vlist.css b/interface/web/themes/default/yaml/patches/patch_nav_vlist.css
index 21041be..cbf2948 100644
--- a/interface/web/themes/default/yaml/patches/patch_nav_vlist.css
+++ b/interface/web/themes/default/yaml/patches/patch_nav_vlist.css
@@ -1,61 +1,61 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) IE adjustment stylesheet for YAML vlist navigation
- * Import this file within the IE-patch-file if needed in your layout
- *
- * (de) IE Anpassungs-Stylesheet für YAML vlist-Navigation
- * Einbindung ins Layout erfolgt über den Import innerhalb des IE-Anspassungs-Stylesheet
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-@media screen, projection
-{
- /**
- * Box Model Bug
- * (en) Adjustment of width values for list elements of the menu in IE 5.x/Win.
- * Note: If IE6 is running in quirks mode, it also needs 100% values!
- *
- * (de) Korrektur der Breitenangaben der Listenelemente des Submenüs im IE 5.x/Win.
- * Hinweis: Befindet sich der IE6 im Quirks Mode, so benötigt er ebenfalls 100%-Werte !
- *
- * @bugfix
- * @affected IE 5.x/Win (IE6 in Quirks-Mode)
- * @css-for IE 5.x/Win, IE6
- * @valid no
- */
-
- /* level 1 */
- * html #submenu li a,
- * html #submenu li strong,
- * html #submenu li span,
- * html #submenu li#title,
- * html #submenu li#active { width: 100%; w\idth: 90%; }
-
- /* level 2 */
- * html #submenu li ul li a,
- * html #submenu li ul li strong,
- * html #submenu li ul li span,
- * html #submenu li ul li#active { width: 100%; w\idth: 80%; }
-
- /* level 3 */
- * html #submenu li ul li ul li a,
- * html #submenu li ul li ul li strong,
- * html #submenu li ul li ul li span,
- * html #submenu li ul li ul li#active { width: 100%; w\idth: 70%; }
-
- /* level 4 */
- * html #submenu li ul li ul li ul li a,
- * html #submenu li ul li ul li ul li strong,
- * html #submenu li ul li ul li ul li span,
- * html #submenu li ul li ul li ul li#active { width: 100%; w\idth: 60%; }
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) IE adjustment stylesheet for YAML vlist navigation
+ * Import this file within the IE-patch-file if needed in your layout
+ *
+ * (de) IE Anpassungs-Stylesheet für YAML vlist-Navigation
+ * Einbindung ins Layout erfolgt über den Import innerhalb des IE-Anspassungs-Stylesheet
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+@media screen, projection
+{
+ /**
+ * Box Model Bug
+ * (en) Adjustment of width values for list elements of the menu in IE 5.x/Win.
+ * Note: If IE6 is running in quirks mode, it also needs 100% values!
+ *
+ * (de) Korrektur der Breitenangaben der Listenelemente des Submenüs im IE 5.x/Win.
+ * Hinweis: Befindet sich der IE6 im Quirks Mode, so benötigt er ebenfalls 100%-Werte !
+ *
+ * @bugfix
+ * @affected IE 5.x/Win (IE6 in Quirks-Mode)
+ * @css-for IE 5.x/Win, IE6
+ * @valid no
+ */
+
+ /* level 1 */
+ * html #submenu li a,
+ * html #submenu li strong,
+ * html #submenu li span,
+ * html #submenu li#title,
+ * html #submenu li#active { width: 100%; w\idth: 90%; }
+
+ /* level 2 */
+ * html #submenu li ul li a,
+ * html #submenu li ul li strong,
+ * html #submenu li ul li span,
+ * html #submenu li ul li#active { width: 100%; w\idth: 80%; }
+
+ /* level 3 */
+ * html #submenu li ul li ul li a,
+ * html #submenu li ul li ul li strong,
+ * html #submenu li ul li ul li span,
+ * html #submenu li ul li ul li#active { width: 100%; w\idth: 70%; }
+
+ /* level 4 */
+ * html #submenu li ul li ul li ul li a,
+ * html #submenu li ul li ul li ul li strong,
+ * html #submenu li ul li ul li ul li span,
+ * html #submenu li ul li ul li ul li#active { width: 100%; w\idth: 60%; }
+}
diff --git a/interface/web/themes/default/yaml/print/print_003_draft.css b/interface/web/themes/default/yaml/print/print_003_draft.css
index 29c6df6..0363b4e 100644
--- a/interface/web/themes/default/yaml/print/print_003_draft.css
+++ b/interface/web/themes/default/yaml/print/print_003_draft.css
@@ -1,32 +1,32 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) print stylesheet
- * (de) Druck-Stylesheet
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import print base styles | Basisformatierung für Drucklayout einbinden */
-@import url(../core/print_base.css);
-
-/* #col1 - 0
-** #col2 - 0
-** #col3 - x
-*/
-
-@media print
-{
- #col1 { display:none; }
- #col2 { display:none; }
-
- #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; }
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet
+ * (de) Druck-Stylesheet
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import print base styles | Basisformatierung für Drucklayout einbinden */
+@import url(../core/print_base.css);
+
+/* #col1 - 0
+** #col2 - 0
+** #col3 - x
+*/
+
+@media print
+{
+ #col1 { display:none; }
+ #col2 { display:none; }
+
+ #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; }
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/print/print_020_draft.css b/interface/web/themes/default/yaml/print/print_020_draft.css
index 885b0b9..2ded4f1 100644
--- a/interface/web/themes/default/yaml/print/print_020_draft.css
+++ b/interface/web/themes/default/yaml/print/print_020_draft.css
@@ -1,31 +1,31 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) print stylesheet
- * (de) Druck-Stylesheet
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import print base styles | Basisformatierung für Drucklayout einbinden */
-@import url(../core/print_base.css);
-
-/* #col1 - 0
-** #col2 - x
-** #col3 - 0
-*/
-@media print
-{
- #col1 { display:none; }
- #col3 { display:none; }
-
- #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet
+ * (de) Druck-Stylesheet
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import print base styles | Basisformatierung für Drucklayout einbinden */
+@import url(../core/print_base.css);
+
+/* #col1 - 0
+** #col2 - x
+** #col3 - 0
+*/
+@media print
+{
+ #col1 { display:none; }
+ #col3 { display:none; }
+
+ #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/print/print_023_draft.css b/interface/web/themes/default/yaml/print/print_023_draft.css
index a80bb08..e005a58 100644
--- a/interface/web/themes/default/yaml/print/print_023_draft.css
+++ b/interface/web/themes/default/yaml/print/print_023_draft.css
@@ -1,40 +1,40 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) print stylesheet
- * (de) Druck-Stylesheet
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import print base styles | Basisformatierung für Drucklayout einbinden */
-@import url(../core/print_base.css);
-
-/* #col1 - 0
-** #col2 - x
-** #col3 - x
-*/
-
-@media print
-{
- #col1 { display:none; }
-
- #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
- #col2_content { page-break-after:always; }
-
- #col3, #col3_content {width: 100%; margin:0; padding: 0; border:0; }
-
- /* Optional Column Labels | Optionale Spaltenauszeichnung
- #col2_content:before { content:" [ left | middle | right column ]"; }
- #col3_content:before { content:" [ left | middle | right column ]"; }
- */
-}
-
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet
+ * (de) Druck-Stylesheet
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import print base styles | Basisformatierung für Drucklayout einbinden */
+@import url(../core/print_base.css);
+
+/* #col1 - 0
+** #col2 - x
+** #col3 - x
+*/
+
+@media print
+{
+ #col1 { display:none; }
+
+ #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+ #col2_content { page-break-after:always; }
+
+ #col3, #col3_content {width: 100%; margin:0; padding: 0; border:0; }
+
+ /* Optional Column Labels | Optionale Spaltenauszeichnung
+ #col2_content:before { content:" [ left | middle | right column ]"; }
+ #col3_content:before { content:" [ left | middle | right column ]"; }
+ */
+}
+
diff --git a/interface/web/themes/default/yaml/print/print_100_draft.css b/interface/web/themes/default/yaml/print/print_100_draft.css
index 99f29b4..2a6c71b 100644
--- a/interface/web/themes/default/yaml/print/print_100_draft.css
+++ b/interface/web/themes/default/yaml/print/print_100_draft.css
@@ -1,31 +1,31 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) print stylesheet
- * (de) Druck-Stylesheet
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import print base styles | Basisformatierung für Drucklayout einbinden */
-@import url(../core/print_base.css);
-
-/* #col1 - x
-** #col2 - 0
-** #col3 - 0
-*/
-@media print
-{
- #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
-
- #col2 { display:none; }
- #col3 { display:none; }
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet
+ * (de) Druck-Stylesheet
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import print base styles | Basisformatierung für Drucklayout einbinden */
+@import url(../core/print_base.css);
+
+/* #col1 - x
+** #col2 - 0
+** #col3 - 0
+*/
+@media print
+{
+ #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+
+ #col2 { display:none; }
+ #col3 { display:none; }
+}
diff --git a/interface/web/themes/default/yaml/print/print_103_draft.css b/interface/web/themes/default/yaml/print/print_103_draft.css
index 983e61a..a436374 100644
--- a/interface/web/themes/default/yaml/print/print_103_draft.css
+++ b/interface/web/themes/default/yaml/print/print_103_draft.css
@@ -1,38 +1,38 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) print stylesheet
- * (de) Druck-Stylesheet
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import print base styles | Basisformatierung für Drucklayout einbinden */
-@import url(../core/print_base.css);
-
-/* #col1 - x
-** #col2 - 0
-** #col3 - x
-*/
-@media print
-{
- #col1, #col1_content {float:none; width: 100%; margin: 0; padding: 0; border: 0; }
- #col1_content {page-break-after:always; }
-
- #col2 { display:none; }
-
- #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; }
-
- /* Optional Column Labels | Optionale Spaltenauszeichnung
- #col1_content:before { content:" [ left | middle | right column ]"; }
- #col3_content:before { content:" [ left | middle | right column ]"; }
- */
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet
+ * (de) Druck-Stylesheet
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import print base styles | Basisformatierung für Drucklayout einbinden */
+@import url(../core/print_base.css);
+
+/* #col1 - x
+** #col2 - 0
+** #col3 - x
+*/
+@media print
+{
+ #col1, #col1_content {float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+ #col1_content {page-break-after:always; }
+
+ #col2 { display:none; }
+
+ #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; }
+
+ /* Optional Column Labels | Optionale Spaltenauszeichnung
+ #col1_content:before { content:" [ left | middle | right column ]"; }
+ #col3_content:before { content:" [ left | middle | right column ]"; }
+ */
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/print/print_120_draft.css b/interface/web/themes/default/yaml/print/print_120_draft.css
index 43f0950..50ee571 100644
--- a/interface/web/themes/default/yaml/print/print_120_draft.css
+++ b/interface/web/themes/default/yaml/print/print_120_draft.css
@@ -1,39 +1,39 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) print stylesheet
- * (de) Druck-Stylesheet
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import print base styles | Basisformatierung für Drucklayout einbinden */
-@import url(../core/print_base.css);
-
-/* #col1 - x
-** #col2 - x
-** #col3 - 0
-*/
-@media print
-{
- #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
- #col1_content { page-break-after:always; }
-
- #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
- #col2_content { page-break-after:always; }
-
- #col3 { display:none; }
-
- /* Optional Column Labels | Optionale Spaltenauszeichnung
- #col1_content:before { content:" [ left | middle | right column ]"; }
- #col2_content:before { content:" [ left | middle | right column ]"; }
- */
-}
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet
+ * (de) Druck-Stylesheet
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import print base styles | Basisformatierung für Drucklayout einbinden */
+@import url(../core/print_base.css);
+
+/* #col1 - x
+** #col2 - x
+** #col3 - 0
+*/
+@media print
+{
+ #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+ #col1_content { page-break-after:always; }
+
+ #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+ #col2_content { page-break-after:always; }
+
+ #col3 { display:none; }
+
+ /* Optional Column Labels | Optionale Spaltenauszeichnung
+ #col1_content:before { content:" [ left | middle | right column ]"; }
+ #col2_content:before { content:" [ left | middle | right column ]"; }
+ */
+}
diff --git a/interface/web/themes/default/yaml/print/print_123_draft.css b/interface/web/themes/default/yaml/print/print_123_draft.css
index d2586db..42a7de1 100644
--- a/interface/web/themes/default/yaml/print/print_123_draft.css
+++ b/interface/web/themes/default/yaml/print/print_123_draft.css
@@ -1,40 +1,40 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) print stylesheet
- * (de) Druck-Stylesheet
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-/* import print base styles | Basisformatierung für Drucklayout einbinden */
-@import url(../core/print_base.css);
-
-/* #col1 - x
-** #col2 - x
-** #col3 - x
-*/
-@media print
-{
- #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
- #col1_content { page-break-after:always; }
-
- #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
- #col2_content { page-break-after:always; }
-
- #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; }
-
- /* Optional Column Labels | Optionale Spaltenauszeichnung
- #col1_content:before { content:" [ left | middle | right column ]"; }
- #col2_content:before { content:" [ left | middle | right column ]"; }
- #col3_content:before { content:" [ left | middle | right column ]"; }
- */
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet
+ * (de) Druck-Stylesheet
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+/* import print base styles | Basisformatierung für Drucklayout einbinden */
+@import url(../core/print_base.css);
+
+/* #col1 - x
+** #col2 - x
+** #col3 - x
+*/
+@media print
+{
+ #col1, #col1_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+ #col1_content { page-break-after:always; }
+
+ #col2, #col2_content { float:none; width: 100%; margin: 0; padding: 0; border: 0; }
+ #col2_content { page-break-after:always; }
+
+ #col3, #col3_content { width: 100%; margin:0; padding: 0; border:0; }
+
+ /* Optional Column Labels | Optionale Spaltenauszeichnung
+ #col1_content:before { content:" [ left | middle | right column ]"; }
+ #col2_content:before { content:" [ left | middle | right column ]"; }
+ #col3_content:before { content:" [ left | middle | right column ]"; }
+ */
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/screen/basemod_draft.css b/interface/web/themes/default/yaml/screen/basemod_draft.css
index c738ee0..6d33ff8 100644
--- a/interface/web/themes/default/yaml/screen/basemod_draft.css
+++ b/interface/web/themes/default/yaml/screen/basemod_draft.css
@@ -1,70 +1,70 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) Template for designing a screen layout
- * (de) Gestaltungsvorlage für die Erstellung eines Screenlayouts
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- */
-
-@media screen, projection
-{
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * Design of the Basic Layout | Gestaltung des YAML Basis-Layouts
- *
- * @section layout-basics
- */
-
- /* Page margins and background | Randbereiche & Seitenhintergrund */
- body { }
-
- /* Layout: Width, Background, Border | Layout: Breite, Hintergrund, Rahmen */
- #page_margins { }
- #page{ }
-
- /* Design of the Main Layout Elements | Gestaltung der Hauptelemente des Layouts */
- #header { }
- #topnav { }
-
- #main { }
-
- #footer { }
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * Formatting of the Content Area | Formatierung der Inhaltsbereichs
- *
- * @section layout-main
- */
-
- #col1 { }
- #col1_content { }
-
- #col2 { }
- #col2_content { }
-
- #col3 { }
- #col3_content { }
-
-
- /*------------------------------------------------------------------------------------------------------*/
-
- /**
- * Design of Additional Layout Elements | Gestaltung weiterer Layoutelemente
- *
- * @section layout-misc
- */
-
-
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Template for designing a screen layout
+ * (de) Gestaltungsvorlage für die Erstellung eines Screenlayouts
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ */
+
+@media screen, projection
+{
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * Design of the Basic Layout | Gestaltung des YAML Basis-Layouts
+ *
+ * @section layout-basics
+ */
+
+ /* Page margins and background | Randbereiche & Seitenhintergrund */
+ body { }
+
+ /* Layout: Width, Background, Border | Layout: Breite, Hintergrund, Rahmen */
+ #page_margins { }
+ #page{ }
+
+ /* Design of the Main Layout Elements | Gestaltung der Hauptelemente des Layouts */
+ #header { }
+ #topnav { }
+
+ #main { }
+
+ #footer { }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * Formatting of the Content Area | Formatierung der Inhaltsbereichs
+ *
+ * @section layout-main
+ */
+
+ #col1 { }
+ #col1_content { }
+
+ #col2 { }
+ #col2_content { }
+
+ #col3 { }
+ #col3_content { }
+
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * Design of Additional Layout Elements | Gestaltung weiterer Layoutelemente
+ *
+ * @section layout-misc
+ */
+
+
}
\ No newline at end of file
diff --git a/interface/web/themes/default/yaml/screen/content_default.css b/interface/web/themes/default/yaml/screen/content_default.css
index 5742599..1852ac1 100644
--- a/interface/web/themes/default/yaml/screen/content_default.css
+++ b/interface/web/themes/default/yaml/screen/content_default.css
@@ -1,170 +1,170 @@
-@charset "UTF-8";
-/**
- * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
- *
- * (en) Uniform design of standard content elements
- * (de) Einheitliche Standardformatierungen für die wichtigten Inhalts-Elemente
- *
- * @copyright Copyright 2005-2008, Dirk Jesse
- * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
- * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
- * @link http://www.yaml.de
- * @package yaml
- * @version 3.0.6
- * @revision $Revision: 202 $
- * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
- * @appdef yaml
- */
-
-@media all
-{
- /**
- * Fonts
- * (en) font-family and font-size selection for headings and standard text elements
- * (de) Zeichensatz und Schriftgrößen für Überschriften und übliche Text-Elemente
- *
- * @section content-fonts
- */
-
- /* (en) reset font size for all elements to standard (16 Pixel) */
- /* (de) Alle Schriftgrößen auf Standardgröße (16 Pixel) zurücksetzen */
- html * { font-size: 100.01%; }
-
- /* (en) reset monospaced elements to font size 16px in Gecko browsers */
- /* (de) Schriftgröße von monospaced Elemente auf 16 Pixel setzen */
- textarea, pre, tt, code {
- font-family:"Courier New", Courier, monospace;
- }
-
- /* (en) base layout gets standard font size 12px */
- /* (de) Basis-Layout erhält Standardschriftgröße von 12 Pixeln */
- body {
- font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif;
- font-size: 75.00%;
- }
-
- h1,h2,h3,h4,h5,h6 { font-weight:bold; margin: 0 0 0.25em 0; }
- h1 { font-size: 200% } /* 24px */
- h2 { font-size: 166.67% } /* 20px */
- h3 { font-size: 150% } /* 18px */
- h4 { font-size: 133.33% } /* 16px */
- h5 { font-size: 116.67% } /* 14px */
- h6 { font-size: 116.67%; font-style:italic; } /* 14px */
-
- p { line-height: 1.5em; margin: 0 0 1em 0; }
-
- /* ### Lists | Listen #### */
-
- ul, ol, dl { line-height: 1.5em; margin: 0 0 1em 1em; }
- li { margin-left: 1.5em; line-height: 1.5em; }
-
- dt { font-weight: bold; }
- dd { margin: 0 0 1em 2em; }
-
- /* ### text formatting | Textauszeichnung ### */
-
- cite, blockquote { font-style:italic; }
- blockquote { margin: 0 0 1em 1.5em; }
-
- strong,b { font-weight: bold; }
- em,i { font-style:italic; }
-
- pre, code { font-family: monospace; font-size: 1.1em; }
-
- acronym, abbr {
- letter-spacing: .07em;
- border-bottom: .1em dashed #c00;
- cursor: help;
- }
-
- /**
- * Generic Content Classes
- * (en) standard classes for positioning and highlighting
- * (de) Standardklassen zur Positionierung und Hervorhebung
- *
- * @section content-generic-classes
- */
-
- .note { background: #dfd; padding: 1em; border-top: 1px #bdb dotted; border-bottom: 1px #bdb dotted; }
- .important { background: #ffd; padding: 1em; border-top: 1px #ddb dotted; border-bottom: 1px #ddb dotted; }
- .warning { background: #fdd; padding: 1em; border-top: 1px #dbb dotted; border-bottom: 1px #dbb dotted; }
-
- .float_left { float: left; display:inline; margin-right: 1em; margin-bottom: 0.15em; }
- .float_right { float: right; display:inline; margin-left: 1em; margin-bottom: 0.15em; }
- .center { text-align:center; margin: 0.5em auto; }
-
- /**
- * External Links
- *
- * (en) Formatting of hyperlinks
- * (de) Gestaltung von Hyperlinks
- *
- */
-
- a { color: #900; text-decoration:none; }
- a:focus,
- a:hover,
- a:active { background-color: #fee; text-decoration:underline; }
-
- #topnav a { color: #aac; font-weight: bold; background:transparent; text-decoration:none; }
- #topnav a:focus,
- #topnav a:hover,
- #topnav a:active{ text-decoration:underline; background-color: transparent; }
-
- #footer a { color: #aac; background:transparent; font-weight: bold; }
- #footer a:focus,
- #footer a:hover,
- #footer a:active { color: #fff; background-color: transparent; text-decoration:underline; }
-
- /**
- * (en) Emphasizing external Hyperlinks via CSS
- * (de) Hervorhebung externer Hyperlinks mit CSS
- *
- * @section content-external-links
- * @app-yaml-default disabled
- */
-
- /*
- #main a[href^="http://www.my-domain.com"],
- #main a[href^="https://www.my-domain.com"]
- {
- padding-left: 12px;
- background-image: url('your_image.gif');
- background-repeat: no-repeat;
- background-position: 0 0.45em;
- }
- */
-
- /**
- * Tables | Tabellen
- * (en) Generic classes for table-width and design definition
- * (de) Generische Klassen für die Tabellenbreite und Gestaltungsvorschriften für Tabellen
- *
- * @section content-tables
- */
-
- table { width: auto; border-collapse:collapse; margin-bottom: 0.5em; }
- table.full { width: 100%; }
- table.fixed { table-layout:fixed; }
-
- th,td { padding: 0.5em; }
- thead th { background: #444; color: #fff; }
- tbody th { background: #ccc; color: #333; }
- tbody th.sub { background: #ddd; color: #333; }
-
- /**
- * Miscellaneous | Sonstiges
- *
- * @section content-misc
- */
-
- hr {
- color: #fff;
- background:transparent;
- margin: 0 0 0.5em 0;
- padding: 0 0 0.5em 0;
- border:0;
- border-bottom: 1px #000 solid;
- }
-}
-
+@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Uniform design of standard content elements
+ * (de) Einheitliche Standardformatierungen für die wichtigten Inhalts-Elemente
+ *
+ * @copyright Copyright 2005-2008, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.0.6
+ * @revision $Revision: 202 $
+ * @lastmodified $Date: 2008-06-07 14:29:18 +0200 (Sa, 07 Jun 2008) $
+ * @appdef yaml
+ */
+
+@media all
+{
+ /**
+ * Fonts
+ * (en) font-family and font-size selection for headings and standard text elements
+ * (de) Zeichensatz und Schriftgrößen für Überschriften und übliche Text-Elemente
+ *
+ * @section content-fonts
+ */
+
+ /* (en) reset font size for all elements to standard (16 Pixel) */
+ /* (de) Alle Schriftgrößen auf Standardgröße (16 Pixel) zurücksetzen */
+ html * { font-size: 100.01%; }
+
+ /* (en) reset monospaced elements to font size 16px in Gecko browsers */
+ /* (de) Schriftgröße von monospaced Elemente auf 16 Pixel setzen */
+ textarea, pre, tt, code {
+ font-family:"Courier New", Courier, monospace;
+ }
+
+ /* (en) base layout gets standard font size 12px */
+ /* (de) Basis-Layout erhält Standardschriftgröße von 12 Pixeln */
+ body {
+ font-family: 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif;
+ font-size: 75.00%;
+ }
+
+ h1,h2,h3,h4,h5,h6 { font-weight:bold; margin: 0 0 0.25em 0; }
+ h1 { font-size: 200% } /* 24px */
+ h2 { font-size: 166.67% } /* 20px */
+ h3 { font-size: 150% } /* 18px */
+ h4 { font-size: 133.33% } /* 16px */
+ h5 { font-size: 116.67% } /* 14px */
+ h6 { font-size: 116.67%; font-style:italic; } /* 14px */
+
+ p { line-height: 1.5em; margin: 0 0 1em 0; }
+
+ /* ### Lists | Listen #### */
+
+ ul, ol, dl { line-height: 1.5em; margin: 0 0 1em 1em; }
+ li { margin-left: 1.5em; line-height: 1.5em; }
+
+ dt { font-weight: bold; }
+ dd { margin: 0 0 1em 2em; }
+
+ /* ### text formatting | Textauszeichnung ### */
+
+ cite, blockquote { font-style:italic; }
+ blockquote { margin: 0 0 1em 1.5em; }
+
+ strong,b { font-weight: bold; }
+ em,i { font-style:italic; }
+
+ pre, code { font-family: monospace; font-size: 1.1em; }
+
+ acronym, abbr {
+ letter-spacing: .07em;
+ border-bottom: .1em dashed #c00;
+ cursor: help;
+ }
+
+ /**
+ * Generic Content Classes
+ * (en) standard classes for positioning and highlighting
+ * (de) Standardklassen zur Positionierung und Hervorhebung
+ *
+ * @section content-generic-classes
+ */
+
+ .note { background: #dfd; padding: 1em; border-top: 1px #bdb dotted; border-bottom: 1px #bdb dotted; }
+ .important { background: #ffd; padding: 1em; border-top: 1px #ddb dotted; border-bottom: 1px #ddb dotted; }
+ .warning { background: #fdd; padding: 1em; border-top: 1px #dbb dotted; border-bottom: 1px #dbb dotted; }
+
+ .float_left { float: left; display:inline; margin-right: 1em; margin-bottom: 0.15em; }
+ .float_right { float: right; display:inline; margin-left: 1em; margin-bottom: 0.15em; }
+ .center { text-align:center; margin: 0.5em auto; }
+
+ /**
+ * External Links
+ *
+ * (en) Formatting of hyperlinks
+ * (de) Gestaltung von Hyperlinks
+ *
+ */
+
+ a { color: #900; text-decoration:none; }
+ a:focus,
+ a:hover,
+ a:active { background-color: #fee; text-decoration:underline; }
+
+ #topnav a { color: #aac; font-weight: bold; background:transparent; text-decoration:none; }
+ #topnav a:focus,
+ #topnav a:hover,
+ #topnav a:active{ text-decoration:underline; background-color: transparent; }
+
+ #footer a { color: #aac; background:transparent; font-weight: bold; }
+ #footer a:focus,
+ #footer a:hover,
+ #footer a:active { color: #fff; background-color: transparent; text-decoration:underline; }
+
+ /**
+ * (en) Emphasizing external Hyperlinks via CSS
+ * (de) Hervorhebung externer Hyperlinks mit CSS
+ *
+ * @section content-external-links
+ * @app-yaml-default disabled
+ */
+
+ /*
+ #main a[href^="http://www.my-domain.com"],
+ #main a[href^="https://www.my-domain.com"]
+ {
+ padding-left: 12px;
+ background-image: url('your_image.gif');
+ background-repeat: no-repeat;
+ background-position: 0 0.45em;
+ }
+ */
+
+ /**
+ * Tables | Tabellen
+ * (en) Generic classes for table-width and design definition
+ * (de) Generische Klassen für die Tabellenbreite und Gestaltungsvorschriften für Tabellen
+ *
+ * @section content-tables
+ */
+
+ table { width: auto; border-collapse:collapse; margin-bottom: 0.5em; }
+ table.full { width: 100%; }
+ table.fixed { table-layout:fixed; }
+
+ th,td { padding: 0.5em; }
+ thead th { background: #444; color: #fff; }
+ tbody th { background: #ccc; color: #333; }
+ tbody th.sub { background: #ddd; color: #333; }
+
+ /**
+ * Miscellaneous | Sonstiges
+ *
+ * @section content-misc
+ */
+
+ hr {
+ color: #fff;
+ background:transparent;
+ margin: 0 0 0.5em 0;
+ padding: 0 0 0.5em 0;
+ border:0;
+ border-bottom: 1px #000 solid;
+ }
+}
+
diff --git a/interface/web/themes/default_64_navimg/css/additional.css b/interface/web/themes/default_64_navimg/css/additional.css
index 61bed3f..465f042 100644
--- a/interface/web/themes/default_64_navimg/css/additional.css
+++ b/interface/web/themes/default_64_navimg/css/additional.css
@@ -1,60 +1,60 @@
-@media all
-{
- #topNav a {
- background-color: #D3D3D3;
- background-position: center top;
- background-repeat: no-repeat;
- color:black;
- display:inline-block;
- height:20px;
- padding-top:68px;
- text-align:center;
- text-decoration:none;
- width:97px;
- }
-
- .topnav-admin {
- background-image: url('/themes/default/icons/x64/system.png') !important;
- }
-
- .topnav-client {
- background-image: url('/themes/default/icons/x64/client.png') !important;
- }
-
- .topnav-mail {
- background-image: url('/themes/default/icons/x64/email.png') !important;
- }
-
- .topnav-monitor {
- background-image: url('/themes/default/icons/x64/monitor.png') !important;
- }
-
- .topnav-sites {
- background-image: url('/themes/default/icons/x64/sites.png') !important;
- }
-
- .topnav-dns {
- background-image: url('/themes/default/icons/x64/dns.png') !important;
- }
-
- .topnav-tools {
- background-image: url('/themes/default/icons/x64/tools.png') !important;
- }
-
- .topnav-help {
- background-image: url('/themes/default/icons/x64/help.png') !important;
- }
-
- .topnav- {
- background-image: url('/themes/default/icons/x64/login.png') !important;
- }
-
- .topnav-domain {
- background-image: url('/themes/default/icons/x64/domain.png') !important;
- }
-
- .topnav-dashboard {
- background-image: url('/themes/default/icons/x64/dashboard.png') !important;
- }
-
+@media all
+{
+ #topNav a {
+ background-color: #D3D3D3;
+ background-position: center top;
+ background-repeat: no-repeat;
+ color:black;
+ display:inline-block;
+ height:20px;
+ padding-top:68px;
+ text-align:center;
+ text-decoration:none;
+ width:97px;
+ }
+
+ .topnav-admin {
+ background-image: url('/themes/default/icons/x64/system.png') !important;
+ }
+
+ .topnav-client {
+ background-image: url('/themes/default/icons/x64/client.png') !important;
+ }
+
+ .topnav-mail {
+ background-image: url('/themes/default/icons/x64/email.png') !important;
+ }
+
+ .topnav-monitor {
+ background-image: url('/themes/default/icons/x64/monitor.png') !important;
+ }
+
+ .topnav-sites {
+ background-image: url('/themes/default/icons/x64/sites.png') !important;
+ }
+
+ .topnav-dns {
+ background-image: url('/themes/default/icons/x64/dns.png') !important;
+ }
+
+ .topnav-tools {
+ background-image: url('/themes/default/icons/x64/tools.png') !important;
+ }
+
+ .topnav-help {
+ background-image: url('/themes/default/icons/x64/help.png') !important;
+ }
+
+ .topnav- {
+ background-image: url('/themes/default/icons/x64/login.png') !important;
+ }
+
+ .topnav-domain {
+ background-image: url('/themes/default/icons/x64/domain.png') !important;
+ }
+
+ .topnav-dashboard {
+ background-image: url('/themes/default/icons/x64/dashboard.png') !important;
+ }
+
}
\ No newline at end of file
diff --git a/interface/web/themes/default_no_navimg/css/additional.css b/interface/web/themes/default_no_navimg/css/additional.css
index c5ceae2..01ca51f 100644
--- a/interface/web/themes/default_no_navimg/css/additional.css
+++ b/interface/web/themes/default_no_navimg/css/additional.css
@@ -1,60 +1,60 @@
-@media all
-{
- #topNav a {
- background-color: #D3D3D3;
- background-position: center top;
- background-repeat: no-repeat;
- color:black;
- display:inline-block;
- height:20px;
- padding-top:5px;
- text-align:center;
- text-decoration:none;
- width:97px;
- }
-
- .topnav-admin {
- background-image: none !important;
- }
-
- .topnav-client {
- background-image: none !important;
- }
-
- .topnav-mail {
- background-image: none !important;
- }
-
- .topnav-monitor {
- background-image: none !important;
- }
-
- .topnav-sites {
- background-image: none !important;
- }
-
- .topnav-dns {
- background-image: none !important;
- }
-
- .topnav-tools {
- background-image: none !important;
- }
-
- .topnav-help {
- background-image: none !important;
- }
-
- .topnav- {
- background-image: none !important;
- }
-
- .topnav-domain {
- background-image: none !important;
- }
-
- .topnav-dashboard {
- background-image: none !important;
- }
-
+@media all
+{
+ #topNav a {
+ background-color: #D3D3D3;
+ background-position: center top;
+ background-repeat: no-repeat;
+ color:black;
+ display:inline-block;
+ height:20px;
+ padding-top:5px;
+ text-align:center;
+ text-decoration:none;
+ width:97px;
+ }
+
+ .topnav-admin {
+ background-image: none !important;
+ }
+
+ .topnav-client {
+ background-image: none !important;
+ }
+
+ .topnav-mail {
+ background-image: none !important;
+ }
+
+ .topnav-monitor {
+ background-image: none !important;
+ }
+
+ .topnav-sites {
+ background-image: none !important;
+ }
+
+ .topnav-dns {
+ background-image: none !important;
+ }
+
+ .topnav-tools {
+ background-image: none !important;
+ }
+
+ .topnav-help {
+ background-image: none !important;
+ }
+
+ .topnav- {
+ background-image: none !important;
+ }
+
+ .topnav-domain {
+ background-image: none !important;
+ }
+
+ .topnav-dashboard {
+ background-image: none !important;
+ }
+
}
\ No newline at end of file
diff --git a/interface/web/tools/form/user_settings.tform.php b/interface/web/tools/form/user_settings.tform.php
index f261b11..6531611 100644
--- a/interface/web/tools/form/user_settings.tform.php
+++ b/interface/web/tools/form/user_settings.tform.php
@@ -1,164 +1,164 @@
-<?php
-
-/*
-Copyright (c) 2005, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- Form Definition
-
- Tabellendefinition
-
- Datentypen:
- - INTEGER (Wandelt Ausdr�cke in Int um)
- - DOUBLE
- - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
- - VARCHAR (kein weiterer Format Check)
- - TEXT (kein weiterer Format Check)
- - DATE (Datumsformat, Timestamp Umwandlung)
-
- Formtype:
- - TEXT (normales Textfeld)
- - TEXTAREA (normales Textfeld)
- - PASSWORD (Feldinhalt wird nicht angezeigt)
- - SELECT (Gibt Werte als option Feld aus)
- - RADIO
- - CHECKBOX
- - CHECKBOXARRAY
- - FILE
-
- VALUE:
- - Wert oder Array
-
- Hinweis:
- Das ID-Feld ist nicht bei den Table Values einzuf�gen.
-
-
-*/
-
-$form['title'] = 'User Settings';
-$form['description'] = 'Form to edit the user password and language.';
-$form['name'] = 'usersettings';
-$form['action'] = 'user_settings.php';
-$form['db_table'] = 'sys_user';
-$form['db_table_idx'] = 'userid';
-$form["db_history"] = "no";
-$form['tab_default'] = 'users';
-$form['list_default'] = 'index.php';
-$form['auth'] = 'no';
-
-//* 0 = id of the user, > 0 id must match with id of current user
-$form['auth_preset']['userid'] = 0;
-//* 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form['auth_preset']['groupid'] = 0;
-
-//** Permissions are: r = read, i = insert, u = update, d = delete
-$form['auth_preset']['perm_user'] = 'riud';
-$form['auth_preset']['perm_group'] = 'riud';
-$form['auth_preset']['perm_other'] = '';
-
-//* Languages
-$language_list = array();
-$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
-while ($file = @readdir ($handle)) {
- if ($file != '.' && $file != '..') {
- if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
- $tmp = substr($file, 0, 2);
- $language_list[$tmp] = $tmp;
- }
- }
-}
-
-$form['tabs']['users'] = array (
- 'title' => 'Settings',
- 'width' => 80,
- 'template' => 'templates/user_settings.htm',
- 'fields' => array (
- ##################################
- # Beginn Datenbankfelder
- ##################################
- 'passwort' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'PASSWORD',
- 'encryption'=> 'CRYPT',
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => '',
- 'separator' => '',
- 'width' => '15',
- 'maxlength' => '100',
- 'rows' => '',
- 'cols' => ''
- ),
- 'language' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'language_is_empty'),
- 1 => array ( 'type' => 'REGEX',
- 'regex' => '/^[a-z]{2}$/i',
- 'errmsg'=> 'language_regex_mismatch'),
- ),
- 'regex' => '',
- 'errmsg' => '',
- 'default' => '',
- 'value' => $language_list,
- 'separator' => '',
- 'width' => '30',
- 'maxlength' => '2',
- 'rows' => '',
- 'cols' => ''
- ),
- 'id_rsa' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT id_rsa FROM client WHERE {AUTHSQL}',
- 'valuefield'=> 'id_rsa'
- ),
- 'value' => ''
- ),
- 'ssh_rsa' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT ssh_rsa FROM client WHERE {AUTHSQL}',
- 'valuefield'=> 'ssh_rsa'
- ),
- 'value' => ''
- )
- ##################################
- # ENDE Datenbankfelder
- ##################################
- )
-);
-
-
-?>
+<?php
+
+/*
+Copyright (c) 2005, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ Form Definition
+
+ Tabellendefinition
+
+ Datentypen:
+ - INTEGER (Wandelt Ausdr�cke in Int um)
+ - DOUBLE
+ - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
+ - VARCHAR (kein weiterer Format Check)
+ - TEXT (kein weiterer Format Check)
+ - DATE (Datumsformat, Timestamp Umwandlung)
+
+ Formtype:
+ - TEXT (normales Textfeld)
+ - TEXTAREA (normales Textfeld)
+ - PASSWORD (Feldinhalt wird nicht angezeigt)
+ - SELECT (Gibt Werte als option Feld aus)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hinweis:
+ Das ID-Feld ist nicht bei den Table Values einzuf�gen.
+
+
+*/
+
+$form['title'] = 'User Settings';
+$form['description'] = 'Form to edit the user password and language.';
+$form['name'] = 'usersettings';
+$form['action'] = 'user_settings.php';
+$form['db_table'] = 'sys_user';
+$form['db_table_idx'] = 'userid';
+$form["db_history"] = "no";
+$form['tab_default'] = 'users';
+$form['list_default'] = 'index.php';
+$form['auth'] = 'no';
+
+//* 0 = id of the user, > 0 id must match with id of current user
+$form['auth_preset']['userid'] = 0;
+//* 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form['auth_preset']['groupid'] = 0;
+
+//** Permissions are: r = read, i = insert, u = update, d = delete
+$form['auth_preset']['perm_user'] = 'riud';
+$form['auth_preset']['perm_group'] = 'riud';
+$form['auth_preset']['perm_other'] = '';
+
+//* Languages
+$language_list = array();
+$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
+ $tmp = substr($file, 0, 2);
+ $language_list[$tmp] = $tmp;
+ }
+ }
+}
+
+$form['tabs']['users'] = array (
+ 'title' => 'Settings',
+ 'width' => 80,
+ 'template' => 'templates/user_settings.htm',
+ 'fields' => array (
+ ##################################
+ # Beginn Datenbankfelder
+ ##################################
+ 'passwort' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'PASSWORD',
+ 'encryption'=> 'CRYPT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => '',
+ 'separator' => '',
+ 'width' => '15',
+ 'maxlength' => '100',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'language' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'language_is_empty'),
+ 1 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[a-z]{2}$/i',
+ 'errmsg'=> 'language_regex_mismatch'),
+ ),
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => $language_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '2',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'id_rsa' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT id_rsa FROM client WHERE {AUTHSQL}',
+ 'valuefield'=> 'id_rsa'
+ ),
+ 'value' => ''
+ ),
+ 'ssh_rsa' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT ssh_rsa FROM client WHERE {AUTHSQL}',
+ 'valuefield'=> 'ssh_rsa'
+ ),
+ 'value' => ''
+ )
+ ##################################
+ # ENDE Datenbankfelder
+ ##################################
+ )
+);
+
+
+?>
diff --git a/interface/web/tools/templates/user_settings.htm b/interface/web/tools/templates/user_settings.htm
index a3202ad..b257fcc 100644
--- a/interface/web/tools/templates/user_settings.htm
+++ b/interface/web/tools/templates/user_settings.htm
@@ -1,44 +1,44 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_usersettings">
-
- <div class="pnl_formsarea">
- <fieldset class="inlineLabels">
- <div class="ctrlHolder">
- <label for="passwort">{tmpl_var name='passwort_txt'}</label>
- <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
- </div>
- <div class="ctrlHolder">
- <p class="label">{tmpl_var name='password_strength_txt'}</p>
- <div id="passBar"></div>
- <p class="formHint"><span id="passText"> </span></p>
- </div>
- <div class="ctrlHolder">
- <label for="passwort2">{tmpl_var name='passwort_txt'}</label>
- <input name="passwort2" id="passwort2" value="" size="15" maxlength="100" type="password" class="textInput" />
- </div>
- <div class="ctrlHolder">
- <label for="language">{tmpl_var name='language_txt'}</label>
- <select name="language" id="language" class="selectInput withicons">
- {tmpl_var name='language'}
- </select>
- </div>
- <div class="ctrlHolder">
- <label for="id_rsa">id_rsa</label>
- <textarea name="id_rsa" id="id_rsa" readonly rows='10' cols='30'>{tmpl_var name='id_rsa'}</textarea>
- </div>
- <div class="ctrlHolder">
- <label for="ssh_rsa">ssh_rsa</label>
- <input name="ssh_rsa" id="ssh_rsa" value="{tmpl_var name='ssh_rsa'}" size="30" maxlength="600" type="text" class="textInput" />
- </div>
-
- <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
- <div class="buttonHolder buttons">
- <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','tools/user_settings.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
- <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('tools/index.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
- </div>
- </div>
-
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_usersettings">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="passwort">{tmpl_var name='passwort_txt'}</label>
+ <input name="passwort" id="passwort" value="{tmpl_var name='passwort'}" size="15" maxlength="100" type="password" class="textInput" onkeyup="pass_check(this.value)"/>
+ </div>
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='password_strength_txt'}</p>
+ <div id="passBar"></div>
+ <p class="formHint"><span id="passText"> </span></p>
+ </div>
+ <div class="ctrlHolder">
+ <label for="passwort2">{tmpl_var name='passwort_txt'}</label>
+ <input name="passwort2" id="passwort2" value="" size="15" maxlength="100" type="password" class="textInput" />
+ </div>
+ <div class="ctrlHolder">
+ <label for="language">{tmpl_var name='language_txt'}</label>
+ <select name="language" id="language" class="selectInput withicons">
+ {tmpl_var name='language'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="id_rsa">id_rsa</label>
+ <textarea name="id_rsa" id="id_rsa" readonly rows='10' cols='30'>{tmpl_var name='id_rsa'}</textarea>
+ </div>
+ <div class="ctrlHolder">
+ <label for="ssh_rsa">ssh_rsa</label>
+ <input name="ssh_rsa" id="ssh_rsa" value="{tmpl_var name='ssh_rsa'}" size="30" maxlength="600" type="text" class="textInput" />
+ </div>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','tools/user_settings.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('tools/index.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
diff --git a/server/lib/classes/tpl_cache.inc.php b/server/lib/classes/tpl_cache.inc.php
index 18e7d38..a399946 100644
--- a/server/lib/classes/tpl_cache.inc.php
+++ b/server/lib/classes/tpl_cache.inc.php
@@ -1,186 +1,186 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP version 4.0 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 2002 Active Fish Group |
-// +----------------------------------------------------------------------+
-// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> |
-// +----------------------------------------------------------------------+
-//
-// $Id: cache.php,v 1.1 2003/07/08 12:32:06 platinum Exp $
-
-/**
- * Class uses all of vlibTemplate's functionality but caches the template files.
- * It creates an identical tree structure to your filesystem but with cached files.
- *
- * @author Kelvin Jones <kelvin@kelvinjones.co.uk>
- * @since 22/02/2002
- * @package vLIB
- * @access public
- */
-
-class tplc extends tpl {
-
-/*-----------------------------------------------------------------------------\
-| DO NOT TOUCH ANYTHING IN THIS CLASS, IT MAY NOT WORK OTHERWISE |
-\-----------------------------------------------------------------------------*/
-
- var $_cache = 1; // tells vlibTemplate that we're caching
- var $_cachefile; // full path to current cache file (even if it doesn't yet exist)
- var $_cacheexists; // has this file been cached before
- var $_cachefilelocked; // is this file currently locked whilst writing
- var $_cachefiledir; // dir of current cache file
- var $_clearcache = 0;
-
-
- /**
- * FUNCTION: clearCache
- * will unset a file, and set $this->_cacheexists to 0.
- *
- * @access public
- * @return boolean
- */
- function clearCache() {
- $this->_clearcache = 1;
- return true;
- }
-
- /**
- * FUNCTION: recache
- * alias for clearCache().
- *
- * @access public
- * @return boolean
- */
- function recache() {
- return $this->clearCache();
- }
-
- /**
- * FUNCTION: setCacheLifeTime
- * sets the lifetime of the cached file
- *
- * @param int $int number of seconds to set lifetime to
- * @access public
- * @return boolean
- */
- function setCacheLifeTime($int = null) {
- if ($int == null || !is_int($int)) return false;
- if ($int == 0) $int = 60;
- if ($int == -1) $int = 157680000; // set to 5 yrs time
- $this->OPTIONS['CACHE_LIFETIME'] = $int;
- return true;
- }
-
- /**
- * FUNCTION: setCacheExtension
- * sets the extention of the cache file
- *
- * @param str $str name of new cache extention
- * @access public
- * @return boolean
- */
- function setCacheExtension($str = null) {
- if ($str == null || !preg_match('/^[a-z0-9]+$/', strtolower($str))) return false;
- $this->OPTIONS['CACHE_EXTENSION'] = strtolower($str);
- return true;
- }
-
-
-/*----------------------------------------\
- Private Functions
------------------------------------------*/
-
- /**
- * FUNCTION: _checkCache
- * checks if there's a cache, if there is then it will read the cache file as the template.
- */
- function _checkCache ($tmplfile) {
- $this->_cachefile = $this->_getFilename($tmplfile);
- if ($this->_clearcache) {
- if (file_exists($this->_cachefile)) unlink($this->_cachefile);
- return false;
- }
-
- if (file_exists($this->_cachefile)) {
- $this->_cacheexists = 1;
-
- // if it's expired
- if ((filemtime($this->_cachefile) + $this->OPTIONS['CACHE_LIFETIME']) < date ('U')
- || filectime($this->_cachefile) < filemtime($tmplfile)) {
- $this->_cacheexists = 0;
- return false; // so that we know to recache
- }
- else {
- return true;
- }
-
- } else {
- $this->_cacheexists = 0;
- return false;
- }
- }
-
-
- /**
- * FUNCTION: _getFilename
- * gets the full pathname for the cached file
- *
- */
- function _getFilename($tmplfile) {
- return $this->OPTIONS['CACHE_DIRECTORY'].'/'.md5('vlibCachestaR'.realpath($tmplfile)).'.'.$this->OPTIONS['CACHE_EXTENSION'];
- }
-
- /**
- * FUNCTION: _createCache
- * creates the cached file
- *
- */
- function _createCache($data) {
- $cache_file = $this->_cachefile;
- if(!$this->_prepareDirs($cache_file)) return false; // prepare all of the directories
-
- $f = fopen ($cache_file, "w");
- flock($f, 2); // set an EXclusive lock
- if (!$f) vlibTemplateError::raiseError('VT_ERROR_NO_CACHE_WRITE',KILL,$cache_file);
- fputs ($f, $data); // write the parsed string from vlibTemplate
- flock($f, 3); // UNlock file
- fclose ($f);
- touch ($cache_file);
- return true;
- }
-
- /**
- * FUNCTION: _prepareDirs
- * prepares the directory structure
- *
- */
- function _prepareDirs($file) {
- if (empty($file)) die('no filename'); //do error in future
- $filepath = dirname($file);
- if (is_dir($filepath)) return true;
-
- $dirs = preg_split('/[\\/]/', $filepath);
- $currpath;
- foreach ($dirs as $dir) {
- $currpath .= $dir .'/';
- $type = @filetype($currpath);
-
- ($type=='link') and $type = 'dir';
- if ($type != 'dir' && $type != false && !empty($type)) {
- vlibTemplateError::raiseError('VT_ERROR_WRONG_CACHE_TYPE',KILL,'directory: '.$currpath.', type: '.$type);
- }
- if ($type == 'dir') {
- continue;
- }
- else {
- $s = @mkdir($currpath, 0775);
- if (!$s) vlibTemplateError::raiseError('VT_ERROR_CACHE_MKDIR_FAILURE',KILL,'directory: '.$currpath);
- }
- }
- return true;
- }
-
-} // -- end vlibTemplateCache class
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP version 4.0 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 2002 Active Fish Group |
+// +----------------------------------------------------------------------+
+// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> |
+// +----------------------------------------------------------------------+
+//
+// $Id: cache.php,v 1.1 2003/07/08 12:32:06 platinum Exp $
+
+/**
+ * Class uses all of vlibTemplate's functionality but caches the template files.
+ * It creates an identical tree structure to your filesystem but with cached files.
+ *
+ * @author Kelvin Jones <kelvin@kelvinjones.co.uk>
+ * @since 22/02/2002
+ * @package vLIB
+ * @access public
+ */
+
+class tplc extends tpl {
+
+/*-----------------------------------------------------------------------------\
+| DO NOT TOUCH ANYTHING IN THIS CLASS, IT MAY NOT WORK OTHERWISE |
+\-----------------------------------------------------------------------------*/
+
+ var $_cache = 1; // tells vlibTemplate that we're caching
+ var $_cachefile; // full path to current cache file (even if it doesn't yet exist)
+ var $_cacheexists; // has this file been cached before
+ var $_cachefilelocked; // is this file currently locked whilst writing
+ var $_cachefiledir; // dir of current cache file
+ var $_clearcache = 0;
+
+
+ /**
+ * FUNCTION: clearCache
+ * will unset a file, and set $this->_cacheexists to 0.
+ *
+ * @access public
+ * @return boolean
+ */
+ function clearCache() {
+ $this->_clearcache = 1;
+ return true;
+ }
+
+ /**
+ * FUNCTION: recache
+ * alias for clearCache().
+ *
+ * @access public
+ * @return boolean
+ */
+ function recache() {
+ return $this->clearCache();
+ }
+
+ /**
+ * FUNCTION: setCacheLifeTime
+ * sets the lifetime of the cached file
+ *
+ * @param int $int number of seconds to set lifetime to
+ * @access public
+ * @return boolean
+ */
+ function setCacheLifeTime($int = null) {
+ if ($int == null || !is_int($int)) return false;
+ if ($int == 0) $int = 60;
+ if ($int == -1) $int = 157680000; // set to 5 yrs time
+ $this->OPTIONS['CACHE_LIFETIME'] = $int;
+ return true;
+ }
+
+ /**
+ * FUNCTION: setCacheExtension
+ * sets the extention of the cache file
+ *
+ * @param str $str name of new cache extention
+ * @access public
+ * @return boolean
+ */
+ function setCacheExtension($str = null) {
+ if ($str == null || !preg_match('/^[a-z0-9]+$/', strtolower($str))) return false;
+ $this->OPTIONS['CACHE_EXTENSION'] = strtolower($str);
+ return true;
+ }
+
+
+/*----------------------------------------\
+ Private Functions
+-----------------------------------------*/
+
+ /**
+ * FUNCTION: _checkCache
+ * checks if there's a cache, if there is then it will read the cache file as the template.
+ */
+ function _checkCache ($tmplfile) {
+ $this->_cachefile = $this->_getFilename($tmplfile);
+ if ($this->_clearcache) {
+ if (file_exists($this->_cachefile)) unlink($this->_cachefile);
+ return false;
+ }
+
+ if (file_exists($this->_cachefile)) {
+ $this->_cacheexists = 1;
+
+ // if it's expired
+ if ((filemtime($this->_cachefile) + $this->OPTIONS['CACHE_LIFETIME']) < date ('U')
+ || filectime($this->_cachefile) < filemtime($tmplfile)) {
+ $this->_cacheexists = 0;
+ return false; // so that we know to recache
+ }
+ else {
+ return true;
+ }
+
+ } else {
+ $this->_cacheexists = 0;
+ return false;
+ }
+ }
+
+
+ /**
+ * FUNCTION: _getFilename
+ * gets the full pathname for the cached file
+ *
+ */
+ function _getFilename($tmplfile) {
+ return $this->OPTIONS['CACHE_DIRECTORY'].'/'.md5('vlibCachestaR'.realpath($tmplfile)).'.'.$this->OPTIONS['CACHE_EXTENSION'];
+ }
+
+ /**
+ * FUNCTION: _createCache
+ * creates the cached file
+ *
+ */
+ function _createCache($data) {
+ $cache_file = $this->_cachefile;
+ if(!$this->_prepareDirs($cache_file)) return false; // prepare all of the directories
+
+ $f = fopen ($cache_file, "w");
+ flock($f, 2); // set an EXclusive lock
+ if (!$f) vlibTemplateError::raiseError('VT_ERROR_NO_CACHE_WRITE',KILL,$cache_file);
+ fputs ($f, $data); // write the parsed string from vlibTemplate
+ flock($f, 3); // UNlock file
+ fclose ($f);
+ touch ($cache_file);
+ return true;
+ }
+
+ /**
+ * FUNCTION: _prepareDirs
+ * prepares the directory structure
+ *
+ */
+ function _prepareDirs($file) {
+ if (empty($file)) die('no filename'); //do error in future
+ $filepath = dirname($file);
+ if (is_dir($filepath)) return true;
+
+ $dirs = preg_split('/[\\/]/', $filepath);
+ $currpath;
+ foreach ($dirs as $dir) {
+ $currpath .= $dir .'/';
+ $type = @filetype($currpath);
+
+ ($type=='link') and $type = 'dir';
+ if ($type != 'dir' && $type != false && !empty($type)) {
+ vlibTemplateError::raiseError('VT_ERROR_WRONG_CACHE_TYPE',KILL,'directory: '.$currpath.', type: '.$type);
+ }
+ if ($type == 'dir') {
+ continue;
+ }
+ else {
+ $s = @mkdir($currpath, 0775);
+ if (!$s) vlibTemplateError::raiseError('VT_ERROR_CACHE_MKDIR_FAILURE',KILL,'directory: '.$currpath);
+ }
+ }
+ return true;
+ }
+
+} // -- end vlibTemplateCache class
?>
\ No newline at end of file
diff --git a/server/lib/classes/tpl_error.inc.php b/server/lib/classes/tpl_error.inc.php
index 2f13988..d15b80a 100644
--- a/server/lib/classes/tpl_error.inc.php
+++ b/server/lib/classes/tpl_error.inc.php
@@ -1,92 +1,92 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP version 4.0 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 2002 Active Fish Group |
-// +----------------------------------------------------------------------+
-// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> |
-// +----------------------------------------------------------------------+
-//
-// $Id: error.php,v 1.1 2003/07/08 12:32:06 platinum Exp $
-
-define('FATAL', E_USER_ERROR);
-define('WARNING', E_USER_WARNING);
-define('NOTICE', E_USER_NOTICE);
-define('KILL', -1); // used for killing inside parsing.
-
-/**
- * Class is used by vlibTemplate.
- * It handles all of the error reporting for vlibTemplate.
- *
- * @author Kelvin Jones <kelvin@kelvinjones.co.uk>
- * @since 06/03/2002
- * @package vLIB
- * @access private
- */
-
-class vlibTemplateError {
-
-/*-----------------------------------------------------------------------------\
-| DO NOT TOUCH ANYTHING IN THIS CLASS IT MAY NOT WORK OTHERWISE |
-\-----------------------------------------------------------------------------*/
-
- function raiseError ($code, $level = null, $extra=null) {
- if (!($level & error_reporting())&& $level != KILL) return; // binary AND checks for reporting level
-
- $error_codes = array(
- 'VT_ERROR_NOFILE' => 'vlibTemplate Error: Template ('.$extra.') file not found.',
- 'VT_ERROR_PARSE' => 'vlibTemplate Error: Parse error!<br>To debug this file, use vlibTemplateDebug instead of vlibTemplate in the class instantiation(i.e. new vlibTemplateDebug).',
- 'VT_NOTICE_INVALID_TAG' => 'vlibTemplate Notice: Invalid tag ('.$extra.').',
- 'VT_ERROR_INVALID_TAG' => 'vlibTemplate Error: Invalid tag ('.$extra.'). To disable this you must turn of the STRICT option.',
- 'VT_NOTICE_INVALID_ATT' => 'vlibTemplate Notice: Invalid attribute ('.$extra.').',
- 'VT_WARNING_INVALID_ARR' => 'vlibTemplate Warning: Invalid loop structure passed to vlibTemplate::setLoop() (loop name: '.$extra.').',
- 'VT_ERROR_INVALID_ERROR_CODE' => 'vlibTemplate Error: Invalid error raised.',
- 'VT_ERROR_WRONG_NO_PARAMS' => 'vlibTemplate Warning: Wrond parameter count passed to '.$extra.'.',
- 'VT_ERROR_UNKNOWN_VAR' => 'vlibTemplate Error: template var not found.',
- 'VT_ERROR_NO_CACHE_WRITE' => 'vlibTemplate Error: unable to write to cache file ('.$extra.').',
- 'VT_ERROR_WRONG_CACHE_TYPE' => 'vlibTemplate Error: non-directory file found in cache root with same name as directory ('.$extra.').',
- 'VT_ERROR_CACHE_MKDIR_FAILURE' => 'vlibTemplate Error: failed to create directory in cache root ('.$extra.').',
- 'VT_WARNING_NOT_CACHE_OBJ' => 'vlibTemplate Warning: called a vlibTemplateCache function ('.$extra.') without instantiating the vlibTemplateCache class.',
- 'VT_WARNING_LOOP_NOT_SET' => 'vlibTemplate Warning: called vlibTemplate::addRow() or vlibTemplate::addLoop() with an invalid loop name.',
- 'VT_WARNING_INVALID_RESOURCE' => 'vlibTemplate Warning: Invalid resource type passed to vlibTemplate::setDbLoop() for Db "'.$extra.'".',
- 'VT_WARNING_INVALID_LOOP_DB' => 'vlibTemplate Warning: Invalid Db type passed to vlibTemplate::setDbLoop(), "'.$extra.'" not currently available.',
- 'VT_WARNING_INVALID_IF_OP' => 'vlibTemplate Warning: The Operator "'.$extra.'" is not supported by vlibTemplate.'
- );
-
- $error_levels = array(
- 'VT_ERROR_NOFILE' => FATAL,
- 'VT_ERROR_PARSE' => FATAL,
- 'VT_NOTICE_INVALID_TAG' => NOTICE,
- 'VT_ERROR_INVALID_TAG' => FATAL,
- 'VT_NOTICE_INVALID_ATT' => NOTICE,
- 'VT_WARNING_INVALID_ARR' => WARNING,
- 'VT_ERROR_INVALID_ERROR_CODE' => FATAL,
- 'VT_ERROR_WRONG_NO_PARAMS' => WARNING,
- 'VT_ERROR_UNKNOWN_VAR' => WARNING,
- 'VT_ERROR_NO_CACHE_WRITE' => KILL,
- 'VT_ERROR_WRONG_CACHE_TYPE' => KILL,
- 'VT_ERROR_CACHE_MKDIR_FAILURE' => KILL,
- 'VT_WARNING_NOT_CACHE_OBJ' => WARNING,
- 'VT_WARNING_LOOP_NOT_SET' => WARNING,
- 'VT_WARNING_INVALID_RESOURCE' => WARNING,
- 'VT_WARNING_INVALID_LOOP_DB' => WARNING,
- 'VT_WARNING_INVALID_IF_OP' => WARNING
- );
-
- ($level === null) and $level = $error_levels[$code];
- if ($level == KILL) {
- die ($error_codes[$code]);
- }
-
- if ($msg = $error_codes[$code]) {
- trigger_error($msg, $level);
- } else {
- $level = $error_levels['VT_ERROR_INVALID_ERROR_CODE'];
- $msg = $error_codes['VT_ERROR_INVALID_ERROR_CODE'];
- trigger_error($msg, $level);
- }
- return;
- }
-}
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP version 4.0 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 2002 Active Fish Group |
+// +----------------------------------------------------------------------+
+// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> |
+// +----------------------------------------------------------------------+
+//
+// $Id: error.php,v 1.1 2003/07/08 12:32:06 platinum Exp $
+
+define('FATAL', E_USER_ERROR);
+define('WARNING', E_USER_WARNING);
+define('NOTICE', E_USER_NOTICE);
+define('KILL', -1); // used for killing inside parsing.
+
+/**
+ * Class is used by vlibTemplate.
+ * It handles all of the error reporting for vlibTemplate.
+ *
+ * @author Kelvin Jones <kelvin@kelvinjones.co.uk>
+ * @since 06/03/2002
+ * @package vLIB
+ * @access private
+ */
+
+class vlibTemplateError {
+
+/*-----------------------------------------------------------------------------\
+| DO NOT TOUCH ANYTHING IN THIS CLASS IT MAY NOT WORK OTHERWISE |
+\-----------------------------------------------------------------------------*/
+
+ function raiseError ($code, $level = null, $extra=null) {
+ if (!($level & error_reporting())&& $level != KILL) return; // binary AND checks for reporting level
+
+ $error_codes = array(
+ 'VT_ERROR_NOFILE' => 'vlibTemplate Error: Template ('.$extra.') file not found.',
+ 'VT_ERROR_PARSE' => 'vlibTemplate Error: Parse error!<br>To debug this file, use vlibTemplateDebug instead of vlibTemplate in the class instantiation(i.e. new vlibTemplateDebug).',
+ 'VT_NOTICE_INVALID_TAG' => 'vlibTemplate Notice: Invalid tag ('.$extra.').',
+ 'VT_ERROR_INVALID_TAG' => 'vlibTemplate Error: Invalid tag ('.$extra.'). To disable this you must turn of the STRICT option.',
+ 'VT_NOTICE_INVALID_ATT' => 'vlibTemplate Notice: Invalid attribute ('.$extra.').',
+ 'VT_WARNING_INVALID_ARR' => 'vlibTemplate Warning: Invalid loop structure passed to vlibTemplate::setLoop() (loop name: '.$extra.').',
+ 'VT_ERROR_INVALID_ERROR_CODE' => 'vlibTemplate Error: Invalid error raised.',
+ 'VT_ERROR_WRONG_NO_PARAMS' => 'vlibTemplate Warning: Wrond parameter count passed to '.$extra.'.',
+ 'VT_ERROR_UNKNOWN_VAR' => 'vlibTemplate Error: template var not found.',
+ 'VT_ERROR_NO_CACHE_WRITE' => 'vlibTemplate Error: unable to write to cache file ('.$extra.').',
+ 'VT_ERROR_WRONG_CACHE_TYPE' => 'vlibTemplate Error: non-directory file found in cache root with same name as directory ('.$extra.').',
+ 'VT_ERROR_CACHE_MKDIR_FAILURE' => 'vlibTemplate Error: failed to create directory in cache root ('.$extra.').',
+ 'VT_WARNING_NOT_CACHE_OBJ' => 'vlibTemplate Warning: called a vlibTemplateCache function ('.$extra.') without instantiating the vlibTemplateCache class.',
+ 'VT_WARNING_LOOP_NOT_SET' => 'vlibTemplate Warning: called vlibTemplate::addRow() or vlibTemplate::addLoop() with an invalid loop name.',
+ 'VT_WARNING_INVALID_RESOURCE' => 'vlibTemplate Warning: Invalid resource type passed to vlibTemplate::setDbLoop() for Db "'.$extra.'".',
+ 'VT_WARNING_INVALID_LOOP_DB' => 'vlibTemplate Warning: Invalid Db type passed to vlibTemplate::setDbLoop(), "'.$extra.'" not currently available.',
+ 'VT_WARNING_INVALID_IF_OP' => 'vlibTemplate Warning: The Operator "'.$extra.'" is not supported by vlibTemplate.'
+ );
+
+ $error_levels = array(
+ 'VT_ERROR_NOFILE' => FATAL,
+ 'VT_ERROR_PARSE' => FATAL,
+ 'VT_NOTICE_INVALID_TAG' => NOTICE,
+ 'VT_ERROR_INVALID_TAG' => FATAL,
+ 'VT_NOTICE_INVALID_ATT' => NOTICE,
+ 'VT_WARNING_INVALID_ARR' => WARNING,
+ 'VT_ERROR_INVALID_ERROR_CODE' => FATAL,
+ 'VT_ERROR_WRONG_NO_PARAMS' => WARNING,
+ 'VT_ERROR_UNKNOWN_VAR' => WARNING,
+ 'VT_ERROR_NO_CACHE_WRITE' => KILL,
+ 'VT_ERROR_WRONG_CACHE_TYPE' => KILL,
+ 'VT_ERROR_CACHE_MKDIR_FAILURE' => KILL,
+ 'VT_WARNING_NOT_CACHE_OBJ' => WARNING,
+ 'VT_WARNING_LOOP_NOT_SET' => WARNING,
+ 'VT_WARNING_INVALID_RESOURCE' => WARNING,
+ 'VT_WARNING_INVALID_LOOP_DB' => WARNING,
+ 'VT_WARNING_INVALID_IF_OP' => WARNING
+ );
+
+ ($level === null) and $level = $error_levels[$code];
+ if ($level == KILL) {
+ die ($error_codes[$code]);
+ }
+
+ if ($msg = $error_codes[$code]) {
+ trigger_error($msg, $level);
+ } else {
+ $level = $error_levels['VT_ERROR_INVALID_ERROR_CODE'];
+ $msg = $error_codes['VT_ERROR_INVALID_ERROR_CODE'];
+ trigger_error($msg, $level);
+ }
+ return;
+ }
+}
?>
\ No newline at end of file
diff --git a/server/mods-available/mail_module.inc.php b/server/mods-available/mail_module.inc.php
index 1b7f957..23e0b8d 100644
--- a/server/mods-available/mail_module.inc.php
+++ b/server/mods-available/mail_module.inc.php
@@ -1,162 +1,162 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class mail_module {
-
- var $module_name = 'mail_module';
- var $class_name = 'mail_module';
- var $actions_available = array( 'mail_domain_insert',
- 'mail_domain_update',
- 'mail_domain_delete',
- 'mail_user_insert',
- 'mail_user_update',
- 'mail_user_delete',
- 'mail_access_insert',
- 'mail_access_update',
- 'mail_access_delete',
- 'mail_forwarding_insert',
- 'mail_forwarding_update',
- 'mail_forwarding_delete',
- 'mail_transport_insert',
- 'mail_transport_update',
- 'mail_transport_delete',
- 'mail_get_insert',
- 'mail_get_update',
- 'mail_get_delete',
- 'mail_content_filter_insert',
- 'mail_content_filter_update',
- 'mail_content_filter_delete',
- 'mail_mailinglist_insert',
- 'mail_mailinglist_update',
- 'mail_mailinglist_delete');
-
- //* This function is called during ispconfig installation to determine
- // if a symlink shall be created for this plugin.
- function onInstall() {
- global $conf;
-
- if($conf['services']['mail'] == true) {
- return true;
- } else {
- return false;
- }
-
- }
-
- /*
- This function is called when the module is loaded
- */
-
- function onLoad() {
- global $app;
-
- /*
- Annonce the actions that where provided by this module, so plugins
- can register on them.
- */
-
- $app->plugins->announceEvents($this->module_name,$this->actions_available);
-
- /*
- As we want to get notified of any changes on several database tables,
- we register for them.
-
- The following function registers the function "functionname"
- to be executed when a record for the table "dbtable" is
- processed in the sys_datalog. "classname" is the name of the
- class that contains the function functionname.
- */
-
- $app->modules->registerTableHook('mail_access','mail_module','process');
- $app->modules->registerTableHook('mail_domain','mail_module','process');
- $app->modules->registerTableHook('mail_forwarding','mail_module','process');
- $app->modules->registerTableHook('mail_transport','mail_module','process');
- $app->modules->registerTableHook('mail_user','mail_module','process');
- $app->modules->registerTableHook('mail_get','mail_module','process');
- $app->modules->registerTableHook('mail_content_filter','mail_module','process');
- $app->modules->registerTableHook('mail_mailinglist','mail_module','process');
-
- }
-
- /*
- This function is called when a change in one of the registered tables is detected.
- The function then raises the events for the plugins.
- */
-
- function process($tablename,$action,$data) {
- global $app;
-
- switch ($tablename) {
- case 'mail_access':
- if($action == 'i') $app->plugins->raiseEvent('mail_access_insert',$data);
- if($action == 'u') $app->plugins->raiseEvent('mail_access_update',$data);
- if($action == 'd') $app->plugins->raiseEvent('mail_access_delete',$data);
- break;
- case 'mail_domain':
- if($action == 'i') $app->plugins->raiseEvent('mail_domain_insert',$data);
- if($action == 'u') $app->plugins->raiseEvent('mail_domain_update',$data);
- if($action == 'd') $app->plugins->raiseEvent('mail_domain_delete',$data);
- break;
- case 'mail_forwarding':
- if($action == 'i') $app->plugins->raiseEvent('mail_forwarding_insert',$data);
- if($action == 'u') $app->plugins->raiseEvent('mail_forwarding_update',$data);
- if($action == 'd') $app->plugins->raiseEvent('mail_forwarding_delete',$data);
- break;
- case 'mail_transport':
- if($action == 'i') $app->plugins->raiseEvent('mail_transport_insert',$data);
- if($action == 'u') $app->plugins->raiseEvent('mail_transport_update',$data);
- if($action == 'd') $app->plugins->raiseEvent('mail_transport_delete',$data);
- break;
- case 'mail_user':
- if($action == 'i') $app->plugins->raiseEvent('mail_user_insert',$data);
- if($action == 'u') $app->plugins->raiseEvent('mail_user_update',$data);
- if($action == 'd') $app->plugins->raiseEvent('mail_user_delete',$data);
- break;
- case 'mail_get':
- if($action == 'i') $app->plugins->raiseEvent('mail_get_insert',$data);
- if($action == 'u') $app->plugins->raiseEvent('mail_get_update',$data);
- if($action == 'd') $app->plugins->raiseEvent('mail_get_delete',$data);
- break;
- case 'mail_content_filter':
- if($action == 'i') $app->plugins->raiseEvent('mail_content_filter_insert',$data);
- if($action == 'u') $app->plugins->raiseEvent('mail_content_filter_update',$data);
- if($action == 'd') $app->plugins->raiseEvent('mail_content_filter_delete',$data);
- break;
- case 'mail_mailinglist':
- if($action == 'i') $app->plugins->raiseEvent('mail_mailinglist_insert',$data);
- if($action == 'u') $app->plugins->raiseEvent('mail_mailinglist_update',$data);
- if($action == 'd') $app->plugins->raiseEvent('mail_mailinglist_delete',$data);
- break;
- } // end switch
- } // end function
-
-} // end class
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class mail_module {
+
+ var $module_name = 'mail_module';
+ var $class_name = 'mail_module';
+ var $actions_available = array( 'mail_domain_insert',
+ 'mail_domain_update',
+ 'mail_domain_delete',
+ 'mail_user_insert',
+ 'mail_user_update',
+ 'mail_user_delete',
+ 'mail_access_insert',
+ 'mail_access_update',
+ 'mail_access_delete',
+ 'mail_forwarding_insert',
+ 'mail_forwarding_update',
+ 'mail_forwarding_delete',
+ 'mail_transport_insert',
+ 'mail_transport_update',
+ 'mail_transport_delete',
+ 'mail_get_insert',
+ 'mail_get_update',
+ 'mail_get_delete',
+ 'mail_content_filter_insert',
+ 'mail_content_filter_update',
+ 'mail_content_filter_delete',
+ 'mail_mailinglist_insert',
+ 'mail_mailinglist_update',
+ 'mail_mailinglist_delete');
+
+ //* This function is called during ispconfig installation to determine
+ // if a symlink shall be created for this plugin.
+ function onInstall() {
+ global $conf;
+
+ if($conf['services']['mail'] == true) {
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
+ /*
+ This function is called when the module is loaded
+ */
+
+ function onLoad() {
+ global $app;
+
+ /*
+ Annonce the actions that where provided by this module, so plugins
+ can register on them.
+ */
+
+ $app->plugins->announceEvents($this->module_name,$this->actions_available);
+
+ /*
+ As we want to get notified of any changes on several database tables,
+ we register for them.
+
+ The following function registers the function "functionname"
+ to be executed when a record for the table "dbtable" is
+ processed in the sys_datalog. "classname" is the name of the
+ class that contains the function functionname.
+ */
+
+ $app->modules->registerTableHook('mail_access','mail_module','process');
+ $app->modules->registerTableHook('mail_domain','mail_module','process');
+ $app->modules->registerTableHook('mail_forwarding','mail_module','process');
+ $app->modules->registerTableHook('mail_transport','mail_module','process');
+ $app->modules->registerTableHook('mail_user','mail_module','process');
+ $app->modules->registerTableHook('mail_get','mail_module','process');
+ $app->modules->registerTableHook('mail_content_filter','mail_module','process');
+ $app->modules->registerTableHook('mail_mailinglist','mail_module','process');
+
+ }
+
+ /*
+ This function is called when a change in one of the registered tables is detected.
+ The function then raises the events for the plugins.
+ */
+
+ function process($tablename,$action,$data) {
+ global $app;
+
+ switch ($tablename) {
+ case 'mail_access':
+ if($action == 'i') $app->plugins->raiseEvent('mail_access_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('mail_access_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('mail_access_delete',$data);
+ break;
+ case 'mail_domain':
+ if($action == 'i') $app->plugins->raiseEvent('mail_domain_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('mail_domain_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('mail_domain_delete',$data);
+ break;
+ case 'mail_forwarding':
+ if($action == 'i') $app->plugins->raiseEvent('mail_forwarding_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('mail_forwarding_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('mail_forwarding_delete',$data);
+ break;
+ case 'mail_transport':
+ if($action == 'i') $app->plugins->raiseEvent('mail_transport_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('mail_transport_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('mail_transport_delete',$data);
+ break;
+ case 'mail_user':
+ if($action == 'i') $app->plugins->raiseEvent('mail_user_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('mail_user_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('mail_user_delete',$data);
+ break;
+ case 'mail_get':
+ if($action == 'i') $app->plugins->raiseEvent('mail_get_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('mail_get_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('mail_get_delete',$data);
+ break;
+ case 'mail_content_filter':
+ if($action == 'i') $app->plugins->raiseEvent('mail_content_filter_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('mail_content_filter_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('mail_content_filter_delete',$data);
+ break;
+ case 'mail_mailinglist':
+ if($action == 'i') $app->plugins->raiseEvent('mail_mailinglist_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('mail_mailinglist_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('mail_mailinglist_delete',$data);
+ break;
+ } // end switch
+ } // end function
+
+} // end class
+
?>
\ No newline at end of file
diff --git a/server/mods-available/remoteaction_core_module.inc.php b/server/mods-available/remoteaction_core_module.inc.php
index 9375233..f24fadd 100644
--- a/server/mods-available/remoteaction_core_module.inc.php
+++ b/server/mods-available/remoteaction_core_module.inc.php
@@ -1,204 +1,204 @@
-<?php
-/*
-Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class remoteaction_core_module {
- var $module_name = 'remoteaction_core_module';
- var $class_name = 'remoteaction_core_module';
- /* No actions at this time. maybe later... */
- var $actions_available = array();
- //* This function is called during ispconfig installation to determine
- // if a symlink shall be created for this plugin.
- function onInstall() {
- return true;
- }
-
- /*
- This function is called when the module is loaded
- */
- function onLoad() {
- /*
- * Check for actions to execute
- */
- $this->_execActions();
- }
-
- /*
- This function is called when a change in one of the registered tables is detected.
- The function then raises the events for the plugins.
- */
- function process($tablename, $action, $data) {
- // not needed
- } // end function
-
- private function _actionDone($id, $state) {
- /*
- * First set the state
- */
- global $app;
- $sql = "UPDATE sys_remoteaction " .
- "SET action_state = '" . $app->dbmaster->quote($state) . "' " .
- "WHERE action_id = " . intval($id);
- $app->dbmaster->query($sql);
-
- /*
- * Then save the maxid for the next time...
- */
- $fp = fopen(dirname(__FILE__) . "/../lib/remote_action.inc.php", 'wb');
- $content = '<?php' . "\n" . '$maxid_remote_action = ' . $id . ';' . "\n?>";
- fwrite($fp, $content);
- fclose($fp);
- }
-
-
- /**
- * This method searches for scheduled actions and exec then
- */
- private function _execActions() {
- global $app;
- global $conf;
-
- /* the id of the server as int */
- $server_id = intval($conf["server_id"]);
-
- /*
- * First we (till and i, oliver) thought, it was enough to write
- * "select from where action_status = 'pending'" and then execute this actions.
- * But it is not!
- * If a hacker can hack into a server, she can change the valus of action_status
- * and so re-exec a action, executed some days bevore. So she can (for example)
- * stop a service, a admin stopped some days before! To avoid this, we ignore
- * the status (it is only for the interface to show) and use our own maxid
- */
- include_once (dirname(__FILE__) . "/../lib/remote_action.inc.php");
-
- /*
- * Get all actions this server should execute
- */
- $sql = "SELECT action_id, action_type, action_param " .
- "FROM sys_remoteaction " .
- "WHERE server_id = " . $server_id . " ".
- " AND action_id > " . intval($maxid_remote_action) . " ".
- "ORDER BY action_id";
- $actions = $app->dbmaster->queryAllRecords($sql);
-
- /*
- * process all actions
- */
- if(is_array($actions)) {
- foreach ($actions as $action) {
- if ($action['action_type'] == 'os_update') {
- /* do the update */
- $this->_doOsUpdate($action);
- /* this action takes so much time,
- * we stop executing the actions not to waste more time */
- return;
- }
- if ($action['action_type'] == 'ispc_update') {
- /* do the update */
- $this->_doIspCUpdate($action);
- /* this action takes so much time,
- * we stop executing the actions not to waste more time */
- return;
- }
- }
- }
- }
-
- private function _doOsUpdate($action) {
- /*
- * Do the update
- */
- //TODO : change this when distribution information has been integrated into server record
- if(file_exists('/etc/gentoo-release')) {
- exec("glsa-check -f --nocolor affected");
- }
- else {
- exec("aptitude update");
- exec("aptitude upgrade -y");
- }
-
- /*
- * All well done!
- */
- $this->_actionDone($action['action_id'], 'ok');
- }
-
- private function _doIspCUpdate($action) {
-
- // Ensure that this code is not executed twice as this would cause a loop in case of a failure
- $this->_actionDone($action['action_id'], 'ok');
-
- /*
- * Get the version-number of the newest version
- */
- $new_version = @file_get_contents('http://www.ispconfig.org/downloads/ispconfig3_version.txt');
- $new_version = trim($new_version);
-
- /*
- * Do the update
- */
-
- /* jump into the temporary dir */
- $oldDir = getcwd();
- chdir("/tmp");
-
- /* delete the old files (if there are any...) */
- exec("rm /tmp/ISPConfig-" . $new_version . ".tar.gz");
- exec("rm /tmp/ispconfig3_install -R");
-
- /* get the newest version */
- exec("wget http://www.ispconfig.org/downloads/ISPConfig-" . $new_version . ".tar.gz");
-
- /* extract the files */
- exec("tar xvfz ISPConfig-" . $new_version . ".tar.gz");
-
- /*
- * Initialize the automated update
- * (the update is then done next start of server.sh
- */
- chdir("/tmp/ispconfig3_install/install");
- exec("touch autoupdate");
-
- /*
- * do some clean-up
- */
- exec("rm /tmp/ISPConfig-" . $new_version . ".tar.gz");
-
- /*
- * go back to the "old path"
- */
- chdir($oldDir);
-
- /*
- * All well done!
- */
- //$this->_actionDone($action['action_id'], 'ok');
- }
-}
+<?php
+/*
+Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class remoteaction_core_module {
+ var $module_name = 'remoteaction_core_module';
+ var $class_name = 'remoteaction_core_module';
+ /* No actions at this time. maybe later... */
+ var $actions_available = array();
+ //* This function is called during ispconfig installation to determine
+ // if a symlink shall be created for this plugin.
+ function onInstall() {
+ return true;
+ }
+
+ /*
+ This function is called when the module is loaded
+ */
+ function onLoad() {
+ /*
+ * Check for actions to execute
+ */
+ $this->_execActions();
+ }
+
+ /*
+ This function is called when a change in one of the registered tables is detected.
+ The function then raises the events for the plugins.
+ */
+ function process($tablename, $action, $data) {
+ // not needed
+ } // end function
+
+ private function _actionDone($id, $state) {
+ /*
+ * First set the state
+ */
+ global $app;
+ $sql = "UPDATE sys_remoteaction " .
+ "SET action_state = '" . $app->dbmaster->quote($state) . "' " .
+ "WHERE action_id = " . intval($id);
+ $app->dbmaster->query($sql);
+
+ /*
+ * Then save the maxid for the next time...
+ */
+ $fp = fopen(dirname(__FILE__) . "/../lib/remote_action.inc.php", 'wb');
+ $content = '<?php' . "\n" . '$maxid_remote_action = ' . $id . ';' . "\n?>";
+ fwrite($fp, $content);
+ fclose($fp);
+ }
+
+
+ /**
+ * This method searches for scheduled actions and exec then
+ */
+ private function _execActions() {
+ global $app;
+ global $conf;
+
+ /* the id of the server as int */
+ $server_id = intval($conf["server_id"]);
+
+ /*
+ * First we (till and i, oliver) thought, it was enough to write
+ * "select from where action_status = 'pending'" and then execute this actions.
+ * But it is not!
+ * If a hacker can hack into a server, she can change the valus of action_status
+ * and so re-exec a action, executed some days bevore. So she can (for example)
+ * stop a service, a admin stopped some days before! To avoid this, we ignore
+ * the status (it is only for the interface to show) and use our own maxid
+ */
+ include_once (dirname(__FILE__) . "/../lib/remote_action.inc.php");
+
+ /*
+ * Get all actions this server should execute
+ */
+ $sql = "SELECT action_id, action_type, action_param " .
+ "FROM sys_remoteaction " .
+ "WHERE server_id = " . $server_id . " ".
+ " AND action_id > " . intval($maxid_remote_action) . " ".
+ "ORDER BY action_id";
+ $actions = $app->dbmaster->queryAllRecords($sql);
+
+ /*
+ * process all actions
+ */
+ if(is_array($actions)) {
+ foreach ($actions as $action) {
+ if ($action['action_type'] == 'os_update') {
+ /* do the update */
+ $this->_doOsUpdate($action);
+ /* this action takes so much time,
+ * we stop executing the actions not to waste more time */
+ return;
+ }
+ if ($action['action_type'] == 'ispc_update') {
+ /* do the update */
+ $this->_doIspCUpdate($action);
+ /* this action takes so much time,
+ * we stop executing the actions not to waste more time */
+ return;
+ }
+ }
+ }
+ }
+
+ private function _doOsUpdate($action) {
+ /*
+ * Do the update
+ */
+ //TODO : change this when distribution information has been integrated into server record
+ if(file_exists('/etc/gentoo-release')) {
+ exec("glsa-check -f --nocolor affected");
+ }
+ else {
+ exec("aptitude update");
+ exec("aptitude upgrade -y");
+ }
+
+ /*
+ * All well done!
+ */
+ $this->_actionDone($action['action_id'], 'ok');
+ }
+
+ private function _doIspCUpdate($action) {
+
+ // Ensure that this code is not executed twice as this would cause a loop in case of a failure
+ $this->_actionDone($action['action_id'], 'ok');
+
+ /*
+ * Get the version-number of the newest version
+ */
+ $new_version = @file_get_contents('http://www.ispconfig.org/downloads/ispconfig3_version.txt');
+ $new_version = trim($new_version);
+
+ /*
+ * Do the update
+ */
+
+ /* jump into the temporary dir */
+ $oldDir = getcwd();
+ chdir("/tmp");
+
+ /* delete the old files (if there are any...) */
+ exec("rm /tmp/ISPConfig-" . $new_version . ".tar.gz");
+ exec("rm /tmp/ispconfig3_install -R");
+
+ /* get the newest version */
+ exec("wget http://www.ispconfig.org/downloads/ISPConfig-" . $new_version . ".tar.gz");
+
+ /* extract the files */
+ exec("tar xvfz ISPConfig-" . $new_version . ".tar.gz");
+
+ /*
+ * Initialize the automated update
+ * (the update is then done next start of server.sh
+ */
+ chdir("/tmp/ispconfig3_install/install");
+ exec("touch autoupdate");
+
+ /*
+ * do some clean-up
+ */
+ exec("rm /tmp/ISPConfig-" . $new_version . ".tar.gz");
+
+ /*
+ * go back to the "old path"
+ */
+ chdir($oldDir);
+
+ /*
+ * All well done!
+ */
+ //$this->_actionDone($action['action_id'], 'ok');
+ }
+}
?>
\ No newline at end of file
diff --git a/server/plugins-available/mailman_plugin.inc.php b/server/plugins-available/mailman_plugin.inc.php
index 5e13ba3..823bf85 100644
--- a/server/plugins-available/mailman_plugin.inc.php
+++ b/server/plugins-available/mailman_plugin.inc.php
@@ -1,155 +1,155 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class mailman_plugin {
-
- var $plugin_name = 'mailman_plugin';
- var $class_name = 'mailman_plugin';
-
-
- var $mailman_config_dir = '/etc/mailman/';
-
- //* This function is called during ispconfig installation to determine
- // if a symlink shall be created for this plugin.
- function onInstall() {
- global $conf;
-
- if($conf['services']['mail'] == true) {
- return true;
- } else {
- return false;
- }
-
- }
-
- /*
- This function is called when the plugin is loaded
- */
-
- function onLoad() {
- global $app;
-
- /*
- Register for the events
- */
-
- $app->plugins->registerEvent('mail_mailinglist_insert','mailman_plugin','insert');
- $app->plugins->registerEvent('mail_mailinglist_update','mailman_plugin','update');
- $app->plugins->registerEvent('mail_mailinglist_delete','mailman_plugin','delete');
-
-
-
- }
-
- function insert($event_name,$data) {
- global $app, $conf;
-
- $this->update_config();
-
- exec("/usr/lib/mailman/bin/newlist -u ".$data["new"]["domain"]." -e ".$data["new"]["domain"]." ".$data["new"]["listname"]." ".$data["new"]["email"]." ".$data["new"]["password"]."");
-
- exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
-
- $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$data["new"]['mailinglist_id']);
-
- }
-
- // The purpose of this plugin is to rewrite the main.cf file
- function update($event_name,$data) {
- global $app, $conf;
-
- exec("/usr/lib/mailman/bin/change_pw -l ".$data["new"]["listname"]." -p ".$data["new"]["password"]."");
-
- exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
-
- $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$data["new"]['mailinglist_id']);
-
- }
-
- function delete($event_name,$data) {
- global $app, $conf;
-
- $this->update_config();
-
- exec("/usr/lib/mailman/bin/rmlist -a ".$data["old"]["listname"]);
-
- exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
-
- }
-
- function update_config() {
- global $app, $conf;
-
- copy($this->mailman_config_dir.'mm_cfg.py',$this->mailman_config_dir.'mm_cfg.py');
-
- // load the server configuration options
- $app->uses('getconf');
- $server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
-
- // load files
- $content = file_get_contents($conf["rootpath"]."/conf/mm_cfg.py.master");
- $old_file = file_get_contents($this->mailman_config_dir."/mm_cfg.py");
-
- $old_options = array();
- $lines = explode("\n", $old_file);
- foreach ($lines as $line)
- {
- if (strlen($line) && substr($line, 0, 1) != '#')
- {
- list($key, $value) = explode("=", $line);
- if (!empty($value))
- {
- $key = rtrim($key);
- $old_options[$key] = trim($value);
- }
- }
- }
-
- // create virtual_domains list
- $domainAll = $app->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain");
- $virtual_domains = '';
- foreach($domainAll as $domain)
- {
- if ($domainAll[0]['domain'] == $domain['domain'])
- $virtual_domains .= "'".$domain['domain']."'";
- else
- $virtual_domains .= ", '".$domain['domain']."'";
- }
-
- $content = str_replace('{hostname}', $server_config['hostname'], $content);
- $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content);
- $content = str_replace('{virtual_domains}', $virtual_domains, $content);
-
- file_put_contents($this->mailman_config_dir."/mm_cfg.py", $content);
- }
-
-} // end class
-
-?>
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class mailman_plugin {
+
+ var $plugin_name = 'mailman_plugin';
+ var $class_name = 'mailman_plugin';
+
+
+ var $mailman_config_dir = '/etc/mailman/';
+
+ //* This function is called during ispconfig installation to determine
+ // if a symlink shall be created for this plugin.
+ function onInstall() {
+ global $conf;
+
+ if($conf['services']['mail'] == true) {
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
+ /*
+ This function is called when the plugin is loaded
+ */
+
+ function onLoad() {
+ global $app;
+
+ /*
+ Register for the events
+ */
+
+ $app->plugins->registerEvent('mail_mailinglist_insert','mailman_plugin','insert');
+ $app->plugins->registerEvent('mail_mailinglist_update','mailman_plugin','update');
+ $app->plugins->registerEvent('mail_mailinglist_delete','mailman_plugin','delete');
+
+
+
+ }
+
+ function insert($event_name,$data) {
+ global $app, $conf;
+
+ $this->update_config();
+
+ exec("/usr/lib/mailman/bin/newlist -u ".$data["new"]["domain"]." -e ".$data["new"]["domain"]." ".$data["new"]["listname"]." ".$data["new"]["email"]." ".$data["new"]["password"]."");
+
+ exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
+
+ $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$data["new"]['mailinglist_id']);
+
+ }
+
+ // The purpose of this plugin is to rewrite the main.cf file
+ function update($event_name,$data) {
+ global $app, $conf;
+
+ exec("/usr/lib/mailman/bin/change_pw -l ".$data["new"]["listname"]." -p ".$data["new"]["password"]."");
+
+ exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
+
+ $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$data["new"]['mailinglist_id']);
+
+ }
+
+ function delete($event_name,$data) {
+ global $app, $conf;
+
+ $this->update_config();
+
+ exec("/usr/lib/mailman/bin/rmlist -a ".$data["old"]["listname"]);
+
+ exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
+
+ }
+
+ function update_config() {
+ global $app, $conf;
+
+ copy($this->mailman_config_dir.'mm_cfg.py',$this->mailman_config_dir.'mm_cfg.py');
+
+ // load the server configuration options
+ $app->uses('getconf');
+ $server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
+
+ // load files
+ $content = file_get_contents($conf["rootpath"]."/conf/mm_cfg.py.master");
+ $old_file = file_get_contents($this->mailman_config_dir."/mm_cfg.py");
+
+ $old_options = array();
+ $lines = explode("\n", $old_file);
+ foreach ($lines as $line)
+ {
+ if (strlen($line) && substr($line, 0, 1) != '#')
+ {
+ list($key, $value) = explode("=", $line);
+ if (!empty($value))
+ {
+ $key = rtrim($key);
+ $old_options[$key] = trim($value);
+ }
+ }
+ }
+
+ // create virtual_domains list
+ $domainAll = $app->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain");
+ $virtual_domains = '';
+ foreach($domainAll as $domain)
+ {
+ if ($domainAll[0]['domain'] == $domain['domain'])
+ $virtual_domains .= "'".$domain['domain']."'";
+ else
+ $virtual_domains .= ", '".$domain['domain']."'";
+ }
+
+ $content = str_replace('{hostname}', $server_config['hostname'], $content);
+ $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content);
+ $content = str_replace('{virtual_domains}', $virtual_domains, $content);
+
+ file_put_contents($this->mailman_config_dir."/mm_cfg.py", $content);
+ }
+
+} // end class
+
+?>
--
Gitblit v1.9.1