Commit 4ad9487d authored by Florian Schaal's avatar Florian Schaal
Browse files
parents 706a074e f1634087
......@@ -198,8 +198,10 @@ if($conf['services']['mail'] == true) {
$inst->configure_postfix('dont-create-certs');
//** Configure mailman
swriteln('Configuring Mailman');
$inst->configure_mailman('update');
if($conf['mailman']['installed'] == true) {
swriteln('Configuring Mailman');
$inst->configure_mailman('update');
}
//* Configure Jailkit
swriteln('Configuring Jailkit');
......
......@@ -405,7 +405,6 @@ class installer_dist extends installer_base {
'virtual_transport = lmtp:unix:private/dovecot-lmtp',
'smtpd_sasl_type = dovecot',
'smtpd_sasl_path = private/auth',
'receive_override_options = no_address_mappings'
);
// Make a backup copy of the main.cf file
......@@ -451,6 +450,8 @@ class installer_dist extends installer_base {
copy("$config_dir/$configfile", "$config_dir/$configfile~");
exec("chmod 400 $config_dir/$configfile~");
}
if(!@file_exists('/etc/dovecot-sql.conf')) exec('ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf');
$content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/fedora_dovecot-sql.conf.master', "tpl/fedora_dovecot-sql.conf.master");
$content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content);
......@@ -463,7 +464,7 @@ class installer_dist extends installer_base {
exec("chown root:root $config_dir/$configfile");
// Dovecot shall ignore mounts in website directory
exec("doveadm mount add '/var/www/*' ignore");
if(is_installed('doveadm')) exec("doveadm mount add '/var/www/*' ignore > /dev/null 2> /dev/null");
}
......@@ -1227,6 +1228,9 @@ class installer_dist extends installer_base {
//* Remove Domain module as its functions are available in the client module now
if(@is_dir('/usr/local/ispconfig/interface/web/domain')) exec('rm -rf /usr/local/ispconfig/interface/web/domain');
// Add symlink for patch tool
if(!is_link('/usr/local/bin/ispconfig_patch')) exec('ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch');
}
......
......@@ -1103,6 +1103,9 @@ class installer extends installer_base
//* Remove Domain module as its functions are available in the client module now
if(@is_dir('/usr/local/ispconfig/interface/web/domain')) exec('rm -rf /usr/local/ispconfig/interface/web/domain');
// Add symlink for patch tool
if(!is_link('/usr/local/bin/ispconfig_patch')) exec('ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch');
}
......
......@@ -456,7 +456,6 @@ class installer_dist extends installer_base {
'virtual_transport = lmtp:unix:private/dovecot-lmtp',
'smtpd_sasl_type = dovecot',
'smtpd_sasl_path = private/auth',
'receive_override_options = no_address_mappings'
);
// Make a backup copy of the main.cf file
......@@ -514,7 +513,7 @@ class installer_dist extends installer_base {
exec("chown root:root $config_dir/$configfile");
// Dovecot shall ignore mounts in website directory
exec("doveadm mount add '/srv/www/*' ignore");
if(is_installed('doveadm')) exec("doveadm mount add '/srv/www/*' ignore > /dev/null 2> /dev/null");
}
......@@ -1299,6 +1298,9 @@ class installer_dist extends installer_base {
//* Remove Domain module as its functions are available in the client module now
if(@is_dir('/usr/local/ispconfig/interface/web/domain')) exec('rm -rf /usr/local/ispconfig/interface/web/domain');
// Add symlink for patch tool
if(!is_link('/usr/local/bin/ispconfig_patch')) exec('ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch');
}
......
......@@ -191,7 +191,9 @@ if($install_mode == 'standard') {
$inst->configure_postfix();
//* Configure Mailman
$inst->configure_mailman('install');
if($conf['mailman']['installed'] == true) {
$inst->configure_mailman('install');
}
//* Configure jailkit
swriteln('Configuring Jailkit');
......
......@@ -699,7 +699,7 @@ class installer_base {
if(!is_user($cf['vmail_username'])) caselog("$command &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
//* These postconf commands will be executed on installation and update
$server_ini_rec = $this->db->queryOneRecord("SELECT config FROM server WHERE server_id = ".$conf['server_id']);
$server_ini_rec = $this->db->queryOneRecord("SELECT config FROM `" . $this->db->quote($conf["mysql"]["database"]) . "`.`server` WHERE server_id = ".$conf['server_id']);
$server_ini_array = ini_to_array(stripslashes($server_ini_rec['config']));
unset($server_ini_rec);
......@@ -2144,7 +2144,8 @@ class installer_base {
replaceLine('/etc/default/rkhunter', 'CRON_DB_UPDATE="yes"', 'CRON_DB_UPDATE="no"', 1, 0);
}
// Add symlink for patch tool
if(!is_link('/usr/local/bin/ispconfig_patch')) exec('ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch');
}
......
......@@ -49,7 +49,7 @@ ALTER TABLE `dns_rr`
CHANGE `sys_perm_group` `sys_perm_group` varchar(5) NOT NULL DEFAULT '',
CHANGE `sys_perm_other` `sys_perm_other` varchar(5) NOT NULL DEFAULT '',
CHANGE `zone` `zone` int(11) unsigned NOT NULL DEFAULT '0',
CHANGE `name` `name` varchar(64) NOT NULL DEFAULT '',
CHANGE `name` `name` varchar(255) NOT NULL DEFAULT '',
CHANGE `data` `data` varchar(255) NOT NULL DEFAULT '';
ALTER TABLE `dns_slave`
......
ALTER TABLE `dns_rr` CHANGE `name` `name` varchar(255) NOT NULL DEFAULT '';
\ No newline at end of file
ALTER TABLE `ftp_user` ADD `expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `dl_bandwidth` ;
......@@ -447,7 +447,7 @@ CREATE TABLE `dns_rr` (
`sys_perm_other` varchar(5) NOT NULL DEFAULT '',
`server_id` int(11) NOT NULL default '1',
`zone` int(11) unsigned NOT NULL DEFAULT '0',
`name` varchar(64) NOT NULL DEFAULT '',
`name` varchar(255) NOT NULL DEFAULT '',
`type` enum('A','AAAA','ALIAS','CNAME','HINFO','MX','NAPTR','NS','PTR','RP','SRV','TXT') default NULL,
`data` varchar(255) NOT NULL DEFAULT '',
`aux` int(11) unsigned NOT NULL default '0',
......@@ -598,6 +598,7 @@ CREATE TABLE `ftp_user` (
`dl_ratio` int(11) NOT NULL default '-1',
`ul_bandwidth` int(11) NOT NULL default '-1',
`dl_bandwidth` int(11) NOT NULL default '-1',
`expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`ftp_user_id`),
KEY `active` (`active`),
KEY `server_id` (`server_id`),
......
......@@ -5,7 +5,7 @@ server {
root {apps_vhost_dir};
client_max_body_size 20M;
client_max_body_size 100M;
location / {
index index.php index.html;
......
......@@ -59,12 +59,12 @@ MYSQLCrypt crypt
# Query to execute in order to fetch the password
MYSQLGetPW SELECT password FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND username="\L"
MYSQLGetPW SELECT password FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
# Query to execute in order to fetch the system user name or uid
MYSQLGetUID SELECT uid FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND username="\L"
MYSQLGetUID SELECT uid FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
# Optional : default UID - if set this overrides MYSQLGetUID
......@@ -74,7 +74,7 @@ MYSQLGetUID SELECT uid FROM ftp_user WHERE active = 'y' AND server_id = '{se
# Query to execute in order to fetch the system user group or gid
MYSQLGetGID SELECT gid FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND username="\L"
MYSQLGetGID SELECT gid FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
# Optional : default GID - if set this overrides MYSQLGetGID
......@@ -84,34 +84,34 @@ MYSQLGetGID SELECT gid FROM ftp_user WHERE active = 'y' AND server_id = '{se
# Query to execute in order to fetch the home directory
MYSQLGetDir SELECT dir FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND username="\L"
MYSQLGetDir SELECT dir FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
# Optional : query to get the maximal number of files
# Pure-FTPd must have been compiled with virtual quotas support.
MySQLGetQTAFS SELECT quota_files FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND quota_files != '-1' AND username="\L"
MySQLGetQTAFS SELECT quota_files FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND quota_files != '-1' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
# Optional : query to get the maximal disk usage (virtual quotas)
# The number should be in Megabytes.
# Pure-FTPd must have been compiled with virtual quotas support.
MySQLGetQTASZ SELECT quota_size FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND quota_size != '-1' AND username="\L"
MySQLGetQTASZ SELECT quota_size FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND quota_size != '-1' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
# Optional : ratios. The server has to be compiled with ratio support.
MySQLGetRatioUL SELECT ul_ratio FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND ul_ratio != '-1' AND username="\L"
MySQLGetRatioDL SELECT dl_ratio FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND dl_ratio != '-1' AND username="\L"
MySQLGetRatioUL SELECT ul_ratio FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND ul_ratio != '-1' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
MySQLGetRatioDL SELECT dl_ratio FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND dl_ratio != '-1' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
# Optional : bandwidth throttling.
# The server has to be compiled with throttling support.
# Values are in KB/s .
MySQLGetBandwidthUL SELECT ul_bandwidth FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND ul_bandwidth != '-1' AND username="\L"
MySQLGetBandwidthDL SELECT dl_bandwidth FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND dl_bandwidth != '-1' AND username="\L"
MySQLGetBandwidthUL SELECT ul_bandwidth FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND ul_bandwidth != '-1' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
MySQLGetBandwidthDL SELECT dl_bandwidth FROM ftp_user WHERE active = 'y' AND server_id = '{server_id}' AND dl_bandwidth != '-1' AND username="\L" AND (expires = "0000-00-00 00:00:00" OR expires > NOW())
# Enable ~ expansion. NEVER ENABLE THIS BLINDLY UNLESS :
# 1) You know what you are doing.
......
......@@ -262,8 +262,10 @@ if($reconfigure_services_answer == 'yes') {
$inst->configure_postfix('dont-create-certs');
//** Configure mailman
swriteln('Configuring Mailman');
$inst->configure_mailman('update');
if($conf['mailman']['installed'] == true) {
swriteln('Configuring Mailman');
$inst->configure_mailman('update');
}
//* Configure Jailkit
swriteln('Configuring Jailkit');
......
......@@ -113,6 +113,27 @@ class remoting_client extends remoting {
}
}
//* Get the contact details to send a email like email address, name, etc.
public function client_get_emailcontact($session_id, $client_id) {
global $app;
if(!$this->checkPerm($session_id, 'client_get_emailcontact')) {
throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
return false;
}
$client_id = $app->functions->intval($client_id);
$rec = $app->db->queryOneRecord("SELECT company_name,contact_name,gender,email,language FROM client WHERE client_id = ".$client_id);
if(is_array($rec)) {
return $rec;
} else {
throw new SoapFault('no_client_found', 'There is no client with this client ID.');
return false;
}
}
public function client_get_groupid($session_id, $client_id)
{
......@@ -489,6 +510,123 @@ class remoting_client extends remoting {
$result = $app->db->queryAllRecords($sql);
return $result;
}
public function client_login_get($session_id,$username,$password,$remote_ip = '') {
global $app;
//* Check permissions
if(!$this->checkPerm($session_id, 'client_get')) {
throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
return false;
}
//* Check username and password
if(!preg_match("/^[\w\.\-\_\@]{1,128}$/", $username)) {
throw new SoapFault('user_regex_error', 'Username contains invalid characters.');
return false;
}
if(!preg_match("/^.{1,64}$/i", $password)) {
throw new SoapFault('password_length_error', 'Invalid password length or no password provided.');
return false;
}
//* Check failed logins
$sql = "SELECT * FROM `attempts_login` WHERE `ip`= '".$app->db->quote($remote_ip)."' AND `login_time` > (NOW() - INTERVAL 1 MINUTE) LIMIT 1";
$alreadyfailed = $app->db->queryOneRecord($sql);
//* too many failedlogins
if($alreadyfailed['times'] > 5) {
throw new SoapFault('error_user_too_many_logins', 'Too many failed logins.');
return false;
}
//*Set variables
$returnval == false;
if(strstr($username,'@')) {
// Check against client table
$sql = "SELECT * FROM client WHERE email = '".$app->db->quote($username)."'";
$user = $app->db->queryOneRecord($sql);
if($user) {
$saved_password = stripslashes($user['password']);
if(substr($saved_password, 0, 3) == '$1$') {
//* The password is crypt-md5 encrypted
$salt = '$1$'.substr($saved_password, 3, 8).'$';
if(crypt(stripslashes($password), $salt) != $saved_password) {
$user = false;
}
} else {
//* The password is md5 encrypted
if(md5($password) != $saved_password) {
$user = false;
}
}
}
if(is_array($user)) {
$returnval = array( 'username' => $user['username'],
'type' => 'user',
'client_id' => $user['client_id'],
'language' => $user['language'],
'country' => $user['country']);
}
} else {
// Check against sys_user table
$sql = "SELECT * FROM sys_user WHERE username = '".$app->db->quote($username)."'";
$user = $app->db->queryOneRecord($sql);
if($user) {
$saved_password = stripslashes($user['passwort']);
if(substr($saved_password, 0, 3) == '$1$') {
//* The password is crypt-md5 encrypted
$salt = '$1$'.substr($saved_password, 3, 8).'$';
if(crypt(stripslashes($password), $salt) != $saved_password) {
$user = false;
}
} else {
//* The password is md5 encrypted
if(md5($password) != $saved_password) {
$user = false;
}
}
}
if(is_array($user)) {
$returnval = array( 'username' => $user['username'],
'type' => $user['typ'],
'client_id' => $user['client_id'],
'language' => $user['language'],
'country' => 'de');
} else {
throw new SoapFault('login_failed', 'Login failed.');
}
}
//* Log failed login attempts
if($user === false) {
$time = time();
if(!$alreadyfailed['times'] ) {
//* user login the first time wrong
$sql = "INSERT INTO `attempts_login` (`ip`, `times`, `login_time`) VALUES ('".$app->db->quote($remote_ip)."', 1, NOW())";
$app->db->query($sql);
} elseif($alreadyfailed['times'] >= 1) {
//* update times wrong
$sql = "UPDATE `attempts_login` SET `times`=`times`+1, `login_time`=NOW() WHERE `login_time` >= '".$time."' LIMIT 1";
$app->db->query($sql);
}
}
return $returnval;
}
}
......
......@@ -233,8 +233,19 @@ class remoting_lib extends tform_base {
function getDataRecord($primary_id) {
global $app;
$escape = '`';
$this->loadUserProfile();
if(@is_numeric($primary_id)) {
return parent::getDataRecord($primary_id);
if($primary_id > 0) {
// Return a single record
return parent::getDataRecord($primary_id);
} elseif($primary_id == -1) {
// Return a array with all records
$sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape;
return $app->db->queryAllRecords($sql);
} else {
throw new SoapFault('invalid_id', 'The ID has to be > 0 or -1.');
return array();
}
} elseif (@is_array($primary_id) || @is_object($primary_id)) {
if(@is_object($primary_id)) $primary_id = get_object_vars($primary_id); // do not use cast (array)xxx because it returns private and protected properties!
$sql_offset = 0;
......
......@@ -106,6 +106,7 @@ class tform_actions {
global $app, $conf;
$this->onBeforeUpdate();
$app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_before_update', $this);
$ext_where = '';
$sql = $app->tform->getSQL($this->dataRecord, $app->tform->getCurrentTab(), 'UPDATE', $this->id, $ext_where);
......@@ -192,6 +193,7 @@ class tform_actions {
global $app, $conf;
$this->onBeforeInsert();
$app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_before_insert', $this);
$ext_where = '';
$sql = $app->tform->getSQL($this->dataRecord, $app->tform->getCurrentTab(), 'INSERT', $this->id, $ext_where);
......
......@@ -38,19 +38,27 @@ class validate_password {
return 1;
}
$different = 0;
if (preg_match('/[abcdefghijklnmopqrstuvwxyz]/', $password)) {
$different += 1;
}
if (preg_match('/[ABCDEFGHIJKLNMOPQRSTUVWXYZ]/', $password)) {
$points += 1;
$different += 1;
}
if (preg_match('/[0123456789]/', $password)) {
$points += 1;
$different += 1;
}
if (preg_match('/[`~!@#$%^&*()_+|\\=-[]}{\';:\/?.>,<" ]/', $password)) {
$points += 1;
$different += 1;
}
if ($points == 0) {
if ($points == 0 || $different < 3) {
if ($length >= 5 && $length <= 6) {
return 1;
} else if ($length >= 7 && $length <= 8) {
......
......@@ -16,135 +16,136 @@ $wb['error_1003'] = 'Detta användarnamn är deaktiverat!';
$wb['delete_confirmation'] = 'Vill du verkligen ta bort detta inlägg?';
$wb['error_no_view_permission'] = 'Du har ej behörighet att se detta inlägg eller så existerar den ej!';
$wb['error_no_delete_permission'] = 'Du har ej behörighet att ta bort detta inlägg!';
$wb['page_txt'] = 'Page';
$wb['page_of_txt'] = 'of';
$wb['page_next_txt'] = 'Next';
$wb['page_back_txt'] = 'Back';
$wb['delete_txt'] = 'Delete';
$wb['page_txt'] = 'Sida';
$wb['page_of_txt'] = 'av';
$wb['page_next_txt'] = 'Nästa';
$wb['page_back_txt'] = 'Tillbaka';
$wb['delete_txt'] = 'Radera';
$wb['filter_txt'] = 'Filter';
$wb['add_new_record_txt'] = 'Add new record';
$wb['btn_save_txt'] = 'Save';
$wb['btn_cancel_txt'] = 'Cancel';
$wb['toolsarea_head_txt'] = 'Tools';
$wb['page_and_txt'] = 'and';
$wb['add_new_record_txt'] = 'Lägg till nytt inlägg';
$wb['btn_save_txt'] = 'Spara';
$wb['btn_cancel_txt'] = 'Avbryt';
$wb['toolsarea_head_txt'] = 'Verktyg';
$wb['page_and_txt'] = 'och';
$wb['top_menu_system'] = 'System';
$wb['top_menu_client'] = 'Client';
$wb['top_menu_email'] = 'Email';
$wb['top_menu_monitor'] = 'Monitor';
$wb['top_menu_sites'] = 'Sites';
$wb['top_menu_client'] = 'Kund';
$wb['top_menu_email'] = 'Epost';
$wb['top_menu_monitor'] = 'Övervakning';
$wb['top_menu_sites'] = 'Sajter';
$wb['top_menu_dns'] = 'DNS';
$wb['top_menu_tools'] = 'Tools';
$wb['top_menu_help'] = 'Help';
$wb['top_menu_billing'] = 'Billing';
$wb['top_menu_domain'] = 'Domains';
$wb['top_menu_dashboard'] = 'Home';
$wb['latest_news_txt'] = 'Latest news';
$wb['top_menu_tools'] = 'Verktyg';
$wb['top_menu_help'] = 'Hlp';
$wb['top_menu_billing'] = 'Fakturering';
$wb['top_menu_domain'] = 'Domäner';
$wb['top_menu_dashboard'] = 'Hem';
$wb['latest_news_txt'] = 'Senaste nytt';
$wb['top_menu_vm'] = 'VServer';
$wb['daynamesmin_su'] = 'Su';
$wb['daynamesmin_mo'] = 'Mo';
$wb['daynamesmin_tu'] = 'Tu';
$wb['daynamesmin_we'] = 'We';
$wb['daynamesmin_th'] = 'Th';
$wb['daynamesmin_su'] = 'Sö';
$wb['daynamesmin_mo'] = 'Må';
$wb['daynamesmin_tu'] = 'Ti';
$wb['daynamesmin_we'] = 'On';
$wb['daynamesmin_th'] = 'To';
$wb['daynamesmin_fr'] = 'Fr';
$wb['daynamesmin_sa'] = 'Sa';
$wb['daynames_sunday'] = 'Sunday';
$wb['daynames_monday'] = 'Monday';
$wb['daynames_tuesday'] = 'Tuesday';
$wb['daynames_wednesday'] = 'Wednesday';
$wb['daynames_thursday'] = 'Thursday';
$wb['daynames_friday'] = 'Friday';
$wb['daynames_saturday'] = 'Saturday';
$wb['daynamesmin_sa'] = '';
$wb['daynames_sunday'] = 'Söndag';
$wb['daynames_monday'] = 'Måndag';
$wb['daynames_tuesday'] = 'Tisdag';
$wb['daynames_wednesday'] = 'Onsdag';
$wb['daynames_thursday'] = 'Torsdag';
$wb['daynames_friday'] = 'Fredag';
$wb['daynames_saturday'] = 'rdag';
$wb['monthnamesshort_jan'] = 'Jan';
$wb['monthnamesshort_feb'] = 'Feb';
$wb['monthnamesshort_mar'] = 'Mar';
$wb['monthnamesshort_apr'] = 'Apr';
$wb['monthnamesshort_may'] = 'May';
$wb['monthnamesshort_may'] = 'Maj';
$wb['monthnamesshort_jun'] = 'Jun';
$wb['monthnamesshort_jul'] = 'Jul';
$wb['monthnamesshort_aug'] = 'Aug';
$wb['monthnamesshort_sep'] = 'Sep';
$wb['monthnamesshort_oct'] = 'Oct';
$wb['monthnamesshort_oct'] = 'Okt';
$wb['monthnamesshort_nov'] = 'Nov';
$wb['monthnamesshort_dec'] = 'Dec';
$wb['datepicker_nextText'] = 'Next';
$wb['datepicker_prevText'] = 'Prev';
$wb['logout_txt'] = 'Logout';
$wb['datepicker_nextText'] = 'Nästa';
$wb['datepicker_prevText'] = 'Föreg.';
$wb['logout_txt'] = 'Logga ut';
$wb['conf_format_dateshort_human_readable'] = 'yyyy-mm-dd';
$wb['submit_confirmation'] = 'Do you really want to perform this action?';
$wb['top_menu_mailuser'] = 'Mailuser';
$wb['globalsearch_resultslimit_of_txt'] = 'of';
$wb['globalsearch_resultslimit_results_txt'] = 'results';
$wb['globalsearch_noresults_text_txt'] = 'No results.';
$wb['globalsearch_noresults_limit_txt'] = '0 results';
$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
$wb['submit_confirmation'] = 'Är du säker på att du vill utföra detta?';
$wb['top_menu_mailuser'] = 'Epostanvändare';
$wb['globalsearch_resultslimit_of_txt'] = 'av';
$wb['globalsearch_resultslimit_results_txt'] = 'resultat';
$wb['globalsearch_noresults_text_txt'] = 'Inga resultat.';
$wb['globalsearch_noresults_limit_txt'] = '0 resultat';
$wb['globalsearch_searchfield_watermark_txt'] = 'Sök';
$wb['globalsearch_suggestions_text_txt'] = 'Förslag';
$wb['global_tabchange_warning_txt'] = 'Changed data in this tab will be changed if you press OK. On cancel they will be discarded.';
$wb['global_tabchange_discard_txt'] = 'You have unsaved changes in this tab. Changes will be discarded if you continue.';
$wb['datalog_changes_txt'] = 'The following changes are not yet populated to all servers:';
$wb['datalog_changes_end_txt'] = 'Storing updates can take up to one minute. Please be patient.';
$wb['datalog_status_i_web_database'] = 'Create new database';
$wb['datalog_status_u_web_database'] = 'Update database';
$wb['datalog_status_d_web_database'] = 'Delete database';
$wb['datalog_status_i_web_database_user'] = 'Create database user for database';
$wb['datalog_status_u_web_database_user'] = 'Update database user';
$wb['datalog_status_d_web_database_user'] = 'Delete database user';
$wb['datalog_status_i_web_domain'] = 'Create new website';
$wb['datalog_status_u_web_domain'] = 'Update website settings';
$wb['datalog_status_d_web_domain'] = 'Delete website';
$wb['datalog_status_i_ftp_user'] = 'Create FTP user';
$wb['datalog_status_u_ftp_user'] = 'Update FTP user';
$wb['datalog_status_d_ftp_user'] = 'Delete FTP user';
$wb['datalog_status_i_mail_domain'] = 'Create email domain';
$wb['datalog_status_u_mail_domain'] = 'Update email domain';
$wb['datalog_status_d_mail_domain'] = 'Delete email domain';
$wb['datalog_status_i_mail_user'] = 'Create email user';