| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #!/bin/bash
- # info: update system ip
- # options: [USER] [IP_STATUS]
- #
- # The function scans configured ip in the system and register them with vesta
- # internal database. This call is intended for use on vps servers, where ip is
- # set by hypervizor.
- #----------------------------------------------------------#
- # Variable&Function #
- #----------------------------------------------------------#
- # Argument defenition
- user=${1-admin}
- ip_status=${2-shared}
- # Includes
- source /etc/profile.d/vesta.sh
- source $VESTA/func/main.sh
- source $VESTA/func/ip.sh
- source $VESTA/conf/vesta.conf
- #----------------------------------------------------------#
- # Verifications #
- #----------------------------------------------------------#
- check_args '0' "$#" '[USER] [IP_STATUS]'
- validate_format 'user' 'ip_status'
- is_object_valid 'user' 'USER' "$user" "$user"
- #----------------------------------------------------------#
- # Action #
- #----------------------------------------------------------#
- # Get list of ip addresses
- ip_list=$(/sbin/ip addr|grep 'inet '|grep global|awk '{print $2}')
- ip_list=$(echo "$ip_list"|cut -f 1 -d /)
- ip_num=$(echo "$ip_list" | wc -l)
- # WorkAround for DHCP IP address
- vst_ip_list=$(ls $VESTA/data/ips/)
- vst_ip_num=$(echo "$vst_ip_list" | wc -l)
- if [ ! -z "$vst_ip_list" ] && [ "$vst_ip_num" -eq '1' ]; then
- if [ $ip_num -eq 1 ] && [ "$ip_list" != "$vst_ip_list" ]; then
- new=$ip_list
- old=$vst_ip_list
- mv $VESTA/data/ips/$old $VESTA/data/ips/$new
- if [ ! -z "$PROXY_SYSTEM" ]; then
- mv /etc/$PROXY_SYSTEM/conf.d/$old.conf \
- /etc/$PROXY_SYSTEM/conf.d/$new.conf
- sed -i "s/$old/$new/g" /etc/$PROXY_SYSTEM/conf.d/$new.conf
- fi
- if [ ! -z "$WEB_SYSTEM" ]; then
- mv /etc/$WEB_SYSTEM/conf.d/$old.conf \
- /etc/$WEB_SYSTEM/conf.d/$new.conf
- sed -i "s/$old/$new/g" /etc/$WEB_SYSTEM/conf.d/$new.conf
- sed -i "s/$old/$new/g" $VESTA/data/users/*/web.conf
- # Rebuild web domains
- for user in $(ls $VESTA/data/users/); do
- $BIN/v-rebuild-web-domains $user no
- done
- fi
- # Restarting web server
- $BIN/v-restart-web
- # Restarting proxy server
- if [ ! -z "$PROXY_SYSTEM" ]; then
- $BIN/v-restart-proxy
- fi
- # Restarting firewall
- if [ ! -z "$FIREWALL_SYSTEM" ]; then
- $BIN/v-update-firewall
- fi
- if [ ! -z "$DNS_SYSTEM" ]; then
- # Rebuild dns domains
- for user in $(ls $VESTA/data/users/); do
- sed -i "s/$old/$new/g" $VESTA/data/users/$user/dns.conf
- sed -i "s/$old/$new/g" $VESTA/data/users/$user/dns/*.conf
- $BIN/v-rebuild-dns-domains $user no
- done
- $BIN/v-restart-dns
- check_result $? "dns restart failed" >/dev/null
- fi
- # No further comparation is needed
- exit
- fi
- fi
- # Compare ips
- for ip in $ip_list; do
- if [ ! -e "$VESTA/data/ips/$ip" ]; then
- interface=$(/sbin/ip addr |grep $ip |awk '{print $NF}')
- interface=$(echo $interface |cut -f 1 -d :)
- netmask=$(/sbin/ip addr |grep $ip |cut -f 2 -d / |cut -f 1 -d \ )
- netmask=$(convert_cidr $netmask)
- $BIN/v-add-sys-ip $ip $netmask $interface
- fi
- done
- #----------------------------------------------------------#
- # Vesta #
- #----------------------------------------------------------#
- exit
|