support for NATed networks

This commit is contained in:
Serghey Rodin 2013-02-05 22:58:40 +02:00
commit 138ef6c7b0
37 changed files with 271 additions and 94 deletions

View file

@ -1,6 +1,6 @@
#!/bin/bash
# info: add system ip address
# options: IP MASK [INTERFACE] [USER] [IP_STATUS] [IP_NAME]
# options: IP MASK [INTERFACE] [USER] [IP_STATUS] [IP_NAME] [NAT_IP]
#
# The function adds ip address into a system. It also creates rc scripts. You
# can specify ip name which will be used as root domain for temporary aliases.
@ -21,6 +21,7 @@ interface="${3-eth0}"
user="${4-admin}"
ip_status="${5-shared}" # can be dedicated as well
ip_name=$6
nat_ip=$7
# Includes
source $VESTA/conf/vesta.conf
@ -33,7 +34,7 @@ source $VESTA/func/domain.sh
# Verifications #
#----------------------------------------------------------#
check_args '2' "$#" 'IP MASK [INTERFACE] [USER] [IP_STATUS] [IP_NAME]'
check_args '2' "$#" 'IP MASK [INTERFACE] [USER] [IP_STATUS] [IP_NAME] [NAT_IP]'
validate_format 'ip' 'mask' 'interface' 'user' 'ip_status'
is_ip_free
is_object_valid 'user' 'USER' "$user"
@ -41,6 +42,9 @@ is_object_unsuspended 'user' 'USER' "$user"
if [ ! -z "$ip_name" ] ; then
validate_format 'ip_name'
fi
if [ ! -z "$nat_ip" ] ; then
validate_format 'nat_ip'
fi
#----------------------------------------------------------#

View file

@ -57,8 +57,11 @@ fi
# Action #
#----------------------------------------------------------#
# Defining domain aliases
# Define real ip in case of NAT
IP=$ip
ip=$(get_real_ip $ip)
# Defining domain aliases
ip_name=$(get_ip_name)
ip_name_idn=$(idn -t --quiet -a "$ip_name")
domain_alias="www.$domain"
@ -81,15 +84,12 @@ email="$user@$domain"
docroot="$HOMEDIR/$user/web/$domain/public_html"
conf="$HOMEDIR/$user/conf/web/httpd.conf"
tpl_file="$WEBTPL/apache_$template.tpl"
elog=''
cgi=''
cgi_option='+ExecCGI'
# Adding domain to the httpd.conf
add_web_config
# Building directory tree
mkdir $HOMEDIR/$user/web/$domain \
mkdir -p $HOMEDIR/$user/web/$domain \
$HOMEDIR/$user/web/$domain/public_html \
$HOMEDIR/$user/web/$domain/public_shtml \
$HOMEDIR/$user/web/$domain/document_errors \
@ -104,7 +104,7 @@ touch /var/log/httpd/domains/$domain.bytes \
/var/log/httpd/domains/$domain.error.log
# Adding symlink for logs
ln -s /var/log/httpd/domains/$domain.*log $HOMEDIR/$user/web/$domain/logs/
ln -f -s /var/log/httpd/domains/$domain.*log $HOMEDIR/$user/web/$domain/logs/
# Adding domain skeleton
if [ -e "$WEBTPL/skel/public_html/" ]; then
@ -168,9 +168,9 @@ increase_user_value "$user" '$U_WEB_DOMAINS'
increase_user_value "$user" '$U_WEB_ALIASES'
# Defining domain variables
str="DOMAIN='$domain' IP='$ip' IP6='' ALIAS='$aliases' TPL='$template'"
str="$str CGI='yes' ELOG='yes' SSL='no' SSL_HOME='same' FTP_USER=''"
str="$str FTP_MD5='' NGINX='' NGINX_EXT='' STATS='' STATS_USER=''"
str="DOMAIN='$domain' IP='$IP' IP6='' ALIAS='$aliases' TPL='$template'"
str="$str SSL='no' SSL_HOME='same' FTP_USER='' FTP_MD5=''"
str="$str NGINX='' NGINX_EXT='' STATS='' STATS_USER=''"
str="$str STATS_CRYPT='' U_DISK='0' U_BANDWIDTH='0' SUSPENDED='no'"
str="$str TIME='$TIME' DATE='$DATE'"

View file

@ -50,6 +50,7 @@ is_package_full 'WEB_ALIASES'
get_domain_values 'web'
tpl_file="$WEBTPL/apache_$TPL.tpl"
conf="$HOMEDIR/$user/conf/web/httpd.conf"
ip=$(get_real_ip $IP)
# Parsing domain aliases
if [ -z "$ALIAS" ]; then

View file

@ -24,6 +24,7 @@ restart="$5"
source $VESTA/conf/vesta.conf
source $VESTA/func/main.sh
source $VESTA/func/domain.sh
source $VESTA/func/ip.sh
#----------------------------------------------------------#
@ -57,6 +58,7 @@ NGINX="$template"
NGINX_EXT="$extentions"
tpl_file="$WEBTPL/nginx_$NGINX.tpl"
conf="$HOMEDIR/$user/conf/web/nginx.conf"
ip=$(get_real_ip $IP)
# Preparing domain values for the template substitution
upd_web_domain_values

View file

@ -65,6 +65,7 @@ get_domain_values 'web'
conf="$HOMEDIR/$user/conf/web/shttpd.conf"
tpl_file="$WEBTPL/apache_$TPL.stpl"
SSL_HOME="$ssl_home"
ip=$(get_real_ip $IP)
# Preparing domain values for the template substitution
upd_web_domain_values

View file

@ -24,7 +24,10 @@ source $VESTA/func/ip.sh
#----------------------------------------------------------#
check_args '2' "$#" 'IP IP_NAME'
validate_format 'ip' 'ip_name'
validate_format 'ip'
if [ ! -z "$ip_name" ]; then
validate_format 'ip_name'
fi
is_ip_valid

54
bin/v-change-sys-ip-nat Executable file
View file

@ -0,0 +1,54 @@
#!/bin/bash
# info: change ip nat address
# options: IP NAT_IP
#
# The function for changing nat ip associated with ip.
#----------------------------------------------------------#
# Variable&Function #
#----------------------------------------------------------#
# Argument defenition
ip=$1
nat_ip=$2
# Includes
source $VESTA/conf/vesta.conf
source $VESTA/func/main.sh
source $VESTA/func/ip.sh
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
check_args '2' "$#" 'IP NAT_IP'
validate_format 'ip'
if [ ! -z "$nat_ip" ]; then
validate_format 'nat_ip'
fi
is_ip_valid
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
# Changing nat ip
if [ -z "$(grep NAT= $VESTA/data/ips/$ip)" ]; then
sed -i "s/^TIME/NAT='$nat_ip'\nTIME/g" $VESTA/data/ips/$ip
else
update_ip_value '$NAT' "$nat_ip"
fi
#----------------------------------------------------------#
# Vesta #
#----------------------------------------------------------#
# Logging
log_history "changed associated nat address on $ip to $nat_ip" '' 'admin'
log_event "$OK" "$EVENT"
exit

View file

@ -45,9 +45,10 @@ is_ip_avalable
# Define variable for replace
get_domain_values 'web'
ip=$(get_real_ip $ip)
tpl_file="$WEBTPL/apache_$TPL.tpl"
conf="$HOMEDIR/$user/conf/web/httpd.conf"
old=$IP
old=$(get_real_ip $IP)
new=$ip
replace_web_config
@ -82,7 +83,7 @@ increase_ip_value "$new"
decrease_ip_value "$old"
# Update config
update_object_value 'web' 'DOMAIN' "$domain" '$IP' "$ip"
update_object_value 'web' 'DOMAIN' "$domain" '$IP' "$3"
# Restart web server
if [ "$restart" != 'no' ]; then
@ -90,7 +91,7 @@ if [ "$restart" != 'no' ]; then
fi
# Logging
log_history "changed web domain $domain ip to $ip"
log_history "changed web domain $domain ip to $3"
log_event "$OK" "$EVENT"
exit

View file

@ -50,6 +50,7 @@ is_nginx_template_valid
get_domain_values 'web'
tpl_file="$WEBTPL/nginx_$NGINX.tpl"
conf="$HOMEDIR/$user/conf/web/nginx.conf"
ip=$(get_real_ip $IP)
# Delete old vhost
del_web_config

View file

@ -43,6 +43,7 @@ is_apache_template_valid
# Parsing domain values
get_domain_values 'web'
ip=$(get_real_ip $IP)
# Deleting domain
tpl_file="$WEBTPL/apache_$TPL.tpl"
@ -61,13 +62,6 @@ fi
upd_web_domain_values
tpl_file="$WEBTPL/apache_$template.tpl"
# Checking error log
if [ "$ELOG" = 'no' ]; then
elog='#'
else
elog=''
fi
# Adding domain to the httpd.conf
add_web_config

View file

@ -46,6 +46,7 @@ is_object_unsuspended 'web' 'DOMAIN' "$domain"
get_domain_values 'web'
tpl_file="$WEBTPL/apache_$TPL.tpl"
conf="$HOMEDIR/$user/conf/web/httpd.conf"
ip=$(get_real_ip $IP)
# Deleting domain
del_web_config
@ -146,7 +147,7 @@ if [ -z "$last_nginx" ]; then
fi
# Decrease counters
decrease_ip_value "$IP"
decrease_ip_value "$ip"
decrease_user_value "$user" '$U_WEB_DOMAINS'
decrease_user_value "$user" '$U_WEB_ALIASES' "$aliases"
if [ "$SSL" = 'yes' ]; then

