From 97cbfafbed43e5b6966fc12ce3faa8ba89cf80fe Mon Sep 17 00:00:00 2001 From: anton-reutov Date: Thu, 19 Feb 2015 18:40:45 +0300 Subject: [PATCH 01/15] Update dovecot.conf --- install/debian/dovecot.conf | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/install/debian/dovecot.conf b/install/debian/dovecot.conf index 0a855351..005e97aa 100644 --- a/install/debian/dovecot.conf +++ b/install/debian/dovecot.conf @@ -2,3 +2,27 @@ protocols = imap pop3 listen = *, :: base_dir = /var/run/dovecot/ !include conf.d/*.conf + + namespace { + type = private + separator = / + prefix = + inbox = yes + + mailbox Sent { + auto = subscribe + special_use = \Sent + } + mailbox Drafts { + auto = subscribe + special_use = \Drafts + } + mailbox Trash { + auto = subscribe + special_use = \Trash + } + mailbox Junk { + auto = subscribe + special_use = \Junk + } + } From 71d2daf9e3aa40c136be1fc84c6b5cd1dd3df07e Mon Sep 17 00:00:00 2001 From: anton-reutov Date: Thu, 19 Feb 2015 18:43:28 +0300 Subject: [PATCH 02/15] Update 20-imap.conf --- install/rhel/dovecot/conf.d/20-imap.conf | 61 ++++++------------------ 1 file changed, 14 insertions(+), 47 deletions(-) diff --git a/install/rhel/dovecot/conf.d/20-imap.conf b/install/rhel/dovecot/conf.d/20-imap.conf index 5f8725e6..5ee2c517 100644 --- a/install/rhel/dovecot/conf.d/20-imap.conf +++ b/install/rhel/dovecot/conf.d/20-imap.conf @@ -3,51 +3,18 @@ ## protocol imap { - # Maximum IMAP command line length. Some clients generate very long command - # lines with huge mailboxes, so you may need to raise this if you get - # "Too long argument" or "IMAP command line too large" errors often. - #imap_max_line_length = 64k - - # Maximum number of IMAP connections allowed for a user from each IP address. - # NOTE: The username is compared case-sensitively. - #mail_max_userip_connections = 10 - - # Space separated list of plugins to load (default is global mail_plugins). - #mail_plugins = $mail_plugins - - # IMAP logout format string: - # %i - total number of bytes read from client - # %o - total number of bytes sent to client - #imap_logout_format = bytes=%i/%o - - # Override the IMAP CAPABILITY response. If the value begins with '+', - # add the given capabilities on top of the defaults (e.g. +XFOO XBAR). - #imap_capability = - - # How long to wait between "OK Still here" notifications when client is - # IDLEing. - #imap_idle_notify_interval = 2 mins - - # ID field names and values to send to clients. Using * as the value makes - # Dovecot use the default value. The following fields have default values - # currently: name, version, os, os-version, support-url, support-email. - #imap_id_send = - - # ID fields sent by client to log. * means everything. - #imap_id_log = - - # Workarounds for various client bugs: - # delay-newmail: - # Send EXISTS/RECENT new mail notifications only when replying to NOOP - # and CHECK commands. Some clients ignore them otherwise, for example OSX - # Mail ( Date: Thu, 19 Feb 2015 18:46:17 +0300 Subject: [PATCH 03/15] Update dovecot.conf --- install/ubuntu/dovecot.conf | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/install/ubuntu/dovecot.conf b/install/ubuntu/dovecot.conf index 0a855351..005e97aa 100644 --- a/install/ubuntu/dovecot.conf +++ b/install/ubuntu/dovecot.conf @@ -2,3 +2,27 @@ protocols = imap pop3 listen = *, :: base_dir = /var/run/dovecot/ !include conf.d/*.conf + + namespace { + type = private + separator = / + prefix = + inbox = yes + + mailbox Sent { + auto = subscribe + special_use = \Sent + } + mailbox Drafts { + auto = subscribe + special_use = \Drafts + } + mailbox Trash { + auto = subscribe + special_use = \Trash + } + mailbox Junk { + auto = subscribe + special_use = \Junk + } + } From b1014c9ccebe35f995cb63b1e91584b863a8b0d1 Mon Sep 17 00:00:00 2001 From: anton-reutov Date: Thu, 19 Feb 2015 21:40:25 +0300 Subject: [PATCH 04/15] Update dovecot.conf --- install/ubuntu/dovecot.conf | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/install/ubuntu/dovecot.conf b/install/ubuntu/dovecot.conf index 005e97aa..0a855351 100644 --- a/install/ubuntu/dovecot.conf +++ b/install/ubuntu/dovecot.conf @@ -2,27 +2,3 @@ protocols = imap pop3 listen = *, :: base_dir = /var/run/dovecot/ !include conf.d/*.conf - - namespace { - type = private - separator = / - prefix = - inbox = yes - - mailbox Sent { - auto = subscribe - special_use = \Sent - } - mailbox Drafts { - auto = subscribe - special_use = \Drafts - } - mailbox Trash { - auto = subscribe - special_use = \Trash - } - mailbox Junk { - auto = subscribe - special_use = \Junk - } - } From 61133e8c898c80f50298034583a01e54aa7529cb Mon Sep 17 00:00:00 2001 From: anton-reutov Date: Thu, 19 Feb 2015 21:42:07 +0300 Subject: [PATCH 05/15] Update 20-imap.conf --- install/ubuntu/dovecot/conf.d/20-imap.conf | 66 +++++----------------- 1 file changed, 14 insertions(+), 52 deletions(-) diff --git a/install/ubuntu/dovecot/conf.d/20-imap.conf b/install/ubuntu/dovecot/conf.d/20-imap.conf index 1a459f8e..5ee2c517 100644 --- a/install/ubuntu/dovecot/conf.d/20-imap.conf +++ b/install/ubuntu/dovecot/conf.d/20-imap.conf @@ -3,56 +3,18 @@ ## protocol imap { - # Maximum IMAP command line length. Some clients generate very long command - # lines with huge mailboxes, so you may need to raise this if you get - # "Too long argument" or "IMAP command line too large" errors often. - #imap_max_line_length = 64k - - # Maximum number of IMAP connections allowed for a user from each IP address. - # NOTE: The username is compared case-sensitively. - #mail_max_userip_connections = 10 - - # Space separated list of plugins to load (default is global mail_plugins). - #mail_plugins = $mail_plugins - - # IMAP logout format string: - # %i - total number of bytes read from client - # %o - total number of bytes sent to client - #imap_logout_format = bytes=%i/%o - - # Override the IMAP CAPABILITY response. If the value begins with '+', - # add the given capabilities on top of the defaults (e.g. +XFOO XBAR). - #imap_capability = - - # How long to wait between "OK Still here" notifications when client is - # IDLEing. - #imap_idle_notify_interval = 2 mins - - # ID field names and values to send to clients. Using * as the value makes - # Dovecot use the default value. The following fields have default values - # currently: name, version, os, os-version, support-url, support-email. - #imap_id_send = - - # ID fields sent by client to log. * means everything. - #imap_id_log = - - # Workarounds for various client bugs: - # delay-newmail: - # Send EXISTS/RECENT new mail notifications only when replying to NOOP - # and CHECK commands. Some clients ignore them otherwise, for example OSX - # Mail ( Date: Fri, 20 Feb 2015 22:20:07 +0300 Subject: [PATCH 06/15] Update proftpd.conf --- install/debian/proftpd.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/debian/proftpd.conf b/install/debian/proftpd.conf index 532efab0..e948e92a 100644 --- a/install/debian/proftpd.conf +++ b/install/debian/proftpd.conf @@ -3,7 +3,7 @@ ServerName "FTP" ServerIdent on "FTP Server ready." ServerAdmin root@localhost DefaultServer on -VRootEngine on +VRootEngine off DefaultRoot ~ !adm AuthPAMConfig proftpd AuthOrder mod_auth_pam.c* mod_auth_unix.c From 04dccc917efb654167b1688d60bbd07184d73d49 Mon Sep 17 00:00:00 2001 From: anton-reutov Date: Sat, 21 Feb 2015 14:37:25 +0300 Subject: [PATCH 07/15] Update vst-install-ubuntu.sh --- install/vst-install-ubuntu.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/vst-install-ubuntu.sh b/install/vst-install-ubuntu.sh index 04762832..14ff61c1 100644 --- a/install/vst-install-ubuntu.sh +++ b/install/vst-install-ubuntu.sh @@ -534,6 +534,7 @@ wget $CHOST/$VERSION/sudoers.vestacp.conf -O /etc/sudoers.d/vestacp wget $CHOST/$VERSION/sudoers.admin.conf -O /etc/sudoers.d/admin chmod 440 /etc/sudoers.d/vestacp chmod 440 /etc/sudoers.d/admin +echo 'Defaults:admin !syslog' >>/etc/sudoers.d/admin # NTP Synchronization echo '#!/bin/sh' > /etc/cron.daily/ntpdate From ae49ba353b1940aad3fb7d5b31d5f4f3a2247d4f Mon Sep 17 00:00:00 2001 From: anton-reutov Date: Sat, 21 Feb 2015 15:10:58 +0300 Subject: [PATCH 08/15] Update vst-install-debian.sh --- install/vst-install-debian.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/vst-install-debian.sh b/install/vst-install-debian.sh index 9ea10160..22a5ad19 100644 --- a/install/vst-install-debian.sh +++ b/install/vst-install-debian.sh @@ -533,6 +533,7 @@ wget $CHOST/$VERSION/sudoers.conf -O /etc/sudoers wget $CHOST/$VERSION/sudoers.admin.conf -O /etc/sudoers.d/admin chmod 440 /etc/sudoers chmod 440 /etc/sudoers.d/admin +echo 'Defaults:admin !syslog' >>/etc/sudoers.d/admin # NTP Synchronization echo '#!/bin/sh' > /etc/cron.daily/ntpdate From 7d054947ffe6ac1066f2343a7b5fc193ec6efec0 Mon Sep 17 00:00:00 2001 From: StudioMaX Date: Sun, 22 Feb 2015 13:40:53 +0600 Subject: [PATCH 09/15] Update v-update-firewall MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В контейнерах OpenVZ нет возможности просмотреть загруженные модули ядра, и вызов lsmod или modprobe nf_conntrack ничего не возвратит или выдаст ошибку, даже если модуль загружен. Как вариант проверяем наличие опции /sbin/sysctl net.netfilter.nf_conntrack_max Это даст понять, загружен nf_conntrack или нет и при наличии добавит правило -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT Проверить доступность nf_conntrack_ftp в контейнере скорее всего нельзя, по крейней мере я не могу придумать как. Поэтому в iptables как и раньше будет добавляться правило, как будто этот модуль недоступен, с указанием диапазона портов. --- bin/v-update-firewall | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/bin/v-update-firewall b/bin/v-update-firewall index a28a8a7e..cd7205b8 100755 --- a/bin/v-update-firewall +++ b/bin/v-update-firewall @@ -12,6 +12,7 @@ # Defining absolute path for iptables and modprobe iptables="/sbin/iptables" modprobe="/sbin/modprobe" +sysctl="/sbin/sysctl" # Includes source /etc/profile.d/vesta.sh @@ -38,11 +39,16 @@ if [ ! -e "$rules" ]; then exit fi +$sysctl net.netfilter.nf_conntrack_max >/dev/null 2>&1 +if [ $? -ne 0 ]; then + conntrack='no' +fi + # Checking conntrack module avaiabilty $modprobe nf_conntrack >/dev/null 2>&1 $modprobe nf_conntrack_ftp >/dev/null 2>&1 if [ $? -ne 0 ]; then - stateful='no' + conntrack_ftp='no' fi # Creating temporary file @@ -75,7 +81,7 @@ for line in $(sort -r -n -k 2 -t \' $rules); do # Checking FTP for contrack module if [ "$TYPE" = "FTP" ] || [ "$PORT" = '21' ]; then - if [ "$stateful" != 'no' ]; then + if [ "$conntrack_ftp" != 'no' ]; then state="-m conntrack --ctstate NEW" else port="-m multiport --dports 20,21,12000:12100" @@ -101,7 +107,7 @@ for p_rule in $(cat $ports); do done # Enabling stateful support -if [ "$stateful" != 'no' ]; then +if [ "$conntrack" != 'no' ]; then str="$iptables -A INPUT -p tcp -m state" str="$str --state ESTABLISHED,RELATED -j ACCEPT" echo "$str" >> $tmp From adace916650c0b4107bd7bc59a808381f77822ce Mon Sep 17 00:00:00 2001 From: Olexandr Loskutov Date: Sun, 22 Feb 2015 22:53:14 +0200 Subject: [PATCH 10/15] Update ua.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Виправлення помилок, вдосконалення перекладу --- web/inc/i18n/ua.php | 190 ++++++++++++++++++++++---------------------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/web/inc/i18n/ua.php b/web/inc/i18n/ua.php index e05c2b15..6254f83a 100644 --- a/web/inc/i18n/ua.php +++ b/web/inc/i18n/ua.php @@ -26,7 +26,7 @@ $LANG['ua'] = array( 'CRON' => 'CRON', 'BACKUP' => 'BACKUP', - 'Add User' => 'Додати акаунт', + 'Add User' => 'Додати користувача', 'Add Domain' => 'Додати домен', 'Add Web Domain' => 'Додати WEB домен', 'Add DNS Domain' => 'Додати DNS домен', @@ -45,10 +45,10 @@ $LANG['ua'] = array( 'Add one more FTP Account' => 'Додати ще один FTP акаунт', 'Search' => 'Пошук', 'Overall Statistics' => 'Загальна статистика', - 'Daily' => 'Щоденні', - 'Weekly' => 'Щотижневі', - 'Monthly' => 'Щомісячні', - 'Yearly' => 'Щорічні', + 'Daily' => 'Щоденний', + 'Weekly' => 'Щотижневий', + 'Monthly' => 'Щомісячний', + 'Yearly' => 'Щорічний', 'Add' => 'Додати', 'Back' => 'Назад', 'Save' => 'Зберегти', @@ -56,21 +56,21 @@ $LANG['ua'] = array( 'toggle all' => 'виділити все', 'apply to selected' => 'застосувати до вибраних', - 'rebuild' => 'перестворити', - 'rebuild web' => 'перестворити WEB', - 'rebuild dns' => 'перестворити DNS', - 'rebuild mail' => 'перестворити MAIL', - 'rebuild db' => 'перестворити DB', - 'rebuild cron' => 'перестворити CRON', + 'rebuild' => 'перебудувати', + 'rebuild web' => 'перебудувати WEB', + 'rebuild dns' => 'перебудувати DNS', + 'rebuild mail' => 'перебудувати MAIL', + 'rebuild db' => 'перебудувати DB', + 'rebuild cron' => 'перебудувати CRON', 'update counters' => 'оновити лічильники', 'suspend' => 'заблокувати', 'unsuspend' => 'розблокувати', 'delete' => 'видалити', - 'show per user' => 'вибрати користувача', + 'show per user' => 'по користувачам', 'login as' => 'увійти як', 'logout' => 'вийти', 'edit' => 'редагувати', - 'open webstats' => 'відкрити звіт веб-аналітики', + 'open webstats' => 'відкрити веб-статистику', 'view logs' => 'переглянути логи', 'list records' => 'показати записи: %s', 'add record' => 'додати запис', @@ -88,14 +88,14 @@ $LANG['ua'] = array( 'update' => 'оновити', 'generate' => 'згенерувати', 'Generate CSR' => 'Згенерувати CSR запит', - 'reread IP' => 'оновити IP', + 'reread IP' => 'перечитати IP', 'enable autoupdate' => 'увімкнути автооновлення', 'disable autoupdate' => 'вимкнути автооновлення', 'turn on notifications' => 'увімкнути сповіщення', 'turn off notifications' => 'вимкнути сповіщення', - 'Adding User' => 'Додавання акаунту', - 'Editing User' => 'Редагування акаунту', + 'Adding User' => 'Додавання користувача', + 'Editing User' => 'Редагування користувача', 'Adding Domain' => 'Додавання домену', 'Editing Domain' => 'Редагування домену', 'Adding DNS Domain' => 'Додавання DNS домену', @@ -114,7 +114,7 @@ $LANG['ua'] = array( 'Editing Package' => 'Редагування пакету', 'Adding IP address' => 'Додавання IP адреси', 'Editing IP Address' => 'Редагування IP адреси', - 'Editing Backup Exclusions' => 'Налаштування вийнятків', + 'Editing Backup Exclusions' => 'Налаштування вийнятків архіву', 'Generating CSR' => 'Генерування CSR запиту', 'Listing' => 'Список', 'Search Results' => 'Результати пошуку', @@ -150,7 +150,7 @@ $LANG['ua'] = array( 'Web' => 'Веб', 'Mail' => 'Пошта', 'Databases' => 'Бази даних', - 'User Directories' => 'Теки Користувача', + 'User Directories' => 'Теки користувача', 'Template' => 'Шаблон', 'Web Template' => 'Шаблон Apache', 'Proxy Template' => 'Шаблон Nginx', @@ -161,7 +161,7 @@ $LANG['ua'] = array( 'per domain' => 'на домен', 'DNS Domains' => 'DNS домени', 'DNS Domains' => 'DNS домени', - 'DNS records' => 'DNS запису', + 'DNS records' => 'DNS записи', 'Name Servers' => 'Сервери імен', 'Mail Domains' => 'Поштові домени', 'Mail Accounts' => 'Поштові акаунти', @@ -173,19 +173,19 @@ $LANG['ua'] = array( 'backup exclusions' => 'вийнятки архіву', 'template' => 'шаблон', 'SSL Support' => 'Підтримка SSL', - 'SSL Home Directory' => 'Тека SSL', + 'SSL Home Directory' => 'Домашня тека SSL', 'Proxy Support' => 'Підтримка Nginx', - 'Proxy Extensions' => 'Опрацювання Nginx', - 'Web Statistics' => 'Статистика сайту', - 'Additional FTP Account' => 'Додатковий FTP', + 'Proxy Extensions' => 'Розширення Nginx', + 'Web Statistics' => 'Веб статистика', + 'Additional FTP Account' => 'Додатковий FTP акаунт', 'SOA' => 'SOA', 'TTL' => 'TTL', 'Expire' => 'Спливає', - 'Records' => 'DNS записи', + 'Records' => 'Записи', 'Catchall email' => 'Пастка пошти', - 'AntiVirus Support' => 'Антивірус', - 'AntiSpam Support' => 'Антиспам', - 'DKIM Support' => 'DKIM', + 'AntiVirus Support' => 'Підтримка антивірусу', + 'AntiSpam Support' => 'Підтримка антиспаму', + 'DKIM Support' => 'Підтримка DKIM', 'Accounts' => 'Акаунти', 'Quota' => 'Квота', 'Autoreply' => 'Автовідповідач', @@ -201,8 +201,8 @@ $LANG['ua'] = array( 'Month' => 'Місяць', 'Day of week' => 'День тижня', 'local' => 'локальний', - 'Run Time' => 'Виконаний за', - 'Backup Size' => 'Розмір', + 'Run Time' => 'Виконано за', + 'Backup Size' => 'Розмір архіву', 'SYS' => 'Системний', 'Domains' => 'Домени', 'Status' => 'Статус', @@ -211,14 +211,14 @@ $LANG['ua'] = array( 'Owner' => 'Власник', 'Users' => 'Користувачі', 'Load Average' => 'Загальне Навантаження', - 'Memory Usage' => 'Використання Пам`яті', - 'HTTPD Usage' => 'Web сервер', - 'NGINX Usage' => 'Nginx', - 'MySQL Usage on localhost' => 'Сервер бази даних MySQL', - 'PostgreSQL Usage on localhost' => 'Сервер бази даних PostgreSQL', - 'Bandwidth Usage eth0' => 'Використання мережі: eth0', - 'FTP Usage' => 'FTP сервер', - 'SSH Usage' => 'SSH сервер', + 'Memory Usage' => 'Використання Пам\'яті', + 'HTTPD Usage' => 'Використання HTTPd', + 'NGINX Usage' => 'Використання Nginx', + 'MySQL Usage on localhost' => 'Локальний сервер бази даних MySQL', + 'PostgreSQL Usage on localhost' => 'Локальний сервер бази даних PostgreSQL', + 'Bandwidth Usage eth0' => 'Використання мережі eth0', + 'FTP Usage' => 'Використання FTP', + 'SSH Usage' => 'Використання SSH', 'reverse proxy' => 'зворотній проксі', 'web server' => 'Web сервер', 'dns server' => 'DNS сервер ', @@ -230,7 +230,7 @@ $LANG['ua'] = array( 'ftp server' => 'FTP сервер', 'job scheduler' => 'планувальник завдань', 'CPU' => 'Процесор', - 'Memory' => 'Пам`ять', + 'Memory' => 'Пам\'ять', 'Uptime' => 'Запущений', 'core package' => 'головний пакет', 'php interpreter' => 'PHP інтерпретатор', @@ -238,14 +238,14 @@ $LANG['ua'] = array( 'Version' => 'Версія', 'Release' => 'Реліз', 'Architecture' => 'Архітектура', - 'Object' => 'Об`єкт', + 'Object' => 'Об\'єкт', 'Owner' => 'Власник', 'Username' => 'Акаунт', 'Password' => 'Пароль', 'Email' => 'Поштова скринька', 'Package' => 'Пакет', 'Language' => 'Мова', - 'First Name' => 'Ім`я', + 'First Name' => 'Ім\'я', 'Last Name' => 'Прізвище', 'Send login credentials to email address' => 'Відправити дані акаунту за адресою', 'Default Template' => 'Шаблон за замовчуванням', @@ -257,12 +257,12 @@ $LANG['ua'] = array( 'Aliases' => 'Аліаси', 'SSL Certificate' => 'SSL сертификат', 'SSL Key' => 'Ключ SSL сертифікату', - 'SSL Certificate Authority / Intermediate' => 'Центр сертифікації SSL / Intermediate', + 'SSL Certificate Authority / Intermediate' => 'Центр сертифікації SSL / Проміжний', 'SSL CSR' => 'SSL CSR запит', 'optional' => 'опційно', 'internal' => 'внутрішній', 'Statistics Authorization' => 'Обмежений доступ до статистики', - 'Statistics Auth' => 'Авторизація Статистики', + 'Statistics Auth' => 'Авторизація перегляду статистики', 'Account' => 'Акаунт', 'Prefix will be automaticaly added to username' => 'Префікс %s буде автоматично додано до назви акаунту', 'Send FTP credentials to email' => 'Відправити дані FTP акаунту за адресою', @@ -272,7 +272,7 @@ $LANG['ua'] = array( 'Record' => 'Запис / Піддомен', 'IP or Value' => 'IP адреса або Значення', 'Priority' => 'Пріоритет', - 'Record Number' => 'Порядковий номер', + 'Record Number' => 'Порядковий номер запису', 'in megabytes' => 'в мегабайтах', 'Message' => 'Повідомлення', 'use local-part' => 'використовуйте тільки імена акаунтів', @@ -286,12 +286,12 @@ $LANG['ua'] = array( 'Netmask' => 'Маска підмережі', 'Interface' => 'Інтерфейс', 'Shared' => 'Загальний', - 'Assigned user' => 'Назначити користувачу', - 'Assigned domain' => 'Домен', + 'Assigned user' => 'Призначений користувач', + 'Assigned domain' => 'Призначений домен', 'NAT IP association' => 'Асоційований NAT IP', - 'shell' => 'SSH доступ', + 'shell' => 'оболонка', 'web domains' => 'Web домени', - 'web aliases' => 'аліаси хостів', + 'web aliases' => 'Web аліаси', 'dns records' => 'DNS записи', 'mail domains' => 'поштові домени', 'mail accounts' => 'поштові акаунти', @@ -299,7 +299,7 @@ $LANG['ua'] = array( 'databases' => 'бази даних', 'cron jobs' => 'cron завдання', 'backups' => 'архіви', - 'quota' => 'квота диску', + 'quota' => 'квота', 'day of week' => 'день тижня', 'cmd' => 'командний рядок', 'users' => 'користувачі', @@ -317,26 +317,26 @@ $LANG['ua'] = array( 'IP address' => 'IP адреса', 'netmask' => 'маска підмережі', 'interface' => 'інтерфейс', - 'assigned user' => 'обраний користувач', + 'assigned user' => 'призначений користувач', 'ns1' => 'сервер імен #1', 'ns2' => 'сервер імен #2', 'user' => 'користувач', 'email' => 'пошта', - 'first name' => 'ім`я', - 'last name' => 'прізвище', + 'first name' => 'Ім\'я', + 'last name' => 'Прізвище', 'account' => 'акаунт', 'ssl certificate' => 'SSL сертификат', 'ssl key' => 'ключ SSL сертифікату', - 'stats user password' => 'пароль доступу до статистики', - 'stats username' => 'ім`я користувача статистики', - 'stats password' => 'пароль користувача статистики', + 'stats user password' => 'пароль користувача статистики', + 'stats username' => 'ім\'я користувача статистики', + 'stats password' => 'пароль статистики', 'ftp user password' => 'пароль доступу до FTP', 'ftp user' => 'користувач FTP', 'Last 70 lines of %s.%s.log' => 'Останні 70 рядків файлу %s.%s.log', 'Download AccessLog' => 'Завантажити AccessLog', 'Download ErrorLog' => 'Завантажити ErrorLog', 'Country' => 'Країна', - '2 letter code' => 'двобуквений код', + '2 letter code' => 'Двобуквений код', 'State / Province' => 'Область', 'City / Locality' => 'Місто / Населений пункт', 'Organization' => 'Організація', @@ -348,52 +348,52 @@ $LANG['ua'] = array( 'ranges are acceptable' => 'дозволені діапазони', 'CIDR format is supported' => 'формат CIDR підтримується', - '1 account' => ' користувачів на сторінці: 1', - '%s accounts' => 'користувачів на сторінці: %s', - '1 domain' => 'доменів на сторінці: 1', - '%s domains' => 'доменів на сторінці: %s', - '1 record' => 'записів на сторінці: 1', - '%s records' => 'записів на сторінці: %s', - '1 mail account' => 'акаунтів на сторінці: 1', - '%s mail accounts' => 'акаунтів на сторінці: %s', - '1 database' => 'баз даних на сторінці: 1', - '%s databases' => 'баз даних на сторінці: %s', - '1 cron job' => 'завдань на сторінці: 1', - '%s cron jobs' => 'завдань на сторінці: %s', - '1 archive' => 'архівів на сторінці: 1', - '%s archives' => 'архівів на сторінці: %s', - '1 package' => 'пакетів на сторінці: 1', - '%s packages' => 'пакетів на сторінці: %s', - '1 IP address' => 'IP адрес на сторінці: 1', - '%s IP addresses' => 'IP адрес на сторінці: %s', - '1 month' => 'місяців на сторінці: 1', - '%s months' => 'місяців на сторінці: %s', - '1 log record' => 'записів на сторінці: 1', - '%s log records' => 'записів на сторінці %s', - '1 object' => 'об`єктів на сторінці: 1', - '%s objects' => 'об`єктів на сторінці: %s', + '1 account' => ' 1 акаунт', + '%s accounts' => '%s акаунтів', + '1 domain' => '1 домен', + '%s domains' => '%s доменів', + '1 record' => '1 запис', + '%s records' => '%s записів', + '1 mail account' => '1 поштовий акаунт', + '%s mail accounts' => '%s поштових акаунтів', + '1 database' => '1 база даних', + '%s databases' => '%s баз даних', + '1 cron job' => '1 завдання', + '%s cron jobs' => '%s завдань', + '1 archive' => '1 архів', + '%s archives' => '%s архівів', + '1 package' => '1 пакет', + '%s packages' => '%s пакет', + '1 IP address' => '1 IP адреса', + '%s IP addresses' => '%s IP адрес', + '1 month' => '1 місяць', + '%s months' => '%s місяців', + '1 log record' => '1 журнальний запис', + '%s log records' => '%s журнальних записів', + '1 object' => '1 об\'єкт', + '%s objects' => '%s об\'єктів', 'no exclusions' => 'немає виключень', - '1 rule' => 'правил на сторінці: 1', - '%s rules' => 'правил на сторінці: %s', + '1 rule' => '1 правило', + '%s rules' => '%s правил', 'There are no currently banned IP' => 'Немає заблокованих IP', 'USER_CREATED_OK' => 'Аккаунт %s успішно створено', - 'WEB_DOMAIN_CREATED_OK' => 'Домен %s успішно створено.', - 'DNS_DOMAIN_CREATED_OK' => 'Домен %s успішно створено.', - 'DNS_RECORD_CREATED_OK' => 'Запис %s.%s успішно створено.', - 'MAIL_DOMAIN_CREATED_OK' => 'Домен %s успішно створено.', - 'MAIL_ACCOUNT_CREATED_OK' => 'Аккаунт %s@%s успішно створено', + 'WEB_DOMAIN_CREATED_OK' => 'WEB домен %s успішно створено.', + 'DNS_DOMAIN_CREATED_OK' => 'DNS домен %s успішно створено.', + 'DNS_RECORD_CREATED_OK' => 'DNS запис %s.%s успішно створено.', + 'MAIL_DOMAIN_CREATED_OK' => 'Поштовий домен %s успішно створено.', + 'MAIL_ACCOUNT_CREATED_OK' => 'Поштову скриньку %s@%s успішно створено', 'DATABASE_CREATED_OK' => 'Базу даних %s успішно створено', - 'CRON_CREATED_OK' => 'Завдання успішно додано', + 'CRON_CREATED_OK' => 'Cron завдання успішно додано', 'IP_CREATED_OK' => '"IP адресу %s успішно створено.', 'PACKAGE_CREATED_OK' => 'Пакет %s успішно створено.', - 'SSL_GENERATED_OK' => 'SSL cертификат успішно створено.', + 'SSL_GENERATED_OK' => 'SSL cертификат успішно згенеровано.', 'RULE_CREATED_OK' => 'Правило успішно створено.', 'Autoupdate has been successfully enabled' => 'Aвтооновлення було успішно увімкнено', 'Autoupdate has been successfully disabled' => 'Aвтооновлення було успішно вимкнено', 'Cronjob email reporting has been successfully enabled' => 'Cronjob звітування було успішно увімкнено', 'Cronjob email reporting has been successfully disabled' => 'Cronjob звітування було успішно вимкнено', - 'Changes has been saved.' => 'Зміни збережені.', + 'Changes has been saved.' => 'Зміни збережено.', 'Confirmation' => 'Підтвердження', 'DELETE_USER_CONFIRMATION' => 'Ви впевнені, що хочете видалити користувача %s?', 'SUSPEND_USER_CONFIRMATION' => 'Ви впевнені, що хочете заблокувати користувача %s?', @@ -434,9 +434,9 @@ $LANG['ua'] = array( 'SERVICE_ACTION_FAILED' => 'Не вдалось "%s" "%s"', 'IP address is in use' => 'IP адреса використовується', 'BACKUP_SCHEDULED' => 'Завдання успішно додано в чергу. Після виконання ви отримаєте повний звіт по пошті.', - 'BACKUP_EXISTS' => 'Резервне копіювання вже виконується, будь-ласка дочекайтесь закінчення.', + 'BACKUP_EXISTS' => 'Резервне копіювання вже виконується, будь-ласка, дочекайтесь закінчення.', 'RESTORE_SCHEDULED' => 'Завдання успішно додано в чергу. Після виконання ви отримаєте повний звіт по пошті.', - 'RESTORE_EXISTS' => 'Завдання вже виконується, будь-ласка дочекайтесь закінчення.', + 'RESTORE_EXISTS' => 'Завдання вже виконується, будь-ласка, дочекайтесь закінчення.', 'WEB_EXCLUSIONS' => "Вкажіть домени по одному на рядок. Для того, щоб виключити всі, використовуйте *. Щоб виключити тільки деякі теки, використовуйте наступний формат: domain.com:public_html/cache:public_html/tmp", 'DNS_EXCLUSIONS' => "Вкажіть домени по одному на рядок. Для того, щоб виключити всі, використовуйте *", @@ -449,20 +449,20 @@ $LANG['ua'] = array( 'MAIL_FROM' => 'Vesta Control Panel ', 'GREETINGS_GORDON_FREEMAN' => "Вітаємо, %s %s,\n", 'GREETINGS' => "Вітаємо,\n", - 'ACCOUNT_READY' => "Ваш аккаунт успішно створений і готовий до використання.\n\nhttps://%s/login/\nІм`я користувача: %s\nПароль: %s\n\n--\nПанель керування Vesta\n", + 'ACCOUNT_READY' => "Ваш аккаунт успішно створено і готовий до використання.\n\nhttps://%s/login/\nІм`я користувача: %s\nПароль: %s\n\n--\nПанель керування Vesta\n", 'FTP login credentials' => 'Дані доступу до FTP', - 'FTP_ACCOUNT_READY' => "FTP аккаунт успішно створений і готовий до використання.\n\nХост: %s\nІм`я користувача: %s_%s\nПароль: %s\n\n--\nПанель керування Vesta\n", + 'FTP_ACCOUNT_READY' => "FTP аккаунт успішно створено і готовий до використання.\n\nХост: %s\nІм`я користувача: %s_%s\nПароль: %s\n\n--\nПанель керування Vesta\n", 'Database Credentials' => 'Дані доступу до БД', 'DATABASE_READY' => "База даних успішно створена.\n\nБаза даних: %s\nКористувач: %s\nПароль: %s\n%s\n\n--\nПанель керування Vesta\n", - 'forgot password' => 'нагадати', + 'forgot password' => 'нагадати пароль', 'Confirm' => 'Підтвердити', 'New Password' => 'Новий пароль', 'Confirm Password' => 'Підтвердження паролю', 'Reset' => 'Скинути', - 'Reset Code' => 'Код відновлення', + 'Reset Code' => 'Код скидання', 'RESET_NOTICE' => '', 'RESET_CODE_SENT' => 'Код для відновлення паролю успішно відправлено на вашу електронну пошту.
', 'MAIL_RESET_SUBJECT' => 'Відновлення паролю %s', From 70490f5124f18a0c4f0fd290100a5b57be1833e2 Mon Sep 17 00:00:00 2001 From: Sergey Abramchuk Date: Tue, 24 Feb 2015 09:56:25 +0300 Subject: [PATCH 11/15] Implement backup functionality via sftp --- bin/v-add-backup-sftp-host | 145 ++++++++++++++++++++++++++++++++ bin/v-backup-user | 153 ++++++++++++++++++++++++++++++++++ bin/v-delete-backup-sftp-host | 46 ++++++++++ 3 files changed, 344 insertions(+) create mode 100755 bin/v-add-backup-sftp-host create mode 100644 bin/v-delete-backup-sftp-host diff --git a/bin/v-add-backup-sftp-host b/bin/v-add-backup-sftp-host new file mode 100755 index 00000000..46065874 --- /dev/null +++ b/bin/v-add-backup-sftp-host @@ -0,0 +1,145 @@ +#!/bin/bash +# info: add backup sftp host +# options: HOST USERNAME [PASSWORD] [PATH] [PORT] +# +# The function adds sftp host for system backups + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +sftp_host=$1 +sftp_user=$2 +sftp_password=${3-******} +sftp_path=${4-backup} +sftp_port=${5-22} + +A3='******' + +# Includes +source $VESTA/func/main.sh +source $VESTA/conf/vesta.conf + +# Replace password with ****** +if [[ $A3 != '******' ]] +then + EVENT="${EVENT/$sftp_password/******}" +fi + +# sftp command function +sftpc() { +expect -f "-" <" { + if {\$count < \$argc} { + set arg [lindex \$argv \$count] + send "\$arg\r" + incr count + } else { + send "exit\r" + set output "Disconnected." + if {[info exists rc] != 1} { + set rc $OK + } + } + exp_continue + } + + timeout { + set output "Connection timeout." + set rc $E_CONNECT + } + } + + if {[info exists output] == 1} { + puts "\$output" + } + + exit \$rc +EOF +} + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +check_expect=$(which expect) +if [[ ! -n $check_expect ]] +then + echo "Error: \"expect\" utility not found" + log_event "$E_NOTEXIST" "$EVENT" + exit $E_NOTEXIST +fi + +check_args '2' "$#" "HOST USERNAME [PASSWORD] [PATH] [PORT]" + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Checking network connection and write permissions +sftmpdir="$sftp_path/vst.bK76A9SUkt" +sftpc "mkdir $sftp_path" > /dev/null 2>&1 +sftpc "mkdir $sftmpdir" "rmdir $sftmpdir" +rc=$? +if [[ "$rc" != 0 ]] +then + case $rc in + $E_CONNECT) echo "Error: can't login to sftp host";; + $E_FTP) echo "Error: can't create temp folder on the sftp host";; + esac + log_event "$rc" "$EVENT" + exit "$rc" +fi + +# Adding sftp backup config file +echo "HOST='$sftp_host' +USERNAME='$sftp_user' +PASSWORD='$sftp_password' +BPATH='$sftp_path' +PORT='$sftp_port' +TIME='$TIME' +DATE='$DATE'" > $VESTA/conf/sftp.backup.conf +chmod 660 $VESTA/conf/sftp.backup.conf + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Update vesta.conf +if [ -z "$(grep LANGUAGE $VESTA/conf/vesta.conf)" ]; then + echo "BACKUP_SYSTEM='ftp'" >> $VESTA/conf/vesta.conf +else + bckp=$(echo "$BACKUP_SYSTEM,sftp" |\ + sed "s/,/\n/g"|\ + sort -r -u |\ + sed "/^$/d"|\ + sed ':a;N;$!ba;s/\n/,/g') + sed -i "s/BACKUP_SYSTEM=.*/BACKUP_SYSTEM='$bckp'/g" $VESTA/conf/vesta.conf +fi + +# Logging +echo "$sftp_host/$sftp_path successfully added as backup destination" +log_event "$OK" "$EVENT" + +exit diff --git a/bin/v-backup-user b/bin/v-backup-user index 6b78b4a4..9ad8650f 100755 --- a/bin/v-backup-user +++ b/bin/v-backup-user @@ -692,6 +692,158 @@ ftp_backup() { fi } +# sftp command function +sftpc() { +expect -f "-" <" { + if {\$count < \$argc} { + set arg [lindex \$argv \$count] + send "\$arg\r" + incr count + } else { + send "exit\r" + set output "Disconnected." + if {[info exists rc] != 1} { + set rc $OK + } + } + exp_continue + } + + timeout { + set output "Connection timeout." + set rc $E_CONNECT + } + } + + if {[info exists output] == 1} { + puts "\$output" + } + + exit \$rc +EOF +} + +sftp_backup() { + #Checking expect installation + check_expect=$(which expect) + if [[ ! -n $check_expect ]] + then + echo "Error: \"expect\" utility not found" + log_event "$E_NOTEXIST" "$EVENT" + exit $E_NOTEXIST + fi + + # Checking config + if [ ! -e "$VESTA/conf/sftp.backup.conf" ]; then + sftp_conf_error="Can't open $VESTA/conf/sftp.backup.conf" + echo "$sftp_conf_error" | $send_mail -s "$subj" $email + echo "Error: $VESTA/conf/sftp.backup.conf doesn't exist" + sed -i "/ $user /d" $VESTA/data/queue/backup.pipe + log_event "$E_NOTEXIST" "$EVENT" + exit $E_NOTEXIST + fi + + # Parse config + source $VESTA/conf/sftp.backup.conf + + # Set current data + DATE=$(date +%F) + TIME=$(date +%T) + + # Set default port + if [ -z "$(grep 'PORT=' $VESTA/conf/sftp.backup.conf)" ]; then + PORT='22' + fi + + # Checking variables + if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then + rm -rf $tmpdir + echo "Can't parse sftp backup configuration" |\ + $send_mail -s "$subj" $email + echo "Error: Parsing error" + sed -i "/ $user /d" $VESTA/data/queue/backup.pipe + log_event "$E_PARSING" "$EVENT" + exit $E_PARSING + fi + + # Debug info + echo -e "$(date "+%F %T") Remote: $HOST/$BPATH/$user.$DATE.tar" + + # Checking network connection and write permissions + echo -e "$(date "+%F %T") Checking network connection and write permissions ..." + sftmpdir="$BPATH/vst.bK76A9SUkt" + sftpc "mkdir $BPATH" > /dev/null 2>&1 + sftpc "mkdir $sftmpdir" "rmdir $sftmpdir" > /dev/null 2>&1 + rc=$? + if [[ "$rc" != 0 ]] + then + rm -rf $tmpdir + case $rc in + $E_CONNECT) echo "Error: can't login to sftp host" | $send_mail -s "$subj" $email;; + $E_FTP) echo "Error: can't create temp folder on the sftp host" | $send_mail -s "$subj" $email;; + esac + sed -i "/ $user /d" $VESTA/data/queue/backup.pipe + log_event "$rc" "$EVENT" + exit "$rc" + fi + echo -e "$(date "+%F %T") Connection established" + + # Checking retention + echo -e "$(date "+%F %T") Checking retention ..." + backup_list=$(sftpc "cd $BPATH" "ls -l" |awk '{print $9}' |grep "^$user\.") + backups_count=$(echo "$backup_list" | wc -l) + if [ "$backups_count" -ge "$BACKUPS" ]; then + backups_rm_number=$((backups_count - BACKUPS + 1)) + for backup in $(echo "$backup_list" | head -n $backups_rm_number); do + backup_date=$(echo $backup | sed -e "s/$user.//" -e "s/.tar.*$//") + if [ -z $deprecated ]; then deprecated="$backup_date"; else deprecated="$deprecated $backup_date"; fi + echo -e "$(date "+%F %T") Roated sftp backup: $backup_date" + msg="$msg\n$(date "+%F %T") Roated sftp backup: $backup_date" + sftpc "cd $BPATH" "rm $backup" > /dev/null 2>&1 + done + fi + + # Uploading backup archive + echo -e "$(date "+%F %T") Uploading $user.$DATE.tar ..." + if [ "$localbackup" = 'yes' ]; then + cd $BACKUP + sftpc "cd $BPATH" "put $user.$DATE.tar" > /dev/null 2>&1 + else + cd $tmpdir + tar -cf $BACKUP/$user.$DATE.tar . + cd $BACKUP/ + sftpc "cd $BPATH" "put $user.$DATE.tar" > /dev/null 2>&1 + rm -f $user.$DATE.tar + fi + echo -e "$(date "+%F %T") Upload complete" +} + echo "-- SUMMARY --" msg="$msg\n-- SUMMARY --" @@ -700,6 +852,7 @@ for backup_type in $(echo -e "${BACKUP_SYSTEM//,/\\n}"); do case $backup_type in local) local_backup ;; ftp) ftp_backup ;; + sftp) sftp_backup ;; esac done diff --git a/bin/v-delete-backup-sftp-host b/bin/v-delete-backup-sftp-host new file mode 100644 index 00000000..ec4a99b4 --- /dev/null +++ b/bin/v-delete-backup-sftp-host @@ -0,0 +1,46 @@ +#!/bin/bash +# info: delete backup sftp server +# options: NONE +# +# The function deletes sftp backup host + + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Includes +source $VESTA/func/main.sh +source $VESTA/conf/vesta.conf + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Delete configuration file +rm -f $VESTA/conf/sftp.backup.conf + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Update vesta.conf +bckp=$(echo "$BACKUP_SYSTEM" |\ + sed "s/,/\n/g"|\ + sed "s/sftp//" |\ + sed "/^$/d"|\ + sed ':a;N;$!ba;s/\n/,/g') +sed -i "s/BACKUP_SYSTEM=.*/BACKUP_SYSTEM='$bckp'/g" $VESTA/conf/vesta.conf + +# Logging +echo "sftp host successfulle removed from configuration" +log_event "$OK" "$EVENT" + +exit From aae7f839a34175dc8f9f113a0967a3bc2d288e09 Mon Sep 17 00:00:00 2001 From: Malishev Dmitry Date: Thu, 26 Feb 2015 12:03:39 -0500 Subject: [PATCH 12/15] Unlimited values ui changed; Toggle password view; Ctrl + clicks navigation added --- web/css/main.css | 4 +-- web/js/events.js | 2 +- web/js/jquery.finder.js | 5 +-- web/js/pages/add.package.js | 3 +- web/js/pages/edit.package.js | 1 - web/templates/admin/add_package.html | 20 ++++++------ web/templates/admin/edit_package.html | 20 ++++++------ web/templates/footer.html | 45 +++++++++++++++++---------- 8 files changed, 55 insertions(+), 45 deletions(-) diff --git a/web/css/main.css b/web/css/main.css index fafce272..0ba47267 100644 --- a/web/css/main.css +++ b/web/css/main.css @@ -1291,11 +1291,11 @@ label:active { .toggle-psw-visibility-icon { cursor: pointer; - opacity: 0.4; + opacity: 1; } .show-passwords-enabled-action { - opacity: 1; + opacity: 0.4; } diff --git a/web/js/events.js b/web/js/events.js index fd2f1bc7..4d84f6dd 100644 --- a/web/js/events.js +++ b/web/js/events.js @@ -142,7 +142,7 @@ VE.helpers.initAdditionalPasswordFieldElements = function(ref) { $(ref).prop('autocomplete', 'off'); var enabled_html = enabled ? '' : 'show-passwords-enabled-action'; - var html = ''; + var html = ''; $(ref).after(html); } diff --git a/web/js/jquery.finder.js b/web/js/jquery.finder.js index 7eed0b18..4ae3264a 100644 --- a/web/js/jquery.finder.js +++ b/web/js/jquery.finder.js @@ -172,7 +172,7 @@ var c = f.get.clicks(p,o,$(this)); var ref = $(e.target); - if (ref.parents('.data-row').hasClass('selected') && $('.selected').length == 1) {console.warn(1); + if (ref.parents('.data-row').hasClass('selected') && $('.selected').length == 1) { ref.parents('.data-row').removeClass('selected'); ref.parents('.data-row').find('.ch-toggle').attr('checked', false); return; @@ -203,7 +203,7 @@ p.on('mouseout', function(){ d.off("keydown", turnOff); }); - + function turnOff(e) { if (f.detect.ctrl(e)) { if (e.keyCode == 65) { @@ -562,6 +562,7 @@ hAll: function(p,o) { f.h.on(p.find(o.children), o); f.t.update(p, o); + o.toggleAllHook && o.toggleAllHook(); }, unHExist: function(bool,el,o) { if(bool) { diff --git a/web/js/pages/add.package.js b/web/js/pages/add.package.js index d6fc5805..2d71a6cc 100644 --- a/web/js/pages/add.package.js +++ b/web/js/pages/add.package.js @@ -41,7 +41,6 @@ App.Listeners.PACKAGE.init = function() { if ($(ref).val().trim() == App.Constants.UNLIM_VALUE || $(ref).val().trim() == App.Constants.UNLIM_TRANSLATED_VALUE) { $(ref).val('0'); App.Actions.PACKAGE.enable_unlimited(ref, elm); - //$(elm).attr('checked', true); } else { App.Actions.PACKAGE.disable_unlimited(ref, elm); @@ -54,7 +53,7 @@ App.Listeners.PACKAGE.init = function() { // Trigger listeners App.Listeners.PACKAGE.init(); App.Listeners.PACKAGE.checkbox_unlimited_feature(); -$('form[name="v_edit_package"]').bind('submit', function(evt) { +$('form[name="v_add_package"]').bind('submit', function(evt) { $('input:disabled').each(function(i, elm) { $(elm).attr('disabled', false); }); diff --git a/web/js/pages/edit.package.js b/web/js/pages/edit.package.js index d6fc5805..63178e86 100644 --- a/web/js/pages/edit.package.js +++ b/web/js/pages/edit.package.js @@ -41,7 +41,6 @@ App.Listeners.PACKAGE.init = function() { if ($(ref).val().trim() == App.Constants.UNLIM_VALUE || $(ref).val().trim() == App.Constants.UNLIM_TRANSLATED_VALUE) { $(ref).val('0'); App.Actions.PACKAGE.enable_unlimited(ref, elm); - //$(elm).attr('checked', true); } else { App.Actions.PACKAGE.disable_unlimited(ref, elm); diff --git a/web/templates/admin/add_package.html b/web/templates/admin/add_package.html index 9b8e12a4..6815f4ee 100644 --- a/web/templates/admin/add_package.html +++ b/web/templates/admin/add_package.html @@ -146,7 +146,7 @@ + @@ -157,7 +157,7 @@ + @@ -168,7 +168,7 @@ + @@ -179,7 +179,7 @@ + @@ -190,7 +190,7 @@ + @@ -201,7 +201,7 @@ + @@ -212,7 +212,7 @@ + @@ -223,7 +223,7 @@ + @@ -244,7 +244,7 @@ + @@ -255,7 +255,7 @@ + diff --git a/web/templates/admin/edit_package.html b/web/templates/admin/edit_package.html index 23de6585..91a24dcd 100644 --- a/web/templates/admin/edit_package.html +++ b/web/templates/admin/edit_package.html @@ -152,7 +152,7 @@ + @@ -163,7 +163,7 @@ + @@ -174,7 +174,7 @@ + @@ -185,7 +185,7 @@ + @@ -196,7 +196,7 @@ + @@ -207,7 +207,7 @@ + @@ -218,7 +218,7 @@ + @@ -229,7 +229,7 @@ + @@ -250,7 +250,7 @@ + @@ -261,7 +261,7 @@ + diff --git a/web/templates/footer.html b/web/templates/footer.html index e8e9cd9d..cb4d14f9 100644 --- a/web/templates/footer.html +++ b/web/templates/footer.html @@ -5,28 +5,39 @@ From 59467f6385afd081132374d267f7f463abd5e5fe Mon Sep 17 00:00:00 2001 From: Malishev Dmitry Date: Thu, 26 Feb 2015 12:14:12 -0500 Subject: [PATCH 13/15] Unlimited and toggle_password icon images added --- web/images/toggle_password.png | Bin 0 -> 311 bytes web/images/unlim.png | Bin 0 -> 225 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 web/images/toggle_password.png create mode 100644 web/images/unlim.png diff --git a/web/images/toggle_password.png b/web/images/toggle_password.png new file mode 100644 index 0000000000000000000000000000000000000000..090b0427f699d9b74da3a46b4ad9497530ac1736 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ za0`PlBg3pY5n5k3>LX8;Cjm+w3O{T-CalMI7b^7Xm?1=cV*arhd=MJ{##dXmA@)z4*}Q$iB} D2p4!T literal 0 HcmV?d00001 diff --git a/web/images/unlim.png b/web/images/unlim.png new file mode 100644 index 0000000000000000000000000000000000000000..924cca16f48804497a7774f1adc242e0a8db4a76 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^d_XL~!2%?E=C*AFQcOwS?k)`f+xyS#2l8flx;TbN zNFF_Cm~|+Cf#Cu>C&w-ex0sTR>;>9 Date: Tue, 3 Mar 2015 18:47:10 +0500 Subject: [PATCH 14/15] Update v-backup-user Fix delete deprecated backup string in user's backup.conf if only ftp backup used. --- bin/v-backup-user | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/v-backup-user b/bin/v-backup-user index 9ad8650f..a44ea22d 100755 --- a/bin/v-backup-user +++ b/bin/v-backup-user @@ -672,7 +672,7 @@ ftp_backup() { backups_rm_number=$((backups_count - BACKUPS + 1)) for backup in $(echo "$backup_list" | head -n $backups_rm_number); do backup_date=$(echo $backup | sed -e "s/$user.//" -e "s/.tar$//") - deprecated="$deprecated $backup" + deprecated="$deprecated $backup_date" echo -e "$(date "+%F %T") Roated ftp backup: $backup_date" msg="$msg\n$(date "+%F %T") Roated ftp backup: $backup_date" ftpc "cd $BPATH" "delete $backup" From 850d215c1f33bb90378b97a63929929db520ff15 Mon Sep 17 00:00:00 2001 From: sfer23 Date: Tue, 3 Mar 2015 22:06:56 +0200 Subject: [PATCH 15/15] Fix bug with redurant redirect If I use nginx to assign 127.0.0.1:8083 with one of named VirtualHost - I have error when login by user (Browser redirect me to self domain name with 8083 port, which is already closed). Also this fix doesn't break anything on default use. --- web/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/index.php b/web/index.php index 35c889c9..b0d34a3f 100644 --- a/web/index.php +++ b/web/index.php @@ -1,7 +1,7 @@