mirror of
https://github.com/serghey-rodin/vesta.git
synced 2025-08-19 21:04:06 -07:00
support for NATed networks
This commit is contained in:
parent
579815608c
commit
138ef6c7b0
37 changed files with 271 additions and 94 deletions
|
@ -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
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
|
|
@ -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'"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
54
bin/v-change-sys-ip-nat
Executable 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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,7 +117,7 @@ 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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
||||
ln -f -s /var/log/httpd/domains/$domain.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 \
|
||||
ln -f -s /var/log/httpd/domains/$domain.error.log \
|
||||
$HOMEDIR/$user/web/$domain/logs/$domain.error.log
|
||||
fi
|
||||
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
23
func/ip.sh
23
func/ip.sh
|
@ -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() {
|
||||
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
|
||||
}
|
|
@ -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" ;;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ if ($_SESSION['user'] == 'admin') {
|
|||
if ($return_var != 0) {
|
||||
$error = implode('<br>', $output);
|
||||
if (empty($error)) $error = _('Error: vesta did not return any output.');
|
||||
if ($return_var == 4) $error = _('IP address is in use');
|
||||
$_SESSION['error_msg'] = $error;
|
||||
}
|
||||
unset($output);
|
||||
|
|
|
@ -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.');
|
||||
}
|
||||
|
|
|
@ -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>',
|
||||
|
|
|
@ -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>',
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue