ip.func 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  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 "$V_IPS/$ip" ]; then
  7. echo "Error: IP exist"
  8. log_event 'debug' "$E_EXISTS $V_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 "$V_IPS/$ip" ] || [ -z "$check_ifc" ]; then
  29. echo "Error: IP not exist"
  30. log_event 'debug' "$E_NOTEXIST $V_EVENT"
  31. exit $E_NOTEXIST
  32. fi
  33. }
  34. is_ip_key_empty() {
  35. key="$1"
  36. # Parsing ip
  37. string=$(cat $V_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 $V_EVENT"
  48. exit $E_EXISTS
  49. fi
  50. }
  51. update_sys_ip_value() {
  52. key="$1"
  53. value="$2"
  54. # Defining conf
  55. conf="$V_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 "$V_IPS/$ip" ]; then
  75. echo "Error: IP not exist"
  76. log_event 'debug' "$E_NOTEXIST $V_EVENT"
  77. exit $E_NOTEXIST
  78. fi
  79. # Parsing ip data
  80. ip_data=$(cat $V_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 [ 'vesta' = "$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 $V_EVENT"
  92. exit $E_FORBIDEN
  93. fi
  94. }
  95. is_sys_ip_owner() {
  96. # Parsing ip
  97. ip="$IP"
  98. ip_owner=$(grep 'OWNER=' $V_IPS/$ip|cut -f 2 -d \')
  99. if [ "$ip_owner" != "$user" ]; then
  100. echo "Error: IP not owned"
  101. log_event 'debug' "$E_FORBIDEN $V_EVENT"
  102. exit $E_FORBIDEN
  103. fi
  104. }
  105. get_ip_name() {
  106. # Prinitng name
  107. grep "NAME=" $V_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=" $V_IPS/$sip |cut -f 2 -d \')
  116. current_usr=$(grep "$usr_key=" $V_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 $V_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" $V_IPS/$ip
  138. sed -i "s/$usr_key='$current_usr'/$usr_key='$new_usr'/g" $V_IPS/$ip
  139. }
  140. decrease_ip_value() {
  141. sip=${1-ip}
  142. USER=$user
  143. web_key='U_WEB_DOMAINS'
  144. usr_key='U_SYS_USERS'
  145. # Parsing values
  146. current_web=$(grep "$web_key=" $V_IPS/$sip |cut -f 2 -d \')
  147. current_usr=$(grep "$usr_key=" $V_IPS/$sip |cut -f 2 -d \')
  148. # Checking result
  149. if [ -z "$current_web" ]; then
  150. echo "Error: Parsing error"
  151. log_event 'debug' "$E_PARSING $V_EVENT"
  152. exit $E_PARSING
  153. fi
  154. # -1 webdomain
  155. new_web=$((current_web - 1))
  156. # -1 user
  157. check_ip=$(grep $sip $V_USERS/$user/web.conf |wc -l)
  158. if [ "$check_ip" -lt 2 ]; then
  159. new_usr=$(echo "$current_usr" |\
  160. sed -e "s/,/\n/g"|\
  161. sed -e "s/^$user$//g"|\
  162. sed -e "/^$/d"|\
  163. sed -e ':a;N;$!ba;s/\n/,/g')
  164. else
  165. new_usr="$current_usr"
  166. fi
  167. # Changing config
  168. sed -i "s/$web_key='$current_web'/$web_key='$new_web'/g" $V_IPS/$sip
  169. sed -i "s/$usr_key='$current_usr'/$usr_key='$new_usr'/g" $V_IPS/$sip
  170. }
  171. get_sys_ip_value() {
  172. key="$1"
  173. # Parsing domains
  174. string=$( cat $V_IPS/$ip )
  175. # Parsing key=value
  176. for keys in $string; do
  177. eval ${keys%%=*}=${keys#*=}
  178. done
  179. # Self reference
  180. eval value="$key"
  181. # Print value
  182. echo "$value"
  183. }
  184. get_current_interface() {
  185. # Parsing ifconfig
  186. i=$(/sbin/ifconfig |grep -B1 "addr:$ip "|head -n 1 |cut -f 1 -d ' ')
  187. # Checking result
  188. if [ -z "$i" ]; then
  189. echo "Error: IP not exist"
  190. log_event 'debug' "$E_NOTEXIST $V_EVENT"
  191. exit $E_NOTEXIST
  192. fi
  193. # Checking ip is alias
  194. check_alias=$(echo $i| cut -s -f 2 -d :)
  195. if [ -z "$check_alias" ]; then
  196. echo "Error: Main IP on interface"
  197. log_event 'debug' "$E_FORBIDEN $V_EVENT"
  198. exit $E_FORBIDEN
  199. fi
  200. echo "$i"
  201. }
  202. ip_add_vesta() {
  203. # Filling ip values
  204. ip_data="OWNER='$user'"
  205. ip_data="$ip_data\nSTATUS='$ip_status'"
  206. ip_data="$ip_data\nNAME='$ip_name'"
  207. ip_data="$ip_data\nU_SYS_USERS=''"
  208. ip_data="$ip_data\nU_WEB_DOMAINS='0'"
  209. ip_data="$ip_data\nINTERFACE='$interface'"
  210. ip_data="$ip_data\nNETMASK='$mask'"
  211. ip_data="$ip_data\nDATE='$V_DATE'"
  212. # Adding ip
  213. echo -e "$ip_data" >$V_IPS/$ip
  214. }
  215. ip_add_startup() {
  216. # Filling ip values
  217. ip_data="# Added by vesta $V_SCRIPT"
  218. ip_data="$ip_data\nDEVICE=$iface"
  219. ip_data="$ip_data\nBOOTPROTO=static\nONBOOT=yes"
  220. ip_data="$ip_data\nIPADDR=$ip"
  221. ip_data="$ip_data\nNETMASK=$mask"
  222. # Adding ip
  223. echo -e "$ip_data" >$iconf-$iface
  224. }
  225. ip_owner_search(){
  226. for ip in $(ls $V_IPS/); do
  227. check_owner=$(grep "OWNER='$user'" $V_IPS/$ip)
  228. if [ ! -z "$check_owner" ]; then
  229. echo "$ip"
  230. fi
  231. done
  232. }