Skip to content

Commit aa82ec9

Browse files
author
Marius Burkard
committed
Merge branch 'stable-3.1'
2 parents d357e20 + b3cb689 commit aa82ec9

35 files changed

+356
-78
lines changed
Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
<?php
2+
3+
/*
4+
Copyright (c) 2017, Till Brehm, ISPConfig UG
5+
All rights reserved.
6+
7+
Redistribution and use in source and binary forms, with or without modification,
8+
are permitted provided that the following conditions are met:
9+
10+
* Redistributions of source code must retain the above copyright notice,
11+
this list of conditions and the following disclaimer.
12+
* Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
* Neither the name of ISPConfig nor the names of its contributors
16+
may be used to endorse or promote products derived from this software without
17+
specific prior written permission.
18+
19+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22+
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23+
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26+
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29+
*/
30+
31+
//*** Ubuntu 17.10 default settings
32+
33+
//* Main
34+
$conf['language'] = 'en';
35+
$conf['distname'] = 'ubuntu1710';
36+
$conf['hostname'] = 'server1.domain.tld'; // Full hostname
37+
$conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
38+
$conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
39+
$conf['ispconfig_log_priority'] = 2; // 0 = Debug, 1 = Warning, 2 = Error
40+
$conf['ispconfig_log_dir'] = '/var/log/ispconfig';
41+
$conf['server_id'] = 1;
42+
$conf['init_scripts'] = '/etc/init.d';
43+
$conf['runlevel'] = '/etc';
44+
$conf['shells'] = '/etc/shells';
45+
$conf['pam'] = '/etc/pam.d';
46+
47+
//* Services provided by this server, this selection will be overridden by the expert mode
48+
$conf['services']['mail'] = true;
49+
$conf['services']['web'] = true;
50+
$conf['services']['dns'] = true;
51+
$conf['services']['file'] = true;
52+
$conf['services']['db'] = true;
53+
$conf['services']['vserver'] = true;
54+
$conf['services']['proxy'] = false;
55+
$conf['services']['firewall'] = false;
56+
57+
//* MySQL
58+
$conf['mysql']['installed'] = false; // will be detected automatically during installation
59+
$conf['mysql']['init_script'] = 'mysql';
60+
$conf['mysql']['host'] = 'localhost';
61+
$conf['mysql']['ip'] = '127.0.0.1';
62+
$conf['mysql']['port'] = '3306';
63+
$conf['mysql']['database'] = 'dbispconfig';
64+
$conf['mysql']['admin_user'] = 'root';
65+
$conf['mysql']['admin_password'] = '';
66+
$conf['mysql']['charset'] = 'utf8';
67+
$conf['mysql']['ispconfig_user'] = 'ispconfig';
68+
$conf['mysql']['ispconfig_password'] = md5(uniqid(rand()));
69+
$conf['mysql']['master_slave_setup'] = 'n';
70+
$conf['mysql']['master_host'] = '';
71+
$conf['mysql']['master_database'] = 'dbispconfig';
72+
$conf['mysql']['master_admin_user'] = 'root';
73+
$conf['mysql']['master_admin_password'] = '';
74+
$conf['mysql']['master_ispconfig_user'] = '';
75+
$conf['mysql']['master_ispconfig_password'] = md5(uniqid(rand()));
76+
77+
//* Apache
78+
$conf['apache']['installed'] = false; // will be detected automatically during installation
79+
$conf['apache']['user'] = 'www-data';
80+
$conf['apache']['group'] = 'www-data';
81+
$conf['apache']['init_script'] = 'apache2';
82+
$conf['apache']['version'] = '2.4';
83+
$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available';
84+
$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled';
85+
$conf['apache']['vhost_port'] = '8080';
86+
$conf['apache']['php_ini_path_apache'] = '/etc/php/7.1/apache2/php.ini';
87+
$conf['apache']['php_ini_path_cgi'] = '/etc/php/7.1/cgi/php.ini';
88+
89+
//* Website base settings
90+
$conf['web']['website_basedir'] = '/var/www';
91+
$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]';
92+
$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/';
93+
94+
//* Apps base settings
95+
$conf['web']['apps_vhost_ip'] = '_default_';
96+
$conf['web']['apps_vhost_port'] = '8081';
97+
$conf['web']['apps_vhost_servername'] = '';
98+
$conf['web']['apps_vhost_user'] = 'ispapps';
99+
$conf['web']['apps_vhost_group'] = 'ispapps';
100+
101+
//* Fastcgi
102+
$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php/7.1/cgi/';
103+
$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/';
104+
$conf['fastcgi']['fastcgi_bin'] = '/usr/bin/php-cgi';
105+
106+
//* Postfix
107+
$conf['postfix']['installed'] = false; // will be detected automatically during installation
108+
$conf['postfix']['config_dir'] = '/etc/postfix';
109+
$conf['postfix']['init_script'] = 'postfix';
110+
$conf['postfix']['user'] = 'postfix';
111+
$conf['postfix']['group'] = 'postfix';
112+
$conf['postfix']['vmail_userid'] = '5000';
113+
$conf['postfix']['vmail_username'] = 'vmail';
114+
$conf['postfix']['vmail_groupid'] = '5000';
115+
$conf['postfix']['vmail_groupname'] = 'vmail';
116+
$conf['postfix']['vmail_mailbox_base'] = '/var/vmail';
117+
118+
//* Mailman
119+
$conf['mailman']['installed'] = false; // will be detected automatically during installation
120+
$conf['mailman']['config_dir'] = '/etc/mailman';
121+
$conf['mailman']['init_script'] = 'mailman';
122+
123+
//* Getmail
124+
$conf['getmail']['installed'] = false; // will be detected automatically during installation
125+
$conf['getmail']['config_dir'] = '/etc/getmail';
126+
$conf['getmail']['program'] = '/usr/bin/getmail';
127+
128+
//* Courier
129+
$conf['courier']['installed'] = false; // will be detected automatically during installation
130+
$conf['courier']['config_dir'] = '/etc/courier';
131+
$conf['courier']['courier-authdaemon'] = 'courier-authdaemon';
132+
$conf['courier']['courier-imap'] = 'courier-imap';
133+
$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl';
134+
$conf['courier']['courier-pop'] = 'courier-pop';
135+
$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl';
136+
137+
//* Dovecot
138+
$conf['dovecot']['installed'] = false; // will be detected automatically during installation
139+
$conf['dovecot']['config_dir'] = '/etc/dovecot';
140+
$conf['dovecot']['init_script'] = 'dovecot';
141+
142+
//* SASL
143+
$conf['saslauthd']['installed'] = false; // will be detected automatically during installation
144+
$conf['saslauthd']['config'] = '/etc/default/saslauthd';
145+
$conf['saslauthd']['init_script'] = 'saslauthd';
146+
147+
//* Amavisd
148+
$conf['amavis']['installed'] = false; // will be detected automatically during installation
149+
$conf['amavis']['config_dir'] = '/etc/amavis';
150+
$conf['amavis']['init_script'] = 'amavis';
151+
152+
//* ClamAV
153+
$conf['clamav']['installed'] = false; // will be detected automatically during installation
154+
$conf['clamav']['init_script'] = 'clamav-daemon';
155+
156+
//* Pureftpd
157+
$conf['pureftpd']['installed'] = false; // will be detected automatically during installation
158+
$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd';
159+
$conf['pureftpd']['init_script'] = 'pure-ftpd-mysql';
160+
161+
//* MyDNS
162+
$conf['mydns']['installed'] = false; // will be detected automatically during installation
163+
$conf['mydns']['config_dir'] = '/etc';
164+
$conf['mydns']['init_script'] = 'mydns';
165+
166+
//* PowerDNS
167+
$conf['powerdns']['installed'] = false; // will be detected automatically during installation
168+
$conf['powerdns']['database'] = 'powerdns';
169+
$conf["powerdns"]["config_dir"] = '/etc/powerdns/pdns.d';
170+
$conf['powerdns']['init_script'] = 'pdns';
171+
172+
//* BIND DNS Server
173+
$conf['bind']['installed'] = false; // will be detected automatically during installation
174+
$conf['bind']['bind_user'] = 'root';
175+
$conf['bind']['bind_group'] = 'bind';
176+
$conf['bind']['bind_zonefiles_dir'] = '/etc/bind';
177+
$conf['bind']['named_conf_path'] = '/etc/bind/named.conf';
178+
$conf['bind']['named_conf_local_path'] = '/etc/bind/named.conf.local';
179+
$conf['bind']['init_script'] = 'bind9';
180+
181+
//* Jailkit
182+
$conf['jailkit']['installed'] = false; // will be detected automatically during installation
183+
$conf['jailkit']['config_dir'] = '/etc/jailkit';
184+
$conf['jailkit']['jk_init'] = 'jk_init.ini';
185+
$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini';
186+
$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 /usr/bin/mysql /usr/bin/mysqldump /usr/bin/git /usr/bin/git-receive-pack /usr/bin/git-upload-pack /usr/bin/unzip /usr/bin/zip /bin/tar /bin/rm /usr/bin/patch /etc/localtime';
187+
$conf['jailkit']['jailkit_chroot_cron_programs'] = '/usr/bin/php /usr/bin/perl /usr/share/perl /usr/share/php';
188+
189+
//* Squid
190+
$conf['squid']['installed'] = false; // will be detected automatically during installation
191+
$conf['squid']['config_dir'] = '/etc/squid';
192+
$conf['squid']['init_script'] = 'squid';
193+
194+
//* Nginx
195+
$conf['nginx']['installed'] = false; // will be detected automatically during installation
196+
$conf['nginx']['user'] = 'www-data';
197+
$conf['nginx']['group'] = 'www-data';
198+
$conf['nginx']['config_dir'] = '/etc/nginx';
199+
$conf['nginx']['vhost_conf_dir'] = '/etc/nginx/sites-available';
200+
$conf['nginx']['vhost_conf_enabled_dir'] = '/etc/nginx/sites-enabled';
201+
$conf['nginx']['init_script'] = 'nginx';
202+
$conf['nginx']['vhost_port'] = '8080';
203+
$conf['nginx']['cgi_socket'] = '/var/run/fcgiwrap.socket';
204+
$conf['nginx']['php_fpm_init_script'] = 'php7.1-fpm';
205+
$conf['nginx']['php_fpm_ini_path'] = '/etc/php/7.1/fpm/php.ini';
206+
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php/7.1/fpm/pool.d';
207+
$conf['nginx']['php_fpm_start_port'] = 9010;
208+
$conf['nginx']['php_fpm_socket_dir'] = '/var/lib/php7.1-fpm';
209+
210+
//* OpenVZ
211+
$conf['openvz']['installed'] = false;
212+
213+
//*Bastille-Firwall
214+
$conf['bastille']['installed'] = false;
215+
$conf['bastille']['config_dir'] = '/etc/Bastille';
216+
217+
//* vlogger
218+
$conf['vlogger']['config_dir'] = '/etc';
219+
220+
//* cron
221+
$conf['cron']['init_script'] = 'cron';
222+
$conf['cron']['crontab_dir'] = '/etc/cron.d';
223+
$conf['cron']['wget'] = '/usr/bin/wget';
224+
225+
//* Metronome XMPP
226+
$conf['xmpp']['installed'] = false;
227+
$conf['xmpp']['init_script'] = 'metronome';
228+
229+
230+
?>

