ip.sh 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. is_sys_ip_free() {
  2. # Parsing system ips
  3. ip_list=$(/sbin/ifconfig|grep 'inet addr:'|cut -f 2 -d ':'|cut -f 1 -d " ")
  4. # Checking ip existance
  5. ip_check=$(echo "$ip_list"|grep -w "$ip")
  6. if [ -n "$ip_check" ] || [ -e "$VESTA/data/ips/$ip" ]; then
  7. echo "Error: IP exist"
  8. log_event 'debug' "$E_EXISTS $EVENT"
  9. exit $E_EXISTS
  10. fi
  11. }
  12. get_next_interface_number() {
  13. # Parsing ifconfig
  14. i=$(/sbin/ifconfig -a |grep -w "$interface"|cut -f1 -d ' '|\
  15. tail -n 1|cut -f 2 -d :)
  16. # Checking result
  17. if [ "$i" = "$interface" ]; then
  18. n=0
  19. else
  20. n=$((i + 1))
  21. fi
  22. echo ":$n"
  23. }
  24. is_sys_ip_valid() {
  25. # Parsing ifconfig
  26. check_ifc=$(/sbin/ifconfig |grep "inet addr:$ip")
  27. # Checking ip existance
  28. if [ ! -e "$VESTA/data/ips/$ip" ] || [ -z "$check_ifc" ]; then
  29. echo "Error: IP not exist"
  30. log_event 'debug' "$E_NOTEXIST $EVENT"
  31. exit $E_NOTEXIST
  32. fi
  33. }
  34. is_ip_key_empty() {
  35. key="$1"
  36. # Parsing ip
  37. string=$(cat $VESTA/data/ips/$ip )
  38. # Parsing key=value
  39. for keys in $string; do
  40. eval ${keys%%=*}=${keys#*=}
  41. done
  42. # Self reference
  43. eval value="$key"
  44. # Checkng key
  45. if [ ! -z "$value" ] && [ "$value" != '0' ]; then
  46. echo "Error: value is not empty = $value "
  47. log_event 'debug' "$E_EXISTS $EVENT"
  48. exit $E_EXISTS
  49. fi
  50. }
  51. update_sys_ip_value() {
  52. key="$1"
  53. value="$2"
  54. # Defining conf
  55. conf="$VESTA/data/ips/$ip"
  56. # Parsing conf
  57. str=$(cat $conf)
  58. # Reading key=values
  59. for keys in $str; do
  60. eval ${keys%%=*}=${keys#*=}
  61. done
  62. # Define clean key
  63. c_key=$(echo "${key//$/}")
  64. eval old="${key}"
  65. # Escaping slashes
  66. old=$(echo "$old" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
  67. new=$(echo "$value" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
  68. # Updating conf
  69. sed -i "$str_number s/$c_key='${old//\*/\\*}'/$c_key='${new//\*/\\*}'/g"\
  70. $conf
  71. }
  72. is_ip_avalable() {
  73. # Checking ip existance
  74. if [ ! -e "$VESTA/data/ips/$ip" ]; then
  75. echo "Error: IP not exist"
  76. log_event 'debug' "$E_NOTEXIST $EVENT"
  77. exit $E_NOTEXIST
  78. fi
  79. # Parsing ip data
  80. ip_data=$(cat $VESTA/data/ips/$ip)
  81. ip_owner=$(echo "$ip_data" | grep 'OWNER=' | cut -f 2 -d \' )
  82. ip_status=$(echo "$ip_data" | grep 'STATUS=' | cut -f 2 -d \' )
  83. # Parsing user data
  84. if [ 'admin' = "$ip_owner" ] && [ "$ip_status" = 'shared' ]; then
  85. ip_shared='yes'
  86. else
  87. ip_shared='no'
  88. fi
  89. if [ "$ip_owner" != "$user" ] && [ "$ip_shared" != 'yes' ]; then
  90. echo "Error: ip not owned by user"
  91. log_event 'debug' "$E_FORBIDEN $EVENT"
  92. exit $E_FORBIDEN
  93. fi
  94. }
  95. is_sys_ip_owner() {
  96. # Parsing ip
  97. ip="$IP"
  98. ip_owner=$(grep 'OWNER=' $VESTA/data/ips/$ip|cut -f 2 -d \')
  99. if [ "$ip_owner" != "$user" ]; then
  100. echo "Error: IP not owned"
  101. log_event 'debug' "$E_FORBIDEN $EVENT"
  102. exit $E_FORBIDEN
  103. fi
  104. }
  105. get_ip_name() {
  106. # Prinitng name
  107. grep "NAME=" $VESTA/data/ips/$ip |cut -f 2 -d \'
  108. }
  109. increase_ip_value() {
  110. sip=${1-ip}
  111. USER=$user
  112. web_key='U_WEB_DOMAINS'
  113. usr_key='U_SYS_USERS'
  114. # Parsing values
  115. current_web=$(grep "$web_key=" $VESTA/data/ips/$sip |cut -f 2 -d \')
  116. current_usr=$(grep "$usr_key=" $VESTA/data/ips/$sip |cut -f 2 -d \')
  117. # Checking result
  118. if [ -z "$current_web" ]; then
  119. echo "Error: Parsing error"
  120. log_event 'debug' "$E_PARSING $EVENT"
  121. exit $E_PARSING
  122. fi
  123. # +1 webdomain
  124. new_web=$((current_web + 1))
  125. # +1 user
  126. if [ -z "$current_usr" ]; then
  127. new_usr="$USER"
  128. else
  129. check_usr=$(echo -e "${current_usr//,/\n}" |grep -w $USER)
  130. if [ -z "$check_usr" ]; then
  131. new_usr="$current_usr,$USER"
  132. else
  133. new_usr="$current_usr"
  134. fi
  135. fi
  136. # Changing config
  137. sed -i "s/$web_key='$current_web'/$web_key='$new_web'/g" \
  138. $VESTA/data/ips/$ip
  139. sed -i "s/$usr_key='$current_usr'/$usr_key='$new_usr'/g" \
  140. $VESTA/data/ips/$ip
  141. }
  142. decrease_ip_value() {
  143. sip=${1-ip}
  144. USER=$user
  145. web_key='U_WEB_DOMAINS'
  146. usr_key='U_SYS_USERS'
  147. # Parsing values
  148. current_web=$(grep "$web_key=" $VESTA/data/ips/$sip |cut -f 2 -d \')
  149. current_usr=$(grep "$usr_key=" $VESTA/data/ips/$sip |cut -f 2 -d \')
  150. # Checking result
  151. if [ -z "$current_web" ]; then
  152. echo "Error: Parsing error"
  153. log_event 'debug' "$E_PARSING $EVENT"
  154. exit $E_PARSING
  155. fi
  156. # -1 webdomain
  157. new_web=$((current_web - 1))
  158. # -1 user
  159. check_ip=$(grep $sip $USER_DATA/web.conf |wc -l)
  160. if [ "$check_ip" -lt 2 ]; then
  161. new_usr=$(echo "$current_usr" |\
  162. sed -e "s/,/\n/g"|\
  163. sed -e "s/^$user$//g"|\
  164. sed -e "/^$/d"|\
  165. sed -e ':a;N;$!ba;s/\n/,/g')
  166. else
  167. new_usr="$current_usr"
  168. fi
  169. # Changing config
  170. sed -i "s/$web_key='$current_web'/$web_key='$new_web'/g" \
  171. $VESTA/data/ips/$sip
  172. sed -i "s/$usr_key='$current_usr'/$usr_key='$new_usr'/g" \
  173. $VESTA/data/ips/$sip
  174. }
  175. get_sys_ip_value() {
  176. key="$1"
  177. # Parsing domains
  178. string=$( cat $VESTA/data/ips/$ip )
  179. # Parsing key=value
  180. for keys in $string; do
  181. eval ${keys%%=*}=${keys#*=}
  182. done
  183. # Self reference
  184. eval value="$key"
  185. # Print value
  186. echo "$value"
  187. }
  188. get_current_interface() {
  189. # Parsing ifconfig
  190. i=$(/sbin/ifconfig |grep -B1 "addr:$ip "|head -n 1 |cut -f 1 -d ' ')
  191. # Checking result
  192. if [ -z "$i" ]; then
  193. echo "Error: IP not exist"
  194. log_event 'debug' "$E_NOTEXIST $EVENT"
  195. exit $E_NOTEXIST
  196. fi
  197. # Checking ip is alias
  198. check_alias=$(echo $i| cut -s -f 2 -d :)
  199. if [ -z "$check_alias" ]; then
  200. echo "Error: Main IP on interface"
  201. log_event 'debug' "$E_FORBIDEN $EVENT"
  202. exit $E_FORBIDEN
  203. fi
  204. echo "$i"
  205. }
  206. ip_add_vesta() {
  207. # Filling ip values
  208. ip_data="OWNER='$user'"
  209. ip_data="$ip_data\nSTATUS='$ip_status'"
  210. ip_data="$ip_data\nNAME='$ip_name'"
  211. ip_data="$ip_data\nU_SYS_USERS=''"
  212. ip_data="$ip_data\nU_WEB_DOMAINS='0'"
  213. ip_data="$ip_data\nINTERFACE='$interface'"
  214. ip_data="$ip_data\nNETMASK='$mask'"
  215. ip_data="$ip_data\nDATE='$DATE'"
  216. # Adding ip
  217. echo -e "$ip_data" >$VESTA/data/ips/$ip
  218. chmod 660 $VESTA/data/ips/$ip
  219. }
  220. ip_add_startup() {
  221. # Filling ip values
  222. ip_data="# Added by vesta $SCRIPT"
  223. ip_data="$ip_data\nDEVICE=$iface"
  224. ip_data="$ip_data\nBOOTPROTO=static\nONBOOT=yes"
  225. ip_data="$ip_data\nIPADDR=$ip"
  226. ip_data="$ip_data\nNETMASK=$mask"
  227. # Adding ip
  228. echo -e "$ip_data" >$iconf-$iface
  229. }
  230. ip_owner_search(){
  231. for ip in $(ls $VESTA/data/ips/); do
  232. check_owner=$(grep "OWNER='$user'" $VESTA/data/ips/$ip)
  233. if [ ! -z "$check_owner" ]; then
  234. echo "$ip"
  235. fi
  236. done
  237. }