#!/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/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/ifconfig | grep 'inet addr:' | cut -f 2 -d : | \ cut -f 1 -d ' '| grep -v 127.0.0.1 | grep -v '0.0.0.') ip_num=$(echo "$ip_list" | wc -l) # WorkAround for Amazon stop/start issue 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 $BIN/v-restart-proxy if [ $? -ne 0 ]; then exit E_RESTART fi 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 $BIN/v-restart-web if [ $? -ne 0 ]; then exit E_RESTART fi 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 if [ $? -ne 0 ]; then exit E_RESTART fi fi # No further comparation is needed exit fi fi # Compare ips for ip in $ip_list; do if [ ! -e "$VESTA/data/ips/$ip" ]; then iface=$(/sbin/ifconfig |grep -B1 -w $ip |head -n1 |cut -f1 -d ' ') interface=$(echo "$iface" | cut -f 1 -d :) mask=$(/sbin/ifconfig |grep -w $ip |awk -F "Mask:" '{print $2}') $BIN/v-add-sys-ip $ip $mask $interface fi done #----------------------------------------------------------# # Vesta # #----------------------------------------------------------# exit