|
1 | 1 | #!/bin/bash |
2 | 2 | # info: update system ip |
3 | | -# options: [USER] [IP_STATUS] |
| 3 | +# options: [NONE] |
4 | 4 | # |
5 | 5 | # The function scans configured ip in the system and register them with vesta |
6 | 6 | # internal database. This call is intended for use on vps servers, where ip is |
|
11 | 11 | # Variable&Function # |
12 | 12 | #----------------------------------------------------------# |
13 | 13 |
|
14 | | -# Argument definition |
15 | | -user=${1-admin} |
16 | | -ip_status=${2-shared} |
| 14 | +# Importing system variables |
| 15 | +source /etc/profile |
17 | 16 |
|
18 | 17 | # Includes |
19 | | -source /etc/profile.d/vesta.sh |
20 | 18 | source $VESTA/func/main.sh |
21 | | -source $VESTA/func/ip.sh |
22 | 19 | source $VESTA/conf/vesta.conf |
23 | 20 |
|
24 | 21 |
|
25 | 22 | #----------------------------------------------------------# |
26 | 23 | # Verifications # |
27 | 24 | #----------------------------------------------------------# |
28 | 25 |
|
29 | | -check_args '0' "$#" '[USER] [IP_STATUS]' |
30 | | -is_format_valid 'user' 'ip_status' |
31 | | -is_object_valid 'user' 'USER' "$user" "$user" |
32 | | - |
33 | 26 |
|
34 | 27 | #----------------------------------------------------------# |
35 | 28 | # Action # |
36 | 29 | #----------------------------------------------------------# |
37 | 30 |
|
38 | | -# Get list of ip addresses |
39 | | -ip_list=$(/sbin/ip addr|grep 'inet '|grep global|awk '{print $2}') |
40 | | -ip_list=$(echo "$ip_list"|cut -f 1 -d /) |
41 | | -ip_num=$(echo "$ip_list" | wc -l) |
42 | | - |
43 | | -# WorkAround for DHCP IP address |
44 | | -vst_ip_list=$(ls $VESTA/data/ips/) |
45 | | -vst_ip_num=$(echo "$vst_ip_list" | wc -l) |
46 | | - |
47 | | -if [ ! -z "$vst_ip_list" ] && [ "$vst_ip_num" -eq '1' ]; then |
48 | | - if [ $ip_num -eq 1 ] && [ "$ip_list" != "$vst_ip_list" ]; then |
49 | | - new=$ip_list |
50 | | - old=$vst_ip_list |
51 | | - mv $VESTA/data/ips/$old $VESTA/data/ips/$new |
52 | | - if [ ! -z "$PROXY_SYSTEM" ]; then |
53 | | - mv /etc/$PROXY_SYSTEM/conf.d/$old.conf \ |
54 | | - /etc/$PROXY_SYSTEM/conf.d/$new.conf |
55 | | - sed -i "s/$old/$new/g" /etc/$PROXY_SYSTEM/conf.d/$new.conf |
56 | | - fi |
57 | | - if [ ! -z "$WEB_SYSTEM" ]; then |
58 | | - mv /etc/$WEB_SYSTEM/conf.d/$old.conf \ |
59 | | - /etc/$WEB_SYSTEM/conf.d/$new.conf |
60 | | - sed -i "s/$old/$new/g" /etc/$WEB_SYSTEM/conf.d/$new.conf |
61 | | - sed -i "s/$old/$new/g" $VESTA/data/users/*/web.conf |
62 | | - |
63 | | - # Rebuild web domains |
64 | | - for user in $(ls $VESTA/data/users/); do |
65 | | - $BIN/v-rebuild-web-domains $user no |
66 | | - done |
67 | | - fi |
68 | | - if [ ! -z "$FTP_SYSTEM" ];then |
69 | | - ftpd_conf_file=$(find /etc/ -maxdepth 2 -name $FTP_SYSTEM.conf) |
70 | | - sed -i "s/$old/$new/g" $ftpd_conf_file |
71 | | - fi |
72 | | - |
73 | | - # Restarting web server |
74 | | - $BIN/v-restart-web |
| 31 | +# Listing system ip addresses |
| 32 | +ips=$(/sbin/ip addr |grep 'inet ' |grep global |awk '{print $2}' |cut -f1 -d/) |
| 33 | +v_ips=$(ls $VESTA/data/ips/) |
| 34 | +ip_num=$(echo "$ips" |wc -l) |
| 35 | +v_ip_num=$(echo "$v_ips" |wc -l) |
| 36 | + |
| 37 | +# Checking primary IP change |
| 38 | +if [[ "$ip_num" -eq '1' ]] && [[ "$v_ip_num" -eq 1 ]]; then |
| 39 | + if [ "$ips" != "$v_ips" ]; then |
| 40 | + new=$ips |
| 41 | + old=$v_ips |
| 42 | + fi |
| 43 | +fi |
75 | 44 |
|
76 | | - # Restarting ftp server |
77 | | - $BIN/v-restart-ftp |
| 45 | +# Updating configs |
| 46 | +if [ ! -z "$new" ]; then |
| 47 | + mv $VESTA/data/ips/$old $VESTA/data/ips/$new |
78 | 48 |
|
79 | | - # Restarting proxy server |
80 | | - if [ ! -z "$PROXY_SYSTEM" ]; then |
81 | | - $BIN/v-restart-proxy |
| 49 | + # Updating PROXY |
| 50 | + if [ ! -z "$PROXY_SYSTEM" ]; then |
| 51 | + cd /etc/$PROXY_SYSTEM/conf.d |
| 52 | + if [ -e "$old.conf" ]; then |
| 53 | + mv $old.conf $new.conf |
| 54 | + sed -i "s/$old/$new/g" $new.conf |
82 | 55 | fi |
| 56 | + fi |
83 | 57 |
|
84 | | - # Restarting firewall |
85 | | - if [ ! -z "$FIREWALL_SYSTEM" ]; then |
86 | | - $BIN/v-update-firewall |
| 58 | + # Updating WEB |
| 59 | + if [ ! -z "$WEB_SYSTEM" ]; then |
| 60 | + cd /etc/$WEB_SYSTEM/conf.d |
| 61 | + if [ -e "$old.conf" ]; then |
| 62 | + mv $old.conf $new.conf |
| 63 | + sed -i "s/$old/$new/g" $new.conf |
87 | 64 | fi |
| 65 | + sed -i "s/$old/$new/g" $VESTA/data/users/*/web.conf |
| 66 | + for user in $(ls $VESTA/data/users/); do |
| 67 | + $BIN/v-rebuild-web-domains $user no |
| 68 | + done |
| 69 | + $BIN/v-restart-proxy |
| 70 | + $BIN/v-restart-web |
| 71 | + fi |
88 | 72 |
|
89 | | - if [ ! -z "$DNS_SYSTEM" ]; then |
90 | | - # Rebuild dns domains |
91 | | - for user in $(ls $VESTA/data/users/); do |
92 | | - sed -i "s/$old/$new/g" $VESTA/data/users/$user/dns.conf |
93 | | - sed -i "s/$old/$new/g" $VESTA/data/users/$user/dns/*.conf |
94 | | - $BIN/v-rebuild-dns-domains $user no |
95 | | - done |
96 | | - $BIN/v-restart-dns |
97 | | - check_result $? "dns restart failed" >/dev/null |
| 73 | + # Updating DNS |
| 74 | + if [ ! -z "$DNS_SYSTEM" ]; then |
| 75 | + sed -i "s/$old/$new/g" $VESTA/data/users/*/dns.conf |
| 76 | + sed -i "s/$old/$new/g" $VESTA/data/users/*/dns/*.conf |
| 77 | + for user in $(ls $VESTA/data/users/); do |
| 78 | + $BIN/v-rebuild-dns-domains $user no |
| 79 | + done |
| 80 | + $BIN/v-restart-dns |
| 81 | + fi |
| 82 | + |
| 83 | + # Updating FTP |
| 84 | + if [ ! -z "$FTP_SYSTEM" ] && [ "$FTP_SYSTEM" = 'vsftpd' ]; then |
| 85 | + conf=$(find /etc/ -maxdepth 2 -name $FTP_SYSTEM.conf) |
| 86 | + if [ ! -z "$conf" ]; then |
| 87 | + sed -i "s/$old/$new/g" $conf |
| 88 | + $BIN/v-restart-ftp |
98 | 89 | fi |
| 90 | + fi |
99 | 91 |
|
100 | | - # No further comparation is needed |
101 | | - exit |
| 92 | + # Updating firewall |
| 93 | + if [ ! -z "$FIREWALL_SYSTEM" ]; then |
| 94 | + sed -i "s/$old/$new/g" $VESTA/data/firewall/*.conf |
| 95 | + $BIN/v-update-firewall |
102 | 96 | fi |
103 | 97 | fi |
104 | 98 |
|
105 | | -# Compare ips |
106 | | -for ip in $ip_list; do |
| 99 | +# Adding system IP |
| 100 | +for ip in $ips; do |
107 | 101 | check_ifconfig=$(/sbin/ifconfig |grep "$ip") |
108 | 102 | if [ ! -e "$VESTA/data/ips/$ip" ] && [ ! -z "$check_ifconfig" ]; then |
109 | | - interface=$(/sbin/ip addr |grep $ip |awk '{print $NF}'|uniq) |
| 103 | + interface=$(/sbin/ip addr |grep $ip |awk '{print $NF}' |uniq) |
110 | 104 | interface=$(echo "$interface" |cut -f 1 -d : |head -n 1) |
111 | 105 | netmask=$(/sbin/ip addr |grep $ip |cut -f 2 -d / |cut -f 1 -d \ ) |
112 | 106 | netmask=$(convert_cidr $netmask) |
113 | 107 | $BIN/v-add-sys-ip $ip $netmask $interface |
114 | 108 | fi |
115 | 109 | done |
116 | 110 |
|
117 | | -# Checking NAT |
| 111 | +# Updating NAT |
118 | 112 | pub_ip=$(curl -s vestacp.com/what-is-my-ip/) |
119 | | -if [ ! -z "$pub_ip" ] && [ ! -e "$VESTA/data/ips/$pub_ip" ]; then |
120 | | - check_nat=$(grep -R "$pub_ip" $VESTA/data/ips/) |
121 | | - if [ -z "$check_nat" ]; then |
122 | | - ip=$(ls -t $VESTA/data/ips/|head -n1) |
| 113 | +if [ ! -e "$VESTA/data/ips/$pub_ip" ]; then |
| 114 | + if [ -z "$(grep -R "$pub_ip" $VESTA/data/ips/)" ]; then |
| 115 | + ip=$(ls -t $VESTA/data/ips/ |head -n1) |
123 | 116 | $BIN/v-change-sys-ip-nat $ip $pub_ip |
124 | 117 | fi |
125 | 118 | fi |
|
0 commit comments