ip.sh 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. # Validationg ip address
  2. is_ip_valid() {
  3. #check_ifc=$(/sbin/ifconfig |grep "inet addr:$ip")
  4. #if [ ! -e "$VESTA/data/ips/$ip" ] || [ -z "$check_ifc" ]; then
  5. if [ ! -e "$VESTA/data/ips/$ip" ] ; then
  6. echo "Error: IP $ip not exist"
  7. log_event "$E_NOTEXIST" "$EVENT"
  8. exit $E_NOTEXIST
  9. fi
  10. }
  11. # Check if ip availabile for user
  12. is_ip_avalable() {
  13. ip_data=$(cat $VESTA/data/ips/$ip)
  14. owner=$(echo "$ip_data"|grep OWNER= | cut -f 2 -d \')
  15. status=$(echo "$ip_data"|grep STATUS= | cut -f 2 -d \')
  16. shared=no
  17. if [ 'admin' = "$owner" ] && [ "$status" = 'shared' ]; then
  18. shared='yes'
  19. fi
  20. if [ "$owner" != "$user" ] && [ "$shared" != 'yes' ]; then
  21. echo "Error: User $user don't have permission to use $ip"
  22. log_event "$E_FORBIDEN" "$EVENT"
  23. exit $E_FORBIDEN
  24. fi
  25. }
  26. # Check ip ownership
  27. is_ip_owner() {
  28. # Parsing ip
  29. owner=$(grep 'OWNER=' $VESTA/data/ips/$IP|cut -f 2 -d \')
  30. if [ "$owner" != "$user" ]; then
  31. echo "Error: IP $IP not owned"
  32. log_event "$E_FORBIDEN" "$EVENT"
  33. exit $E_FORBIDEN
  34. fi
  35. }
  36. # Check if ip address is free
  37. is_ip_free() {
  38. list=$(/sbin/ifconfig |grep 'inet addr:' |cut -f 2 -d : |cut -f 1 -d ' ')
  39. ip_check=$(echo "$list" |grep -w "$ip")
  40. if [ -n "$ip_check" ] || [ -e "$VESTA/data/ips/$ip" ]; then
  41. echo "Error: IP exist"
  42. log_event "$E_EXISTS" "$EVENT"
  43. exit $E_EXISTS
  44. fi
  45. }
  46. # Get full interface name
  47. get_ip_iface() {
  48. i=$(/sbin/ifconfig -a |grep -w "$interface"|cut -f1 -d ' '|\
  49. tail -n 1|cut -f 2 -d :)
  50. if [ "$i" = "$interface" ]; then
  51. n=0
  52. else
  53. n=$((i + 1))
  54. fi
  55. iface="$interface:$n"
  56. }
  57. # Check ip address speciefic value
  58. is_ip_key_empty() {
  59. key="$1"
  60. string=$(cat $VESTA/data/ips/$ip)
  61. eval $string
  62. eval value="$key"
  63. if [ ! -z "$value" ] && [ "$value" != '0' ]; then
  64. echo "Error: $key is not empty = $value"
  65. log_event "$E_EXISTS" "$EVENT"
  66. exit $E_EXISTS
  67. fi
  68. }
  69. # Update ip address value
  70. update_ip_value() {
  71. key="$1"
  72. value="$2"
  73. conf="$VESTA/data/ips/$ip"
  74. str=$(cat $conf)
  75. eval $str
  76. c_key=$(echo "${key//$/}")
  77. eval old="${key}"
  78. old=$(echo "$old" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
  79. new=$(echo "$value" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
  80. sed -i "$str_number s/$c_key='${old//\*/\\*}'/$c_key='${new//\*/\\*}'/g"\
  81. $conf
  82. }
  83. # Get ip name
  84. get_ip_name() {
  85. grep "NAME=" $VESTA/data/ips/$ip |cut -f 2 -d \'
  86. }
  87. # Increase ip value
  88. increase_ip_value() {
  89. sip=${1-ip}
  90. USER=$user
  91. web_key='U_WEB_DOMAINS'
  92. usr_key='U_SYS_USERS'
  93. current_web=$(grep "$web_key=" $VESTA/data/ips/$sip |cut -f 2 -d \')
  94. current_usr=$(grep "$usr_key=" $VESTA/data/ips/$sip |cut -f 2 -d \')
  95. if [ -z "$current_web" ]; then
  96. echo "Error: Parsing error"
  97. log_event "$E_PARSING" "$EVENT"
  98. exit $E_PARSING
  99. fi
  100. new_web=$((current_web + 1))
  101. if [ -z "$current_usr" ]; then
  102. new_usr="$USER"
  103. else
  104. check_usr=$(echo -e "${current_usr//,/\n}" |grep -w $USER)
  105. if [ -z "$check_usr" ]; then
  106. new_usr="$current_usr,$USER"
  107. else
  108. new_usr="$current_usr"
  109. fi
  110. fi
  111. sed -i "s/$web_key='$current_web'/$web_key='$new_web'/g" \
  112. $VESTA/data/ips/$ip
  113. sed -i "s/$usr_key='$current_usr'/$usr_key='$new_usr'/g" \
  114. $VESTA/data/ips/$ip
  115. }
  116. # Decrease ip value
  117. decrease_ip_value() {
  118. sip=${1-ip}
  119. USER=$user
  120. web_key='U_WEB_DOMAINS'
  121. usr_key='U_SYS_USERS'
  122. current_web=$(grep "$web_key=" $VESTA/data/ips/$sip |cut -f 2 -d \')
  123. current_usr=$(grep "$usr_key=" $VESTA/data/ips/$sip |cut -f 2 -d \')
  124. if [ -z "$current_web" ]; then
  125. echo "Error: Parsing error"
  126. log_event "$E_PARSING" "$EVENT"
  127. exit $E_PARSING
  128. fi
  129. new_web=$((current_web - 1))
  130. check_ip=$(grep $sip $USER_DATA/web.conf |wc -l)
  131. if [ "$check_ip" -lt 2 ]; then
  132. new_usr=$(echo "$current_usr" |\
  133. sed -e "s/,/\n/g"|\
  134. sed -e "s/^$user$//g"|\
  135. sed -e "/^$/d"|\
  136. sed -e ':a;N;$!ba;s/\n/,/g')
  137. else
  138. new_usr="$current_usr"
  139. fi
  140. sed -i "s/$web_key='$current_web'/$web_key='$new_web'/g" \
  141. $VESTA/data/ips/$sip
  142. sed -i "s/$usr_key='$current_usr'/$usr_key='$new_usr'/g" \
  143. $VESTA/data/ips/$sip
  144. }
  145. # Get ip address value
  146. get_ip_value() {
  147. key="$1"
  148. string=$( cat $VESTA/data/ips/$ip )
  149. eval $string
  150. eval value="$key"
  151. echo "$value"
  152. }
  153. # Get current ip interface
  154. get_current_interface() {
  155. i=$(/sbin/ifconfig |grep -B1 "addr:$ip "|head -n 1 |cut -f 1 -d ' ')
  156. if [ -z "$i" ]; then
  157. echo "Error: interface for ip $ip not found"
  158. log_event "$E_NOTEXIST" "$EVENT"
  159. exit $E_NOTEXIST
  160. fi
  161. if [ -z "$(echo $i | cut -s -f 2 -d :)" ]; then
  162. echo "Error: Main IP on interface"
  163. log_event "$E_FORBIDEN" "$EVENT"
  164. exit $E_FORBIDEN
  165. fi
  166. interface="$i"
  167. }
  168. # Create ip vesta configuration
  169. create_vesta_ip() {
  170. ip_data="OWNER='$user'"
  171. ip_data="$ip_data\nSTATUS='$ip_status'"
  172. ip_data="$ip_data\nNAME='$ip_name'"
  173. ip_data="$ip_data\nU_SYS_USERS=''"
  174. ip_data="$ip_data\nU_WEB_DOMAINS='0'"
  175. ip_data="$ip_data\nINTERFACE='$interface'"
  176. ip_data="$ip_data\nNETMASK='$mask'"
  177. ip_data="$ip_data\nTIME='$TIME'"
  178. ip_data="$ip_data\nDATE='$DATE'"
  179. echo -e "$ip_data" >$VESTA/data/ips/$ip
  180. chmod 660 $VESTA/data/ips/$ip
  181. }
  182. # Create ip address startup configuration
  183. create_ip_startup() {
  184. ip_data="# Added by vesta $SCRIPT\nDEVICE=$iface"
  185. ip_data="$ip_data\nBOOTPROTO=static\nONBOOT=yes\nIPADDR=$ip"
  186. ip_data="$ip_data\nNETMASK=$mask"
  187. echo -e "$ip_data" > $iconf-$iface
  188. }