install/lib/install.lib.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ function get_distname() {
9797
$mainver = current($mainver).'.'.next($mainver);
9898
}
9999
switch ($mainver){
100+
case "17.10":
101+
$relname = "(Artful Aardvark)";
102+
$distconfid = 'ubuntu1710';
103+
break;
100104
case "17.04":
101105
$relname = "(Zesty Zapus)";
102106
$distconfid = 'ubuntu1604';

install/lib/mysql.lib.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class db
3636
private $_iConnId;
3737

3838
private $dbHost = ''; // hostname of the MySQL server
39+
private $dbPort = ''; // port of the MySQL server
3940
private $dbName = ''; // logical database name on that server
4041
private $dbUser = ''; // database authorized user
4142
private $dbPass = ''; // user's password
@@ -68,21 +69,22 @@ private function do_connect() {
6869
global $conf;
6970

7071
if($this->_iConnId) return true;
71-
$this->dbHost = $conf["mysql"]["host"];
72+
$this->dbHost = $conf['mysql']['host'];
73+
$this->dbPort = $conf['mysql']['port'];
7274
$this->dbName = false;//$conf["mysql"]["database"];
7375
$this->dbUser = $conf["mysql"]["admin_user"];
7476
$this->dbPass = $conf["mysql"]["admin_password"];
7577
$this->dbCharset = $conf["mysql"]["charset"];
7678
$this->dbNewLink = false;
7779
$this->dbClientFlags = null;
7880

79-
$this->_iConnId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass);
81+
$this->_iConnId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort);
8082
$try = 0;
8183
while((!is_object($this->_iConnId) || mysqli_connect_error()) && $try < 5) {
8284
if($try > 0) sleep(1);
8385

8486
$try++;
85-
$this->_iConnId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass);
87+
$this->_iConnId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort);
8688
}
8789