View file

@ -36,6 +36,7 @@ is_object_unsuspended 'user' 'USER' "$user"
is_object_valid 'web' 'DOMAIN' "$domain"
is_object_unsuspended 'web' 'DOMAIN' "$domain"
get_domain_values 'web'
ip=$(get_real_ip $IP)
if [ -z "$(echo $ALIAS | tr ',' '\n' | grep ^$dom_alias$)" ]; then
echo "Error: alias $dom_alias not exist"
log_event "$E_NOTEXIST" "$EVENT"

View file

@ -74,7 +74,7 @@ conf=$VESTA/data/ips/$IP
# Defining fileds to select
fields='$IP $OWNER $STATUS $NAME $U_SYS_USERS $U_WEB_DOMAINS $INTERFACE
$NETMASK $TIME $DATE'
$NETMASK $NAT $TIME $DATE'
# Listing ip
case $format in

View file

@ -61,9 +61,15 @@ shell_list_ips() {
fi
for IP in $ip_list; do
ip_data=$(cat $VESTA/data/ips/$IP)
eval $ip_data
eval echo "$fields"
source $VESTA/data/ips/$IP
for field in $fields; do
eval value=$field
if [ -z "$value" ]; then
value='NULL'
fi
echo -n "$value "
done
echo
done
}
@ -75,13 +81,13 @@ shell_list_ips() {
# Defining fileds to select
conf=$VESTA/data/ips/*
fields="\$IP \$OWNER \$STATUS \$NAME \$U_SYS_USERS \$U_WEB_DOMAINS"
fields="$fields \$INTERFACE \$NETMASK \$TIME \$DATE"
fields="$fields \$INTERFACE \$NETMASK \$NAT \$TIME \$DATE"
# Listing ip addresses
case $format in
json) json_list_ips ;;
plain) nohead=1; shell_list_ips ;;
shell) fields='$IP $NETMASK $OWNER $STATUS $U_WEB_DOMAINS';
shell) fields='$IP $NETMASK $NAT $OWNER $U_WEB_DOMAINS';
shell_list_ips | column -t ;;
*) check_args '1' '0' '[FORMAT]'
esac

View file

@ -79,10 +79,24 @@ shell_list_user_ips() {
for IP in $(ls $VESTA/data/ips/); do
source $VESTA/data/ips/$IP
if [ "$OWNER" = "$user" ]; then
eval echo "$fields"
for field in $fields; do
eval value=$field
if [ -z "$value" ]; then
value='NULL'
fi
echo -n "$value "
done
echo
else
if [ "$OWNER" = 'admin' ] && [ "$STATUS" = 'shared' ]; then
eval echo "$fields"
for field in $fields; do
eval value=$field
if [ -z "$value" ]; then
value='NULL'
fi
echo -n "$value "
done
echo
fi
fi
done
@ -103,10 +117,10 @@ is_object_valid 'user' 'USER' "$user"
#----------------------------------------------------------#
# Defining fileds to select
fields='$IP $OWNER $STATUS $NAME'
fields='$IP $OWNER $STATUS $NAME $NAT'
# Listing ips
case $format in
case $format in
json) json_list_user_ips ;;
plain) nohead=1; shell_list_user_ips ;;
shell) shell_list_user_ips | column -t ;;

View file

@ -75,8 +75,8 @@ is_object_valid 'web' 'DOMAIN' "$domain"
conf=$USER_DATA/web.conf
# Defining fileds to select
fields='$DOMAIN $IP $IP6 $U_DISK $U_BANDWIDTH $TPL $ALIAS $CGI $ELOG $STATS
$STATS_USER $SSL $SSL_HOME $FTP_USER $NGINX $NGINX_EXT $SUSPENDED $TIME $DATE'
fields='$DOMAIN $IP $IP6 $U_DISK $U_BANDWIDTH $TPL $ALIAS $STATS $STATS_USER
$SSL $SSL_HOME $FTP_USER $NGINX $NGINX_EXT $SUSPENDED $TIME $DATE'
# Listing domains
case $format in

View file

@ -34,8 +34,8 @@ is_object_valid 'user' 'USER' "$user"
conf=$USER_DATA/web.conf
# Defining fileds to select
fields="\$DOMAIN \$IP \$IP6 \$U_DISK \$U_BANDWIDTH \$TPL \$ALIAS \$CGI"
fields="$fields \$ELOG \$STATS \$STATS_USER \$SSL \$SSL_HOME \$FTP_USER"
fields="\$DOMAIN \$IP \$IP6 \$U_DISK \$U_BANDWIDTH \$TPL \$ALIAS"
fields="$fields \$STATS \$STATS_USER \$SSL \$SSL_HOME \$FTP_USER"
fields="$fields \$NGINX \$NGINX_EXT \$SUSPENDED \$TIME \$DATE"
# Listing domains

View file

@ -60,14 +60,12 @@ for domain in $(shell_list) ; do
$HOMEDIR/$user/web/$domain/private \
$HOMEDIR/$user/web/$domain/stats \
$HOMEDIR/$user/web/$domain/logs
if [ ! -e "$HOMEDIR/$user/web/$domain/logs/$domain.log" ]; then
ln -s /var/log/httpd/domains/$domain.error.log \
$HOMEDIR/$user/web/$domain/logs/$domain.log
fi
if [ ! -e "$HOMEDIR/$user/web/$domain/logs/$domain.error.log" ]; then
ln -s /var/log/httpd/domains/$domain.error.log \
$HOMEDIR/$user/web/$domain/logs/$domain.error.log
fi
ln -f -s /var/log/httpd/domains/$domain.log \
$HOMEDIR/$user/web/$domain/logs/$domain.log
ln -f -s /var/log/httpd/domains/$domain.error.log \
$HOMEDIR/$user/web/$domain/logs/$domain.error.log
if [ -e "$WEBTPL/skel/document_errors/" ]; then
cp -r $WEBTPL/skel/document_errors/ $HOMEDIR/$user/web/$domain/
fi
@ -98,6 +96,7 @@ for domain in $(shell_list) ; do
# Parsing domain values
domain_idn=$(idn -t --quiet -a "$domain")
get_domain_values 'web'
ip=$(get_real_ip $IP)
# Preparing domain values for the template substitution
upd_web_domain_values
@ -209,7 +208,7 @@ for domain in $(shell_list) ; do
chown root:nginx $conf
chmod 640 $conf
fi
ngix_change='yes'
ngix_change='yes'
fi
if [ "$SUSPENDED" = 'yes' ]; then
suspended_web=$((suspended_web + 1))

View file

@ -45,6 +45,7 @@ get_domain_values 'web'
tpl_file="$WEBTPL/apache_$TPL.tpl"
conf="$HOMEDIR/$user/conf/web/httpd.conf"
SUSPENDED='yes'
ip=$(get_real_ip $IP)
# Preparing domain values for the template substitution
upd_web_domain_values

View file

@ -42,6 +42,7 @@ get_domain_values 'web'
tpl_file="$WEBTPL/apache_$TPL.tpl"
conf="$HOMEDIR/$user/conf/web/httpd.conf"
SUSPENDED='no'
ip=$(get_real_ip $IP)
# Preparing domain values for the template substitution
upd_web_domain_values

View file

@ -256,9 +256,9 @@ add_web_config() {
-e "s/%ssl_ca_str%/${ssl_ca_str////\/}/g" \
-e "s/%ssl_ca%/${ssl_ca////\/}/g" \
-e "s/%nginx_extentions%/${NGINX_EXT//,/|}/g" \
-e "s/%elog%/$elog/g" \
-e "s/%cgi%/$cgi/g" \
-e "s/%cgi_option%/$cgi_option/g" \
-e "s/%elog%//g" \
-e "s/%cgi%//g" \
-e "s/%cgi_option%/+ExecCGI/g" \
>> $conf
}
@ -464,7 +464,6 @@ namehost_ip_disable() {
# Update web domain values
upd_web_domain_values() {
ip=$IP
group="$user"
email="$user@$domain"
docroot="$HOMEDIR/$user/web/$domain/public_html"

View file

@ -1,8 +1,7 @@
# Validationg ip address
is_ip_valid() {
#check_ifc=$(/sbin/ifconfig |grep "inet addr:$ip")
#if [ ! -e "$VESTA/data/ips/$ip" ] || [ -z "$check_ifc" ]; then
if [ ! -e "$VESTA/data/ips/$ip" ] ; then
check_nat=$(grep "^NAT='$ip'" $VESTA/data/ips/* 2>/dev/null)
if [ ! -e "$VESTA/data/ips/$ip" ] && [ -z "$check_nat" ] ; then
echo "Error: IP $ip not exist"
log_event "$E_NOTEXIST" "$EVENT"
exit $E_NOTEXIST
@ -11,7 +10,13 @@ is_ip_valid() {
# Check if ip availabile for user
is_ip_avalable() {
ip_data=$(cat $VESTA/data/ips/$ip)
if [ -e "$VESTA/data/ips/$ip" ]; then
ip_data=$(cat $VESTA/data/ips/$ip)
else
nated_ip=$(grep "^NAT='$ip'" $VESTA/data/ips/*)
nated_ip=$(echo "$nated_ip" | cut -f 1 -d : | cut -f 7 -d /)
ip_data=$(cat $VESTA/data/ips/$nated_ip)
fi
owner=$(echo "$ip_data"|grep OWNER= | cut -f 2 -d \')
status=$(echo "$ip_data"|grep STATUS= | cut -f 2 -d \')
shared=no
@ -90,7 +95,7 @@ update_ip_value() {
# Get ip name
get_ip_name() {
grep "NAME=" $VESTA/data/ips/$ip |cut -f 2 -d \'
grep "NAME=" $VESTA/data/ips/$ip | cut -f 2 -d \'
}
# Increase ip value
@ -192,6 +197,7 @@ create_vesta_ip() {
ip_data="$ip_data\nU_WEB_DOMAINS='0'"
ip_data="$ip_data\nINTERFACE='$interface'"
ip_data="$ip_data\nNETMASK='$mask'"
ip_data="$ip_data\nNAT='$nat_ip'"
ip_data="$ip_data\nTIME='$TIME'"
ip_data="$ip_data\nDATE='$DATE'"
echo -e "$ip_data" >$VESTA/data/ips/$ip
@ -205,3 +211,12 @@ create_ip_startup() {
ip_data="$ip_data\nNETMASK=$mask"
echo -e "$ip_data" > $iconf-$iface
}
get_real_ip() {
if [ -e "$VESTA/data/ips/$1" ]; then
echo $1
else
nated_ip=$(grep "^NAT='$1'" $VESTA/data/ips/*)
echo "$nated_ip" | cut -f 1 -d : | cut -f 7 -d /
fi
}

View file

@ -752,6 +752,7 @@ validate_format(){
max_db) validate_format_int "$arg" ;;
min) validate_format_mhdmw "$arg" $arg_name ;;
month) validate_format_mhdmw "$arg" $arg_name ;;
nat_ip) validate_format_ip "$arg" ;;
ns1) validate_format_domain "$arg" ;;
ns2) validate_format_domain "$arg" ;;
ns3) validate_format_domain "$arg" ;;

View file

@ -25,6 +25,7 @@ if ($_SESSION['user'] == 'admin') {
$v_ip = escapeshellarg($_POST['v_ip']);
$v_netmask = escapeshellarg($_POST['v_netmask']);
$v_name = escapeshellarg($_POST['v_name']);
$v_nat = escapeshellarg($_POST['v_nat']);
$v_interface = $_POST['v_interface'];
$v_shared = $_POST['v_shared'];
@ -51,7 +52,7 @@ if ($_SESSION['user'] == 'admin') {
// Add IP
$v_interface = escapeshellarg($_POST['v_interface']);
$v_owner = $_POST['v_owner'];
exec (VESTA_CMD."v-add-sys-ip ".$v_ip." ".$v_netmask." ".$v_interface." ".$v_owner." '".$ip_status."' ".$v_name, $output, $return_var);
exec (VESTA_CMD."v-add-sys-ip ".$v_ip." ".$v_netmask." ".$v_interface." ".$v_owner." '".$ip_status."' ".$v_name." ".$v_nat, $output, $return_var);
$v_owner = $_POST['v_owner'];
$v_interface = $_POST['v_interface'];
if ($return_var != 0) {
@ -65,6 +66,7 @@ if ($_SESSION['user'] == 'admin') {
unset($v_ip);
unset($v_netmask);
unset($v_name);
unset($v_nat);
unset($output);
}
}

View file

@ -13,7 +13,8 @@ if ($_SESSION['user'] == 'admin') {
if ($return_var != 0) {
$error = implode('<br>', $output);
if (empty($error)) $error = _('Error: vesta did not return any output.');
$_SESSION['error_msg'] = $error;
if ($return_var == 4) $error = _('IP address is in use');
$_SESSION['error_msg'] = $error;
}
unset($output);

View file

@ -36,6 +36,7 @@ if ($_SESSION['user'] == 'admin') {
$v_netmask = $data[$v_ip]['NETMASK'];
$v_interace = $data[$v_ip]['INTERFACE'];
$v_name = $data[$v_ip]['NAME'];
$v_nat = $data[$v_ip]['NAT'];
$v_ipstatus = $data[$v_ip]['STATUS'];
if ($v_ipstatus == 'dedicated') $v_dedicated = 'yes';
$v_owner = $data[$v_ip]['OWNER'];
@ -104,6 +105,18 @@ if ($_SESSION['user'] == 'admin') {
unset($output);
}
// Change Nat
if (($v_nat != $_POST['v_nat']) && (empty($_SESSION['error_msg']))) {
$v_nat = escapeshellarg($_POST['v_nat']);
exec (VESTA_CMD."v-change-sys-ip-nat ".$v_ip." ".$v_nat, $output, $return_var);
if ($return_var != 0) {
$error = implode('<br>', $output);
if (empty($error)) $error = _('Error code:',$return_var);
$_SESSION['error_msg'] = $error;
}
unset($output);
}
if (empty($_SESSION['error_msg'])) {
$_SESSION['ok_msg'] = _('Changes has been saved.');
}

View file

@ -258,6 +258,7 @@ $LANG['en'] = array(
'Shared' => 'Shared',
'Assigned user' => 'Assigned user',
'Assigned domain' => 'Assigned domain',
'NAT IP association' => 'NAT IP association',
'shell' => 'shell',
'web domains' => 'web domains',
'web aliases' => 'web aliases',
@ -356,8 +357,9 @@ $LANG['en'] = array(
'Passwords not match' => 'Passwords not match',
'Please enter valid email address.' => 'Please enter valid email address.',
'Field "%s" can not be blank.' => 'Field "%s" can not be blank.',
'Error code:' => 'Error code:',
'Error code:' => 'Error code: %s',
'SERVICE_ACTION_FAILED' => '"%s" "%s" failed',
'IP address is in use' => 'IP address is in use',
'Welcome to Vesta Control Panel' => 'Welcome to Vesta Control Panel',
'MAIL_FROM' => 'Vesta Control Panel <noreply@%s>',

View file

@ -259,6 +259,7 @@ $LANG['ru'] = array(
'Shared' => 'Общий',
'Assigned user' => 'Назначить пользователю',
'Assigned domain' => 'Домен',
'NAT IP association' => 'Ассоциированный NAT IP',
'shell' => 'ssh доступ',
'web domains' => 'веб домены',
'web aliases' => 'алиасы хостов',
@ -359,6 +360,7 @@ $LANG['ru'] = array(
'Field "%s" can not be blank.' => 'Поле "%s" не может быть пустым.',
'Error code:' => 'Код ошибки: %s',
'SERVICE_ACTION_FAILED' => 'Не удалось "%s" "%s"',
'IP address is in use' => 'IP адрес используется',
'Welcome to Vesta Control Panel' => 'Добро пожаловать в панель управления Vesta',
'MAIL_FROM' => 'Vesta Control Panel <noreply@%s>',

View file

@ -135,6 +135,18 @@
<input type="text" size="20" class="vst-input" name="v_name" <?php if (!empty($v_name)) echo "value=".$v_name; ?>>
</td>
</tr>
<tr>
<td class="vst-text" style="padding: 10 0 0 2px;">
<?php print _('NAT IP association');?> <span style="padding:0 0 0 6px; font-size: 10pt; color:#555;">(<?php print _('optional');?>)</span>
</td>
</tr>
<tr>
<td>
<input type="text" size="20" class="vst-input" name="v_nat" <?php if (!empty($v_nat)) echo "value=".$v_nat; ?>>
</td>
</tr>
</table>
<table class="data-col2">
<tr>

View file

@ -103,11 +103,13 @@
<select class="vst-list" name="v_ip">
<?php
foreach ($ips as $key => $value) {
echo "\t\t\t\t<option value=\"".$key."\"";
if ((!empty($v_ip)) && ( $key == $_POST['v_ip'])){
$display_ip = $key;
if (!empty($value['NAT'])) $display_ip = $value['NAT'];
echo "\t\t\t\t<option value=\"".$display_ip."\"";
if ((!empty($v_ip)) && ( $display_ip == $_POST['v_ip'])){
echo ' selected';
}
echo ">".$key."</option>\n";
echo ">".$display_ip."</option>\n";
}
?>
</select>

View file

@ -123,6 +123,17 @@
<input type="text" size="20" class="vst-input" name="v_name" <?php if (!empty($v_name)) echo "value=".$v_name; ?>>
</td>
</tr>
<tr>
<td class="vst-text" style="padding: 10 0 0 2px;">
<?php print _('NAT IP association');?> <span style="padding:0 0 0 6px; font-size: 10pt; color:#555;">(<?php print _('optional');?>)</span>
</td>
</tr>
<tr>
<td>
<input type="text" size="20" class="vst-input" name="v_nat" <?php if (!empty($v_nat)) echo "value=".$v_nat; ?>>
</td>
</tr>
</table>
<table class="data-col2">
<tr>

View file

@ -95,12 +95,14 @@
<select class="vst-list" name="v_ip">
<?php
foreach ($ips as $key => $value) {
echo "\n\t\t\t\t\t\t\t\t\t\t<option value=\"".$key."\"";
$skey = "'".$key."'";
if ((!empty($v_ip)) && ( $key == $v_ip ) || ( $skey == $v_ip )){
$display_ip = $key;
if (!empty($value['NAT'])) $display_ip = $value['NAT'];
$skey = "'".$display_ip."'";
echo "\n\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"".$display_ip."\"";
if ((!empty($v_ip)) && ( $display_ip == $v_ip ) || ( $skey == $v_ip )){
echo ' selected';
}
echo ">".$key."</option>\n";
echo ">".$display_ip."</option>\n";
}
?>
</select>

View file

@ -20,6 +20,31 @@
</select>
<input type="submit" name="ok" value="" class="button" style="width: 37px; font-size: 12px; height: 24px;">
</div>
<?php
if (!empty($_SESSION['error_msg'])) {
?>
<div>
<script type="text/javascript">
$(function() {
$( "#dialog:ui-dialog" ).dialog( "destroy" );
$( "#dialog-message" ).dialog({
modal: true,
buttons: {
Ok: function() {
$( this ).dialog( "close" );
}
}
});
});
</script>
<div id="dialog-message" title="Error">
<p><?php echo $_SESSION['error_msg'] ?></p>
</div>
</div>
<?php
unset($_SESSION['error_msg']);
}
?>
</td>
</tr>
</table>
@ -64,7 +89,9 @@
<table class="data-col2" width="830px">
<tr>
<td colspan=3 class="domain" style="padding: 0 0 0 4px;">
<b><?php echo $key ?></b><a class="aliases" style="padding:0 0 0 8px;"><?php echo $data[$key]['NAME'] ?></a>
<b><?php echo $key ?></b>
<?php if (!empty($data[$key]['NAT'])) echo ' → <b>' . $data[$key]['NAT'] . '</b>'; ?>
<a class="aliases" style="padding:0 0 0 8px;"><?php echo $data[$key]['NAME'] ?></a>
</td>
</tr>
<tr>

View file

@ -9,26 +9,26 @@
<tr>
<td style="border-bottom: 1px solid #c4c4c4; height: 26px; border-left: 1px solid #c4c4c4; padding: 0 0 0 0px">
<b><a class="top-<?php if($TAB == 'PACKAGE' ) echo 'selected-' ?>link" href="/list/package/">
<?php print _('Packages') ?>
<?php print _('Packages') ?>
</a></b>
<b><a class="top-<?php if($TAB == 'IP' ) echo 'selected-' ?>link" href="/list/ip/">
<?php print _('IP') ?>
<?php print _('IP') ?>
</a></b>
<b><a class="top-<?php if($TAB == 'RRD' ) echo 'selected-' ?>link" href="/list/rrd/">
<?php print _('Graphics') ?>
<?php print _('Graphics') ?>
</a></b>
<b><a class="top-<?php if($TAB == 'STATS' ) echo 'selected-' ?>link" href="/list/stats/">
<?php print _('Statistics') ?>
<?php print _('Statistics') ?>
</a></b>
<b><a class="top-<?php if($TAB == 'LOG' ) echo 'selected-' ?>link" href="/list/log/">
<?php print _('Log') ?>
<?php print _('Log') ?>
</a></b>
<b><a class="top-<?php if($TAB == 'SERVICES' ) echo 'selected-' ?>link" href="/list/services/">
<?php print _('Services') ?>
<?php print _('Services') ?>
</a></b>
<b><a class="top-<?php if($TAB == 'UPDATES' ) echo 'selected-' ?>link" href="/list/updates/">
<?php print _('Updates') ?>
<?php print _('Updates') ?>
</a></b>
</td>
<td style="border-bottom: 1px solid #c4c4c4; height: 26px; text-align: right; border-right: 1px solid #c4c4c4; padding: 0 24px 0 0px; weight:120px">

View file

@ -103,11 +103,13 @@
<select class="vst-list" name="v_ip">
<?php
foreach ($ips as $key => $value) {
echo "\t\t\t\t<option value=\"".$key."\"";
if ((!empty($v_ip)) && ( $key == $_POST['v_ip'])){
$display_ip = $key;
if (!empty($value['NAT'])) $display_ip = $value['NAT'];
echo "\t\t\t\t<option value=\"".$display_ip."\"";
if ((!empty($v_ip)) && ( $display_ip == $_POST['v_ip'])){
echo ' selected';
}
echo ">".$key."</option>\n";
echo ">".$display_ip."</option>\n";
}
?>
</select>

View file

@ -95,12 +95,14 @@
<select class="vst-list" name="v_ip">
<?php
foreach ($ips as $key => $value) {
echo "\n\t\t\t\t\t\t\t\t\t\t<option value=\"".$key."\"";
$skey = "'".$key."'";
if ((!empty($v_ip)) && ( $key == $v_ip ) || ( $skey == $v_ip )){
$display_ip = $key;
if (!empty($value['NAT'])) $display_ip = $value['NAT'];
$skey = "'".$display_ip."'";
echo "\n\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"".$display_ip."\"";
if ((!empty($v_ip)) && ( $display_ip == $v_ip ) || ( $skey == $v_ip )){
echo ' selected';
}
echo ">".$key."</option>\n";
echo ">".$display_ip."</option>\n";
}
?>
</select>

View file

@ -9,16 +9,16 @@
<tr>
<td style="border-bottom: 1px solid #c4c4c4; height: 26px; border-left: 1px solid #c4c4c4; padding: 0 0 0 0px">
<b><a class="top-<?php if($TAB == 'STATS' ) echo 'selected-' ?>link" href="/list/stats/">
<?php print _('Statistics') ?>
<?php print _('Statistics') ?>
</a></b>
<b><a class="top-<?php if($TAB == 'LOG' ) echo 'selected-' ?>link" href="/list/log/">
<?php print _('Log') ?>
<?php print _('Log') ?>
</a></b>
</td>
<td style="border-bottom: 1px solid #c4c4c4; height: 26px; text-align: right; border-right: 1px solid #c4c4c4; padding: 0 24px 0 0px; weight:120px">
<b><?php if($user != $_SESSION['user']) echo 'admin / ' ?><?php echo $user ?></b>
<a class="top-link" style="padding: 5px 0px 5px 2px; border:0px" href="/logout/">
<?php print _('Log out') ?>
<?php print _('Log out') ?>
</a>
</td>
</tr>
@ -41,12 +41,12 @@
<a class="nav-lnk" href="/list/web/">
<span class="nav-<?php if($TAB == 'WEB' ) echo 'selected-' ?>block">
<p class="nav-<?php if($TAB == 'WEB' ) echo 'selected-' ?>header">
<?php print _('WEB');?>
<?php print _('WEB');?>
</p>
<p class="nav-counters" style="decoration: none;">
<?php print _('domains');?>: <? echo $panel[$user]['U_WEB_DOMAINS']?><br>
<?php print _('aliases');?>: <? echo $panel[$user]['U_WEB_ALIASES']?><br>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_WEB']?>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_WEB']?>
</p>
</span>
</a>
@ -54,12 +54,12 @@
<a class="nav-lnk" href="/list/dns/">
<span class="nav-<?php if($TAB == 'DNS' ) echo 'selected-' ?>block">
<p class="nav-<?php if($TAB == 'DNS' ) echo 'selected-' ?>header">
<?php print _('DNS');?>
<?php print _('DNS');?>
</p>
<p class="nav-counters" style="decoration: none;">
<?php print _('domains');?>: <? echo $panel[$user]['U_DNS_DOMAINS']?><br>
<?php print _('records');?>: <? echo $panel[$user]['U_DNS_RECORDS']?><br>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_DNS']?>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_DNS']?>
</p>
</span>
</a>
@ -67,12 +67,12 @@
<a class="nav-lnk" href="/list/mail/">
<span class="nav-<?php if($TAB == 'MAIL' ) echo 'selected-' ?>block">
<p class="nav-<?php if($TAB == 'MAIL' ) echo 'selected-' ?>header">
<?php print _('MAIL');?>
<?php print _('MAIL');?>
</p>
<p class="nav-counters" style="decoration: none;">
<?php print _('domains');?>: <? echo $panel[$user]['U_MAIL_DOMAINS']?><br>
<?php print _('accounts');?>: <? echo $panel[$user]['U_MAIL_ACCOUNTS']?><br>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_MAIL']?>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_MAIL']?>
</p>
</span>
</a>
@ -80,11 +80,11 @@
<a class="nav-lnk" href="/list/db/">
<span class="nav-<?php if($TAB == 'DB' ) echo 'selected-' ?>block">
<p class="nav-<?php if($TAB == 'DB' ) echo 'selected-' ?>header">
<?php print _('DB');?>
<?php print _('DB');?>
</p>
<p class="nav-counters" style="decoration: none;">
<?php print _('databases');?>: <? echo $panel[$user]['U_DATABASES']?><br>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_DB']?>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_DB']?>
</p>
</span>
</a>
@ -92,11 +92,11 @@
<a class="nav-lnk" href="/list/cron/">
<span class="nav-<?php if($TAB == 'CRON' ) echo 'selected-' ?>block">
<p class="nav-<?php if($TAB == 'CRON' ) echo 'selected-' ?>header">
<?php print _('CRON');?>
<?php print _('CRON');?>
</p>
<p class="nav-counters" style="decoration: none;">
<?php print _('jobs');?>: <? echo $panel[$user]['U_CRON_JOBS']?><br>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_CRON']?>
<?php print _('spnd');?>: <? echo $panel[$user]['SUSPENDED_CRON']?>
</p>
</span>
</a>
@ -104,7 +104,7 @@
<a class="nav-lnk" href="/list/backup/">
<span class="nav-<?php if($TAB == 'BACKUP' ) echo 'selected-' ?>block">
<p class="nav-<?php if($TAB == 'BACKUP' ) echo 'selected-' ?>header">
<?php print _('BACKUP');?>
<?php print _('BACKUP');?>
</p>
<p class="nav-counters" style="decoration: none;">
<?php print _('backups');?>: <? echo $panel[$user]['U_BACKUPS']?><br>