8890
if(!is_object($this->_iConnId) || mysqli_connect_error()) {
@@ -101,11 +103,12 @@ public function setDBData($host, $port, $user, $password) {
101103
$this->dbPort = $port;
102104
$this->dbUser = $user;
103105
$this->dbPass = $password;
106+
$this->dbPort = $port;
104107
}
105108

106109
public function setDBName($name) {
107110
$this->dbName = $name;
108-
$this->_iConnId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, '', $this->dbPort);
111+
$this->_iConnId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort);
109112
if(!((bool)mysqli_query( $this->_iConnId, 'USE `' . $this->dbName . '`'))) {
110113
$this->close();
111114
$this->_sqlerror('Datenbank nicht gefunden / Database not found');
@@ -202,7 +205,7 @@ private function _query($sQuery = '') {
202205
$try++;
203206
$ok = mysqli_ping($this->_iConnId);
204207
if(!$ok) {
205-
if(!mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName)) {
208+
if(!mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName, (int)$this->dbPort)) {
206209
if($this->errorNumber == '111') {
207210
// server is not available
208211
if($try > 9) {

install/tpl/apache_ispconfig.conf.master

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,7 @@ CustomLog "| /usr/local/ispconfig/server/scripts/vlogger -s access.log -t \"%Y%m
129129
</tmpl_if>
130130
</Directory>
131131

132-
<tmpl_if name='apache_version' op='<' value='2.4' format='version'>
133132
Alias /awstats-icon "/usr/share/awstats/icon"
134-
</tmpl_if>
135133

136134
Alias /.well-known/acme-challenge /usr/local/ispconfig/interface/acme/.well-known/acme-challenge
137135
<Directory /usr/local/ispconfig/interface/acme/.well-known/acme-challenge>

install/update.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@
165165
$conf['language_file_import_enabled'] = (isset($conf_old['language_file_import_enabled']))?$conf_old['language_file_import_enabled']:true;
166166

167167
if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
168+
if(isset($conf_old["dbmaster_port"])) $conf["mysql"]["master_port"] = $conf_old["dbmaster_port"];
168169
if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"];
169170
if(isset($conf_old["dbmaster_user"])) $conf["mysql"]["master_ispconfig_user"] = $conf_old["dbmaster_user"];
170171
if(isset($conf_old["dbmaster_password"])) $conf["mysql"]["master_ispconfig_password"] = $conf_old["dbmaster_password"];
@@ -192,7 +193,7 @@
192193
if($do_backup == 'yes') {
193194

194195
//* Create the backup directory
195-
$backup_path = '/var/backup/ispconfig_'.@date('Y-m-d_H-i');
196+
$backup_path = '/var/backup/ispconfig_'.$conf['hostname'].'_'.@date('Y-m-d_H-i');
196197
$conf['backup_path'] = $backup_path;
197198
exec("mkdir -p $backup_path");
198199
exec("chown root:root $backup_path");

interface/lib/classes/ispconfig_request.inc.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,9 @@ public static function post($url, $data, $get_headers = false, $user_agent = fal
250250
foreach($tmpheaders as $cur) {
251251
if(preg_match('/^(\w+)\:\s*(.*)$/is', $cur, $matches)) {
252252
$headers["$matches[1]"] = trim($matches[2]);
253+
} elseif(strpos($cur, ':') === false && substr($cur, 0, 5) === 'HTTP/') {
254+
$headers['status'] = $header;
255+
$headers['http_code'] = intval(preg_replace('/^HTTP\/\d+\.\d+\s+(\d+)\s+.*$/', '$1', $header));
253256
}
254257
}
255258
return array($headers, $response);

interface/lib/lang/cz.lng

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
2-
$wb['conf_format_dateshort'] = 'd. m. Y';
2+
$wb['conf_format_dateshort'] = 'Y-d-m';
33
$wb['conf_format_datelong'] = 'l dS of F Y';
44
$wb['conf_format_timeshort'] = 'H:i';
55
$wb['conf_format_timelong'] = 'H:i:s';
6-
$wb['conf_format_datetime'] = 'd. m. Y H:i';
6+
$wb['conf_format_datetime'] = 'Y-d-m H:i';
77
$wb['number_format_decimals'] = '4';
88
$wb['number_format_decimals_client'] = '2';
99
$wb['number_format_dec_point'] = '.';
@@ -69,7 +69,7 @@ $wb['monthnamesshort_dec'] = 'Pro';
6969
$wb['datepicker_nextText'] = 'Další';
7070
$wb['datepicker_prevText'] = 'Předchozí';
7171
$wb['logout_txt'] = 'Odhlášení';
72-
$wb['conf_format_dateshort_human_readable'] = 'dd. mm. yyyy';
72+
$wb['conf_format_dateshort_human_readable'] = 'yyyy-mm-dd';
7373
$wb['submit_confirmation'] = 'Opravdu chcete provést tuto akci ?';
7474
$wb['top_menu_mailuser'] = 'E-mail. uživ.';
7575
$wb['globalsearch_resultslimit_of_txt'] = 'z';
@@ -150,13 +150,14 @@ $wb['weak_password_length_txt'] = 'Zvolené heslo neodpovídá požadavkům zás
150150
$wb['security_check1_txt'] = 'Check for security permission:';
151151
$wb['security_check2_txt'] = 'failed.';
152152
$wb['err_csrf_attempt_blocked'] = 'CSRF attempt blocked.';
153-
$wb['select_directive_snippet_txt'] = 'Directive Snippets';
153+
$wb['select_directive_snippet_txt'] = 'Šablony částí prog. kódu';
154154
$wb['select_master_directive_snippet_txt'] = 'Master Directive Snippets';
155-
$wb['datalog_status_i_xmpp_domain'] = 'Create XMPP domain';
156-
$wb['datalog_status_u_xmpp_domain'] = 'Update XMPP domain';
157-
$wb['datalog_status_d_xmpp_domain'] = 'Delete XMPP domain';
158-
$wb['datalog_status_i_xmpp_user'] = 'Create XMPP user';
159-
$wb['datalog_status_u_xmpp_user'] = 'Update XMPP user';
160-
$wb['datalog_status_d_xmpp_user'] = 'Delete XMPP user';
161155
$wb['datalog_changes_close_txt'] = 'Close';
156+
$wb['datalog_status_i_xmpp_domain'] = 'Vytvořit XMPP doménu';
157+
$wb['datalog_status_u_xmpp_domain'] = 'Aktualizovat XMPP doménu';
158+
$wb['datalog_status_d_xmpp_domain'] = 'Smazat XMPP doménu';
159+
$wb['datalog_status_i_xmpp_user'] = 'Vytvořit XMPP uživatele';
160+
$wb['datalog_status_u_xmpp_user'] = 'Aktualizovat XMPP uživatele';
161+
$wb['datalog_status_d_xmpp_user'] = 'Smazat XMPP uživatele';
162+
162163
?>

interface/web/admin/language_import.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ function validate_line($line) {
152152
if(is_array($parts) && count($parts) > 0 && $parts[0] == '--') {
153153
// Write language file, if its not the first file
154154
if($buffer != '' && $langfile_path != '') {
155+
$buffer = trim($buffer)."\n";
155156
if(@$_REQUEST['overwrite'] != 1 && @is_file($langfile_path)) {
156157
$error .= "File exists, not written: $langfile_path<br />";
157158
} else {

interface/web/admin/lib/lang/cz.lng

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ $wb['Import'] = 'Nahrát jazykový soubor';
4646
$wb['Remote Actions'] = 'Vzdálené akce';
4747
$wb['Do OS-Update'] = 'Aktualizovat operační systém';
4848
$wb['Do ISPConfig-Update'] = 'Aktualizovat ISPConfig';
49-
$wb['Directive Snippets'] = 'Directive Snippets';
49+
$wb['Directive Snippets'] = 'Šablony částí prog. kódu';
5050
$wb['Sites'] = 'Stránky';
5151
$wb['DNS'] = 'DNS';
5252
?>

0 commit comments

Comments
 (0)