Guest User

zt.sh

a guest
Jan 24th, 2017
625
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 172.17 KB | None | 0 0
  1. #!/bin/bash
  2. #***********************************************************************
  3. # Zerotruth - interface for Zeroshell Captive Portal
  4. # Version: 4.0
  5. # Copyright (C) 2012-2017 Nello Dalla Costa. All rights reserved.
  6. # License: GNU/GPL, see COPYING
  7. # This file is part of Zerotruth
  8. # Zerotruth is free software: you can redistribute it and/or modify
  9. # it under the terms of the GNU General Public License as published by
  10. # the Free Software Foundation, either version 3 of the License, or
  11. # (at your option) any later version.
  12. # Zerotruth is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU General Public License for more details.
  16. #***********************************************************************
  17. source /DB/apache2/cgi-bin/zerotruth/conf/zt.config
  18. source /DB/apache2/cgi-bin/zerotruth/functions.sh
  19. source $C_ZT_DIR/language/$C_LANGUAGE/$C_LANGUAGE.sh
  20.  
  21. if [ "$1" == "SaveClass" ]; then
  22. if [ ! -d $C_CLASSES_DIR/$2 ];then
  23. mkdir $C_CLASSES_DIR/$2
  24. fi
  25. echo "$3" > $C_CLASSES_DIR/$2/CostM
  26. echo "$4" > $C_CLASSES_DIR/$2/CostH
  27. echo "$5" > $C_CLASSES_DIR/$2/MB
  28. echo "$6" > $C_CLASSES_DIR/$2/Hours
  29. echo "$7" > $C_CLASSES_DIR/$2/Mbits
  30. echo "$8" > $C_CLASSES_DIR/$2/MbitsUp
  31. echo "$9" > $C_CLASSES_DIR/$2/ChargeType
  32. echo "${10}" > $C_CLASSES_DIR/$2/NumClass
  33. echo "${11}" > $C_CLASSES_DIR/$2/FreeTime
  34. echo "${12}" > $C_CLASSES_DIR/$2/InterfacesClass
  35. echo "${13}" > $C_CLASSES_DIR/$2/ShaperType
  36. echo "${14}" > $C_CLASSES_DIR/$2/Days
  37. echo "${15}" > $C_CLASSES_DIR/$2/Range1
  38. echo "${16}" > $C_CLASSES_DIR/$2/Range2
  39. echo "${17}" > $C_CLASSES_DIR/$2/HoursDay
  40. echo "${18}" > $C_CLASSES_DIR/$2/HoursMonth
  41. echo "${19}" > $C_CLASSES_DIR/$2/MBDay
  42. echo "$(echo ${20} | cut -d'-' -f1)" > $C_CLASSES_DIR/$2/MBMonth
  43. if [ -n "$C_SIM_CONN_CLASSES" ];then
  44. CONSIM=$(echo ${20} | cut -d'-' -f2)
  45. if [ -n "$CONSIM" ];then
  46. CONSIM="yes"
  47. else
  48. CONSIM="no"
  49. fi
  50. echo "$CONSIM" > $C_CLASSES_DIR/$2/Simultaneous
  51. fi
  52. BLOCKED=$(echo ${20} | cut -d'-' -f3)
  53. if [ -n "$BLOCKED" ];then
  54. BLOCKED="yes"
  55. else
  56. BLOCKED="no"
  57. fi
  58. echo "$BLOCKED" > $C_CLASSES_DIR/$2/Blocked
  59. if [ -n "${14}" ];then
  60. DAYS="$( echo ${14} | sed 's/\+/ /g' | sed 's/^[ \t]*//' | sed 's/[ \t]*$//' | sed 's/ /,/g')"
  61. CC="yes"
  62. fi
  63. if [ -n "${15}" ];then
  64. LIMIT_RANGE1="${15}"
  65. HOUR_START="$(echo "$LIMIT_RANGE1" | cut -d':' -f1 | $C_ZT_BIN_DIR/bc)"
  66. MINUTES_START="$(echo "$LIMIT_RANGE1" | cut -d':' -f2 | cut -d'-' -f1 | $C_ZT_BIN_DIR/bc)"
  67. HOUR_STOP="$(echo "$LIMIT_RANGE1" | cut -d'-' -f2 | cut -d':' -f1 | $C_ZT_BIN_DIR/bc)"
  68. MINUTES_STOP="$(echo "$LIMIT_RANGE1" | cut -d':' -f3 | $C_ZT_BIN_DIR/bc)"
  69. CC="yes"
  70. fi
  71. if [[ -n "${14}" && -z "${15}" ]];then
  72. HOUR_START=0
  73. MINUTES_START=0
  74. HOUR_STOP=23
  75. MINUTES_STOP=59
  76. CC="yes"
  77. fi
  78. if [ -n "$CC" ];then
  79. $C_ZT_BIN_DIR/zt "ClassCron" "$2" "$DAYS" "$HOUR_START" "$MINUTES_START" "$HOUR_STOP" "$MINUTES_STOP"
  80. fi
  81. if [ -n "${16}" ];then
  82. LIMIT_RANGE2="${16}"
  83. HOUR_START_SEC="$(echo "$LIMIT_RANGE2" | cut -d':' -f1 | $C_ZT_BIN_DIR/bc)"
  84. MINUTES_START_SEC="$(echo "$LIMIT_RANGE2" | cut -d':' -f2 | cut -d'-' -f1 | $C_ZT_BIN_DIR/bc)"
  85. HOUR_STOP_SEC="$(echo "$LIMIT_RANGE2" | cut -d'-' -f2 | cut -d':' -f1 | $C_ZT_BIN_DIR/bc)"
  86. MINUTES_STOP_SEC="$(echo "$LIMIT_RANGE2" | cut -d':' -f3 | $C_ZT_BIN_DIR/bc)"
  87. $C_ZT_BIN_DIR/zt "ClassCron" "$2" "$DAYS" "$HOUR_START_SEC" "$MINUTES_START_SEC" "$HOUR_STOP_SEC" "$MINUTES_STOP_SEC" "SEC"
  88. fi
  89. exit
  90. fi
  91.  
  92. if [ "$1" == "UpdateClass" ]; then
  93. CLASS="$2"
  94. echo "$3" > $C_CLASSES_DIR/$CLASS/CostM
  95. echo "$4" > $C_CLASSES_DIR/$CLASS/CostH
  96. echo "$5" > $C_CLASSES_DIR/$CLASS/MB
  97. echo "$6" > $C_CLASSES_DIR/$CLASS/Hours
  98. echo "$7" > $C_CLASSES_DIR/$CLASS/Mbits
  99. echo "$8" > $C_CLASSES_DIR/$CLASS/MbitsUp
  100. echo "$9" > $C_CLASSES_DIR/$CLASS/ChargeType
  101. echo "${10}" > $C_CLASSES_DIR/$CLASS/NumClass
  102. echo "${11}" > $C_CLASSES_DIR/$CLASS/FreeTime
  103. echo "${12}" > $C_CLASSES_DIR/$CLASS/InterfacesClass
  104. echo "${13}" > $C_CLASSES_DIR/$CLASS/ShaperType
  105. echo "${14}" > $C_CLASSES_DIR/$CLASS/Days
  106. echo "${15}" > $C_CLASSES_DIR/$CLASS/Range1
  107. echo "${16}" > $C_CLASSES_DIR/$CLASS/Range2
  108. echo "${17}" > $C_CLASSES_DIR/$CLASS/HoursDay
  109. echo "${18}" > $C_CLASSES_DIR/$CLASS/HoursMonth
  110. echo "${19}" > $C_CLASSES_DIR/$CLASS/MBDay
  111. echo "$(echo ${20} | cut -d'-' -f1)" > $C_CLASSES_DIR/$2/MBMonth
  112. if [ -n "$C_SIM_CONN_CLASSES" ];then
  113. CONSIM=$(echo ${20} | cut -d'-' -f2)
  114. if [ -n "$CONSIM" ];then
  115. CONSIM="yes"
  116. else
  117. CONSIM="no"
  118. fi
  119. echo "$CONSIM" > $C_CLASSES_DIR/$CLASS/Simultaneous
  120. fi
  121. BLOCKED=$(echo ${20} | cut -d'-' -f3)
  122. if [ -n "$BLOCKED" ];then
  123. BLOCKED="yes"
  124. else
  125. BLOCKED="no"
  126. fi
  127. echo "$BLOCKED" > $C_CLASSES_DIR/$CLASS/Blocked
  128. USERSCLASS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=RADIUS,$C_LDAPBASE" radiusUserCategory=$CLASS cn | grep -e '^cn: ' | sed 's/^cn: //g')
  129. for USERNAME in $USERSCLASS;do
  130. LCODE=""
  131. if [ -d $C_ACCT_DIR/entries/$USERNAME ];then
  132. if [ -f $C_ACCT_DIR/entries/$USERNAME/MB ] && [ -n "$(cat $C_ACCT_DIR/classes/$CLASS/MB)" ];then
  133. TRAFFIC="$(cat $C_ACCT_DIR/entries/$USERNAME/MB)"
  134. LIMITMB="$(cat $C_ACCT_DIR/classes/$CLASS/MB)"
  135. LIMITMB=$((LIMITMB*1048576))
  136. if [ $TRAFFIC -gt $LIMITMB ];then
  137. LCODE="M"
  138. fi
  139. fi
  140. if [ -f $C_ACCT_DIR/entries/$USERNAME/Time ] && [ -n "$(cat $C_ACCT_DIR/classes/$CLASS/Hours)" ];then
  141. TIME="$(cat $C_ACCT_DIR/entries/$USERNAME/Time)"
  142. LIMITH="$(cat $C_ACCT_DIR/classes/$CLASS/Hours)"
  143. LIMITH=$(($LIMITH*3600))
  144. if [ $TIME -gt $LIMITH ];then
  145. LCODE="T"
  146. fi
  147. fi
  148. if [ -f $C_ACCT_DIR/credits/$USERNAME/Credit ];then
  149. CREDIT="$(cat $C_ACCT_DIR/credits/$USERNAME/Credit)"
  150. [ "$CREDIT" != "freetime" ] && CREDIT=$(echo "$CREDIT" | awk '{printf("%.2f\n", $0)}')
  151. CHARGETYPE="$(cat $C_ACCT_DIR/classes/$CLASS/ChargeType)"
  152. FREETIME="$(cat $C_ACCT_DIR/classes/$CLASS/FreeTime)"
  153. if [[ -z "$CREDIT" || "$CREDIT" == "0.00" || $(echo "$CREDIT" | grep '^-') ]] && [[ "$CHARGETYPE" == "pre" && "$CREDIT" != "freetime" ]];then
  154. LCODE="C"
  155. fi
  156. fi
  157. fi
  158. if [ -n "$LCODE" ];then
  159. $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "no" "$LCODE"
  160. CONNECTED=$(ls $C_CP_DIR/Connected )
  161. for IP in "$CONNECTED";do
  162. if [ $( cat $C_CP_DIR/Connected/$IP/User | cut -d'@' -f1) == "$USERNAME" ];then
  163. $C_ZT_BIN_DIR/zt "Disconnetti" "$IP" "$USERNAME"
  164. fi
  165. done
  166. else
  167. $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "yes" ""
  168. fi
  169. $C_ZT_BIN_DIR/zt "ControlLimits" "$USERNAME"
  170. done
  171. if [ -n "${14}" ];then
  172. DAYS="$( echo ${14} | sed 's/\+/ /g' | sed 's/\+/ /g' | sed 's/^[ \t]*//' | sed 's/[ \t]*$//' | sed 's/ /,/g')"
  173. CC="yes"
  174. fi
  175. if [ -n "${15}" ];then
  176. LIMIT_RANGE1="${15}"
  177. HOUR_START="$(echo "$LIMIT_RANGE1" | cut -d':' -f1 | $C_ZT_BIN_DIR/bc)"
  178. MINUTES_START="$(echo "$LIMIT_RANGE1" | cut -d':' -f2 | cut -d'-' -f1 | $C_ZT_BIN_DIR/bc)"
  179. HOUR_STOP="$(echo "$LIMIT_RANGE1" | cut -d'-' -f2 | cut -d':' -f1 | $C_ZT_BIN_DIR/bc)"
  180. MINUTES_STOP="$(echo "$LIMIT_RANGE1" | cut -d':' -f3 | $C_ZT_BIN_DIR/bc)"
  181. CC="yes"
  182. fi
  183. if [[ -n "${14}" && -z "${15}" ]];then
  184. HOUR_START=0
  185. MINUTES_START=0
  186. HOUR_STOP=23
  187. MINUTES_STOP=59
  188. CC="yes"
  189. fi
  190. if [ -n "$CC" ];then
  191. $C_ZT_BIN_DIR/zt "ClassCron" "$2" "$DAYS" "$HOUR_START" "$MINUTES_START" "$HOUR_STOP" "$MINUTES_STOP"
  192. else
  193. CLASS="$2"
  194. if [ -d $C_CRON_SCRIPTS_DIR/ZT${CLASS}START-Cron ];then
  195. rm -rf $C_CRON_SCRIPTS_DIR/ZT${CLASS}START-Cron
  196. CONTROLDEL="yes"
  197. fi
  198. if [ -d $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP-Cron ];then
  199. rm -rf $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP-Cron
  200. CONTROLDEL="yes"
  201. fi
  202. fi
  203. if [ -n "${16}" ];then
  204. LIMIT_RANGE2="${16}"
  205. HOUR_START_SEC="$(echo "$LIMIT_RANGE2" | cut -d':' -f1 | $C_ZT_BIN_DIR/bc)"
  206. MINUTES_START_SEC="$(echo "$LIMIT_RANGE2" | cut -d':' -f2 | cut -d'-' -f1 | $C_ZT_BIN_DIR/bc)"
  207. HOUR_STOP_SEC="$(echo "$LIMIT_RANGE2" | cut -d'-' -f2 | cut -d':' -f1 | $C_ZT_BIN_DIR/bc)"
  208. MINUTES_STOP_SEC="$(echo "$LIMIT_RANGE2" | cut -d':' -f3 | $C_ZT_BIN_DIR/bc)"
  209. $C_ZT_BIN_DIR/zt "ClassCron" "$2" "$DAYS" "$HOUR_START_SEC" "$MINUTES_START_SEC" "$HOUR_STOP_SEC" "$MINUTES_STOP_SEC" "SEC"
  210. else
  211. CLASS="$2"
  212. if [ -d $C_CRON_SCRIPTS_DIR/ZT${CLASS}STARTSEC-Cron ];then
  213. rm -rf $C_CRON_SCRIPTS_DIR/ZT${CLASS}STARTSEC-Cron
  214. CONTROLDEL="yes"
  215. fi
  216. if [ -d $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOPSEC-Cron ];then
  217. rm -rf $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOPSEC-Cron
  218. CONTROLDEL="yes"
  219. fi
  220. fi
  221. if [ -n "$CONTROLDEL" ];then
  222. $C_ZT_BIN_DIR/zt "KillProg" "cron"
  223. rm -f /var/run/cron.pid
  224. /etc/init.d/crond start > /dev/null
  225. fi
  226. exit
  227. fi
  228.  
  229. if [ "$1" == "Start" ];then
  230. CLASS="$2"
  231. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" radiusUserCategory=$CLASS cn )
  232. USERS=$(echo "$QUERY" | sed -n '/cn:/p' | awk '{print $2}')
  233. for USER in $USERS;do
  234. WAIT_AS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=PEOPLE,$C_LDAPBASE" uid=$USER gecos | grep '^gecos' | awk '{print $2}')
  235. if [ "$WAIT_AS" != "wait_asterisk" ];then
  236. PASS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USER sn | grep '^sn' | awk '{print $NF}')
  237. CONTROL_LOCK=$(echo "$PASS" | cut -sd'-' -f2)
  238. CONTROL_LOCKORE=$(echo "$CONTROL_LOCK" | grep "LOCKORE")
  239. if [ -n "$CONTROL_LOCK" ] && [ -z "$CONTROL_LOCKORE" ];then
  240. PASS_FREE=$(echo "$PASS" | cut -d'-' -f1)
  241. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS_FREE"
  242. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT >/dev/null
  243. fi
  244. /usr/bin/logger -t ZT.system "UnBlocked $USER - Cron"
  245. fi
  246. done
  247. fi
  248.  
  249. if [ "$1" == "Stop" ];then
  250. CLASS="$2"
  251. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" radiusUserCategory=$CLASS cn )
  252. USERS=$(echo "$QUERY" | sed -n '/cn:/p' | awk '{ print $2 }')
  253. for USER in $USERS;do
  254. WAIT_AS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=PEOPLE,$C_LDAPBASE" uid=$USER gecos | grep '^gecos' | awk '{print $NF}')
  255. if [ "$WAIT_AS" != "wait_asterisk" ];then
  256. for IP in $(ls $C_CP_DIR/Connected );do
  257. if [ $(cat $C_CP_DIR/Connected/$IP/User | cut -d'@' -f1 ) == "$USER" ];then
  258. $C_ZT_BIN_DIR/zt "Disconnetti" "$IP" "$USER"
  259. fi
  260. done
  261. PASS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USER sn | grep '^sn' | awk '{print $NF}')
  262. CONTROL_LOCK=$(echo "$PASS" | cut -sd'-' -f2)
  263. if [ -z "$CONTROL_LOCK" ] ;then
  264. PASS_LOCK="$PASS-$RANDOM"
  265. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS_LOCK"
  266. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT >/dev/null
  267. fi
  268. /usr/bin/logger -t ZT.system "Blocked $USER - Cron"
  269. fi
  270. done
  271. fi
  272.  
  273. if [ "$1" == "StartPopup" ];then
  274. $C_ZT_BIN_DIR/zt "Salva" "yes" "$C_CP_DIR/Auth/Custom/PopupActive"
  275. fi
  276.  
  277. if [ "$1" == "StopPopup" ];then
  278. $C_ZT_BIN_DIR/zt "Salva" "no" "$C_CP_DIR/Auth/Custom/PopupActive"
  279. fi
  280.  
  281. if [ "$1" == "CronAD" ]; then
  282. rm -rf $C_CRON_SCRIPTS_DIR/ZTcronad-Cron 2>/dev/null > /dev/null
  283. if [ -n "$2" ];then
  284. mkdir $C_CRON_SCRIPTS_DIR/ZTcronad-Cron
  285. mkdir $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron
  286. echo "Cron ZTcronad" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/Description
  287. echo "yes" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/Enabled
  288. echo "$C_ZT_SCRIPTS_DIR/blockhosts.sh" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/File
  289. chmod 755 $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/File
  290. if [ "$2" == "1" ];then
  291. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/DoW
  292. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/DoM
  293. fi
  294. if [ "$2" == "2" ];then
  295. echo "1" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/DoW
  296. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/DoM
  297. fi
  298. if [ "$2" == "3" ];then
  299. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/DoW
  300. echo "1" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/DoM
  301. fi
  302. echo "0" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/Hour
  303. echo "10" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/Minute
  304. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/Month
  305. echo "" > $C_CRON_SCRIPTS_DIR/ZTcronad-Cron/cron/Step
  306. chown -R root:root $C_CRON_SCRIPTS_DIR/ZTcronad-Cron
  307. else
  308. if [ -n "$(cat /etc/hosts | grep 'END BLOCKED HOSTS')" ];then
  309. cat /etc/hosts | sed -n "/END BLOCKED HOSTS/,//p" > /tmp/blockhosts
  310. sed -i "/END BLOCKED HOSTS/d" /tmp/blockhosts
  311. mv -f /tmp/blockhosts /etc/hosts
  312. sed -i "s/^C_UPDATES_AD.*/C_UPDATES_AD=\"\"/g" $C_ZT_CONF_DIR/zt.config
  313. fi
  314. fi
  315. fi
  316.  
  317. if [ "$1" == "CronBk" ]; then
  318. rm -r -f $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron 2>/dev/null > /dev/null
  319. if [ -n "$2" ];then
  320. mkdir $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron
  321. mkdir $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron
  322. echo "Cron ZTcronbk" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/Description
  323. echo "yes" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/Enabled
  324. echo "$C_ZT_SCRIPTS_DIR/startbk.sh" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/File
  325. chmod 755 $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/File
  326. if [ "$2" == "1" ];then
  327. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/DoW
  328. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/DoM
  329. fi
  330. if [ "$2" == "2" ];then
  331. echo "1" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/DoW
  332. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/DoM
  333. fi
  334. if [ "$2" == "3" ];then
  335. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/DoW
  336. echo "1" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/DoM
  337. fi
  338. echo "0" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/Hour
  339. echo "1" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/Minute
  340. echo "*" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/Month
  341. echo "" > $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron/cron/Step
  342. chown -R root:root $C_CRON_SCRIPTS_DIR/ZTcronbk-Cron
  343. fi
  344. fi
  345.  
  346. if [ "$1" == "CronSyncRemote" ]; then
  347. rm -r -f $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron 2>/dev/null > /dev/null
  348. if [ -n "$3" ];then
  349. mkdir $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron
  350. mkdir $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/cron
  351. echo "Cron ZTSyncRemote$2" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/Description
  352. echo "yes" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/Enabled
  353. echo "$C_ZT_SCRIPTS_DIR/SyncRemote.sh $2" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/File
  354. chmod 755 $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/File
  355. echo "*" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/cron/DoW
  356. echo "*" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/cron/DoM
  357. echo "$3" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/cron/Hour
  358. echo "$4" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/cron/Minute
  359. echo "*" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/cron/Month
  360. echo "" > $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron/cron/Step
  361. chown -R root:root $C_CRON_SCRIPTS_DIR/ZTSyncRemote$2-Cron
  362. fi
  363. fi
  364.  
  365. if [ "$1" == "BkNow" ]; then
  366. $C_ZT_SCRIPTS_DIR/startbk.sh "now" 2>/dev/null > /dev/null
  367. fi
  368.  
  369. if [ "$1" == "BkDownload" ]; then
  370. $C_ZT_SCRIPTS_DIR/startbknow.sh "$2" 2>/dev/null > /dev/null
  371. fi
  372.  
  373. if [ "$1" == "DownloadSessions" ]; then
  374. $C_ZT_SCRIPTS_DIR/downloadsessions.sh 2>/dev/null > /dev/null
  375. fi
  376.  
  377. if [ "$1" == "ClassCron" ]; then
  378. CLASS="$2"
  379. SEC="$8"
  380. if [ ! -d $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron ];then
  381. mkdir $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron
  382. mkdir $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/cron
  383. fi
  384. DOW="$3"
  385. [ -z "$DOW" ] && DOW="*"
  386. HSTART="$4"
  387. [ -z "$HSTART" ] && HSTART="*"
  388. MSTART="$5"
  389. [ -z "$MSTART" ] && MSTART="*"
  390. HSTOP="$6"
  391. [ -z "$HSTOP" ] && HSTOP="*"
  392. MSTOP="$7"
  393. [ -z "$MSTOP" ] && MSTOP="*"
  394. echo "Cron ZT${CLASS}START$SEC" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/Description
  395. echo "yes" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/Enabled
  396. echo "$C_ZT_BIN_DIR/zt Start $CLASS" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/File
  397. chmod 755 $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/File
  398. echo "$DOW" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/cron/DoW
  399. echo "*" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/cron/DoM
  400. echo "$HSTART" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/cron/Hour
  401. echo "$MSTART" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/cron/Minute
  402. echo "*" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/cron/Month
  403. echo "" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron/cron/Step
  404. if [ ! -d $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron ];then
  405. mkdir $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron
  406. mkdir $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/cron
  407. fi
  408. echo "Cron ZT${CLASS}STOP$SEC" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/Description
  409. echo "yes" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/Enabled
  410. echo "$C_ZT_BIN_DIR/zt Stop $CLASS" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/File
  411. chmod 755 $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/File
  412. echo "$DOW" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/cron/DoW
  413. echo "*" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/cron/DoM
  414. echo "$HSTOP" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/cron/Hour
  415. echo "$MSTOP" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/cron/Minute
  416. echo "*" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/cron/Month
  417. echo "" > $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron/cron/Step
  418. chown -R root:root $C_CRON_SCRIPTS_DIR/ZT${CLASS}START$SEC-Cron
  419. chown -R root:root $C_CRON_SCRIPTS_DIR/ZT${CLASS}STOP$SEC-Cron
  420. $C_ZT_BIN_DIR/zt "KillProg" "cron"
  421. rm -f /var/run/cron.pid
  422. /etc/init.d/crond start > /dev/nulll
  423. fi
  424.  
  425. if [ "$1" == "AggiornaCronPopup" ]; then
  426. if [ ! -d $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron ];then
  427. mkdir $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron
  428. mkdir $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/cron
  429. fi
  430. DOW="$3"
  431. [ "$3" == "ALL" ] && DOW="*"
  432. echo "Cron ZTPOPUPSTART" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/Description
  433. echo "yes" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/Enabled
  434. echo "$C_ZT_BIN_DIR/zt StartPopup $2" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/File
  435. chmod 755 $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/File
  436. echo "$DOW" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/cron/DoW
  437. echo "*" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/cron/DoM
  438. echo "$4" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/cron/Hour
  439. echo "$5" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/cron/Minute
  440. echo "*" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/cron/Month
  441. echo "" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron/cron/Step
  442. if [ ! -d $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron ];then
  443. mkdir $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron
  444. mkdir $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/cron
  445. fi
  446. echo "Cron ZTPOPUPSTOP" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/Description
  447. echo "yes" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/Enabled
  448. echo "$C_ZT_BIN_DIR/zt StopPopup $2" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/File
  449. chmod 755 $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/File
  450. echo "$DOW" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/cron/DoW
  451. echo "*" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/cron/DoM
  452. echo "$6" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/cron/Hour
  453. echo "$7" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/cron/Minute
  454. echo "*" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/cron/Month
  455. echo "" > $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron/cron/Step
  456. chown -R root:root $C_CRON_SCRIPTS_DIR/ZTPOPUPSTART-Cron
  457. chown -R root:root $C_CRON_SCRIPTS_DIR/ZTPOPUPSTOP-Cron
  458. fi
  459.  
  460. if [ "$1" == "RestartCron" ];then
  461. rm -f $C_CRON_TEMP_DIR
  462. echo "15 * * * * /root/kerbynet.cgi/scripts/cleantmp" >> $C_CRON_TEMP_DIR
  463. for C in $( ls $C_CRON_SCRIPTS_DIR );do
  464. if [ $( echo $C | grep Cron) ];then
  465. ENABLED=$( cat $C_CRON_SCRIPTS_DIR/$C/Enabled )
  466. if [ "$ENABLED" = "yes" ];then
  467. STEP="`cat $C_CRON_SCRIPTS_DIR/$C/cron/Step 2>/dev/null`"
  468. if [ -z "$STEP" ] ; then
  469. MINUTE=$( cat $C_CRON_SCRIPTS_DIR/$C/cron/Minute )
  470. HOUR=$( cat $C_CRON_SCRIPTS_DIR/$C/cron/Hour)
  471. DOM=$( cat $C_CRON_SCRIPTS_DIR/$C/cron/DoM)
  472. MONTH=$( cat $C_CRON_SCRIPTS_DIR/$C/cron/Month)
  473. DOW=$( cat $C_CRON_SCRIPTS_DIR/$C/cron/DoW)
  474. echo "$MINUTE $HOUR $DOM $MONTH $DOW $C_ZS_CRON_SCRIPT $C" >> $C_CRON_TEMP_DIR
  475. else
  476. UNIT=`echo $STEP | awk '{print $2}'`
  477. STEP=`echo $STEP | awk '{print $1}'`
  478. if [ "$UNIT" = m ] ; then
  479. echo "0-59/$STEP * * * * $C_ZS_SCRIPTS_DIR/runscript $C" >> $C_CRON_TEMP_DIR
  480. else
  481. if [ "$UNIT" = h ] ; then
  482. echo "0 0-23/$STEP * * * $C_ZS_SCRIPTS_DIR/runscript $C" >> $C_CRON_TEMP_DIR
  483. else
  484. echo "5 0 * * 0-6/$STEP $C_ZS_SCRIPTS_DIR/runscript $C" >> $C_CRON_TEMP_DIR
  485. fi
  486. fi
  487. fi
  488. fi
  489. fi
  490. done
  491. `chown root:root $C_CRON_TEMP_DIR`
  492. `chmod 666 $C_CRON_TEMP_DIR`
  493. `cat $C_CRON_TEMP_DIR > /var/cron/tabs/root`
  494. `crontab -u root /var/cron/tabs/root`
  495. `/root/kerbynet.cgi/scripts/terminate cron`
  496. `rm -f /var/run/cron.pid`
  497. cron
  498. rm -f $C_CRON_TEMP_DIR
  499. fi
  500.  
  501. if [ "$1" == "SLink" ];then
  502. ln -f -s "$2" "$3"
  503. chown root:root $3
  504. chmod 755 $3
  505. fi
  506.  
  507. if [ "$1" == "Salva" ];then
  508. echo "$2" > /tmp/zttemp
  509. tr -d '\015' < /tmp/zttemp > "$3"
  510. chown root:root $3
  511. chmod 755 $3
  512. fi
  513.  
  514. if [ "$1" == "Cancella" ];then
  515. rm -rf $2 2>/dev/null
  516. fi
  517.  
  518. if [ "$1" == "TmpSlap" ];then
  519. /usr/local/sbin/slapcat -b "$C_LDAPBASE" > /tmp/ldap_ldif
  520. echo "$(du -h /tmp/ldap_ldif | awk '{print $1}')"
  521. rm -f /tmp/ldap_ldif
  522. fi
  523.  
  524. if [ "$1" == "CreaCartella" ];then
  525. mkdir $2
  526. chown root:root $2
  527. chmod 755 $2
  528. fi
  529.  
  530. if [ "$1" == "Email" ];then
  531. echo "$3" > /tmp/emailtext.html
  532. lynx -dump /tmp/emailtext.html > /tmp/emailtextsend
  533. TEXT=$(echo $(cat /tmp/emailtextsend))
  534. echo -e "$TEXT" | $C_ZT_BIN_DIR/mutt -e "set realname=\"$C_HOTSPOT_NAME\"" -F $C_ZT_CONF_DIR/Muttrc -s "$2" "$4" 2>/tmp/erroremail >/dev/null
  535. rm -rf /tmp/emailtext.html
  536. rm -rf /tmp/emailtextsend
  537. fi
  538.  
  539. if [ "$1" == "CloseConnectPP" ];then
  540. IP="$2"
  541. MAC="$3"
  542. FILTER="-s $IP -m mac --mac-source $MAC"
  543. echo "$FILTER" > /DB/filter
  544. /usr/local/sbin/iptables -D CapPortWL $FILTER -j ACCEPT 2>/dev/null
  545. /usr/local/sbin/iptables -D CapPortOut -d $IP -j ACCEPT 2>/dev/null
  546. /usr/local/sbin/iptables -D CapProxyIn -s $IP -j ACCEPT 2>/dev/null
  547. /usr/local/sbin/iptables -D CapProxyOut -d $IP -j ACCEPT 2>/dev/null
  548. /usr/local/sbin/iptables -t nat -D CapPortHTTPS $FILTER -j ACCEPT 2>/dev/null
  549. exit
  550. fi
  551.  
  552. if [ "$1" == "KillCP" ];then
  553. kill -9 $(cat $C_ZT_DIR/tmp/CcpPid_$2)
  554. $C_ZT_BIN_DIR/zt "Cancella" "$C_ZT_DIR/tmp/CcpPid_$2"
  555. exit
  556. fi
  557.  
  558. if [ "$1" == "ConnectPP" ];then
  559. IP="$2"
  560. MAC="$3"
  561. CONTROL="$4"
  562. if [[ -z "$(cat $C_ZT_CONF_DIR/banmac | grep $MAC)" && "$CONTROL" == yes ]];then
  563. $C_ZT_BIN_DIR/zt "Aggiungi" "$MAC" "$C_ZT_CONF_DIR/tmp_banmac"
  564. fi
  565. if [ $(cat $C_ZT_CONF_DIR/tmp_banmac | grep -n $MAC | wc -l | awk '{print $1}') -gt $C_TIMES_PP ];then
  566. $C_ZT_BIN_DIR/zt "Aggiungi" "$MAC" "$C_ZT_CONF_DIR/banmac"
  567. $C_ZT_BIN_DIR/zt "RimuoviRiga" "$MAC" "$C_ZT_CONF_DIR/tmp_banmac"
  568. fi
  569. [ -n "$(cat $C_ZT_CONF_DIR/banmac | grep $MAC)" ] && CONTROL="no"
  570. [[ -z "$IP" || -z "$MAC" ]] && exit
  571. FILTER="-s $IP -m mac --mac-source $MAC"
  572. /usr/local/sbin/iptables -D CapPortWL $FILTER -j ACCEPT 2>/dev/null
  573. /usr/local/sbin/iptables -D CapPortOut -d $IP -j ACCEPT 2>/dev/null
  574. /usr/local/sbin/iptables -D CapProxyIn -s $IP -j ACCEPT 2>/dev/null
  575. /usr/local/sbin/iptables -D CapProxyOut -d $IP -j ACCEPT 2>/dev/null
  576. /usr/local/sbin/iptables -t nat -D CapPortHTTPS $FILTER -j ACCEPT 2>/dev/null
  577. if [ "$CONTROL" == yes ];then
  578. /usr/local/sbin/iptables -I CapPortWL 1 $FILTER -j ACCEPT
  579. /usr/local/sbin/iptables -I CapPortOut 1 -d $IP -j ACCEPT
  580. /usr/local/sbin/iptables -I CapProxyIn 1 -s $IP -j ACCEPT
  581. /usr/local/sbin/iptables -I CapProxyOut 1 -d $IP -j ACCEPT
  582. /usr/local/sbin/iptables -t nat -I CapPortHTTPS 1 $FILTER -j ACCEPT
  583. $C_ZT_SCRIPTS_DIR/controlconnectpp.sh $IP $MAC &
  584. fi
  585. exit
  586. fi
  587.  
  588. if [ "$1" == "DisconnettiClass" ];then
  589. CLASS="$2"
  590. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" radiusUserCategory=$CLASS cn)
  591. USERS=$(echo "$QUERY" | grep -e '^cn: ' | sed 's/^cn: //g')
  592. for USER in $USERS;do
  593. $C_ZT_BIN_DIR/zt "DisconnettiUsername" "$USER"
  594. done
  595. fi
  596.  
  597. if [ "$1" == "DisconnettiUsername" ];then
  598. USERNAME="$2"
  599. [ -z "$USERNAME" ] && exit
  600. if [ -n "$(ls $C_CP_DIR/Connected/)" ];then
  601. CONNECTED=$(ls $C_CP_DIR/Connected )
  602. for IP in "$CONNECTED";do
  603. if [ $( cat $C_CP_DIR/Connected/$IP/User | cut -d'@' -f1) == "$USERNAME" ];then
  604. $C_ZT_BIN_DIR/zt "Disconnetti" "$IP" "$USERNAME"
  605. fi
  606. done
  607. fi
  608. if [ -n "$C_CP_LOCAL_TYPE" ];then
  609. LR=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid=$USERNAME loginRemote | grep '^loginRemote:' | awk '{print $2}')
  610. if [ "$LR" != "?" ];then
  611. IPREMOTE="$(echo "$LR" | cut -d'-' -f2)"
  612. $C_ZT_BIN_DIR/zt "Disconnetti" "$IPREMOTE" "$USERNAME"
  613. fi
  614. fi
  615. fi
  616.  
  617. if [ "$1" == "Disconnetti" ];then
  618. IP="$2"
  619. USERNAME="$3"
  620. [ -z "$IP" ] && exit 1
  621. if [ -z "$USERNAME" ];then
  622. USERNAME="$(cat $C_CP_DIR/Connected/$IP/User | cut -d'@' -f1)"
  623. fi
  624. if [[ -n "$C_CP_REMOTE" && -z "$C_CP_LOCAL_AUTO" && "$3" != "NOREMOTE" ]];then
  625. $C_ZT_BIN_DIR/zt "LoginRemote" "no" "$IP" "$USERNAME"
  626. fi
  627. ACCT="`cat $C_SYSTEM/acct/Enabled 2>/dev/null`"
  628. cd $C_SYSTEM/cp/Connected || exit 2
  629. USER=`cat $IP/User 2>/dev/null`
  630. MAC=`cat $IP/MAC 2>/dev/null`
  631. # [ -z "$MAC" ] && MAC=$(arp -a | grep $IP | awk '{split ($0, a, " ");print a['4']}')
  632. # MAC=$(echo "$MAC" | sed 's/\(.*\)/\U\1/')
  633. [ "$IP" != "" ] && FILTER="-s $IP"
  634. [ "$MAC" != "" ] && FILTER="$FILTER -m mac --mac-source $MAC"
  635. /usr/local/sbin/iptables -D CapPortWL $FILTER -j ACCEPT 2>/dev/null
  636. /usr/local/sbin/iptables -D CapPortOut -d $IP -j ACCEPT 2>/dev/null
  637. /usr/local/sbin/iptables -D CapProxyIn -s $IP -j ACCEPT 2>/dev/null
  638. /usr/local/sbin/iptables -D CapProxyOut -d $IP -j ACCEPT 2>/dev/null
  639. /usr/local/sbin/iptables -D CapPortOut -d $IP -j ACCEPT 2>/dev/null
  640. /usr/local/sbin/iptables -t nat -D CapPortHTTP $FILTER -j CapPortProxy 2>/dev/null
  641. /usr/local/sbin/iptables -t nat -D CapPortHTTPS $FILTER -j ACCEPT 2>/dev/null
  642. mkdir -p "$C_SYSTEM/cp/Disconnected/$IP"
  643. $C_ZS_SCRIPTS_DIR/cp_getaccounting "$USER" "" "$IP" noupdates > "$C_SYSTEM/cp/Disconnected/$IP/Accounting"
  644. echo "$LCODE" > "$C_SYSTEM/cp/Disconnected/$IP/LCode"
  645. RXP=`$C_ZS_SCRIPTS_DIR/cp_getRXTX "$IP"|cut -d ' ' -f 1`
  646. RX=`$C_ZS_SCRIPTS_DIR/cp_getRXTX "$IP"|cut -d ' ' -f 2`
  647. TXP=`$C_ZS_SCRIPTS_DIR/cp_getRXTX "$IP"|cut -d ' ' -f 3`
  648. TX=`$C_ZS_SCRIPTS_DIR/cp_getRXTX "$IP"|cut -d ' ' -f 4`
  649. UUID=`cat $IP/UUID 2>/dev/null`
  650. NOW=`date +%s`
  651. STARTED=`cat $IP/Started 2>/dev/null`
  652. UPDATED=`cat $IP/Updated 2>/dev/null`
  653. TIMEOUT=`cat $C_SYSTEM/cp/Timeout 2>/dev/null`
  654. TIMEOUT=$((TIMEOUT*60))
  655. if [ "$((NOW-UPDATED))" -gt "$TIMEOUT" ] ; then
  656. NOW=$((UPDATED+TIMEOUT))
  657. fi
  658. TIME=$((NOW-STARTED-1))
  659. [ "$ACCT" = yes ] && $C_ZS_SCRIPTS_DIR/acct_enqueue_stop "$UUID" "$USER" "$MAC" "$TX" "$RX" "$TXP" "$RXP" "$TIME" "NAS-Request"
  660. rm -rf "$IP"
  661. logger -t "CaptivePortal" "GW: Success: user $USER (IP: $IP MAC: $MAC) disconnected"
  662. $C_ZT_BIN_DIR/zt "DelShaperUser" "$IP"
  663. DATA="dn: uid=$USERNAME,ou=PEOPLE,$C_LDAPBASE\nconnected: no"
  664. echo -e "$DATA" | ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  665. fi
  666.  
  667. if [ "$1" == "Aggiungi" ];then
  668. echo "$2" >> $3
  669. chown root:root $3
  670. chmod 755 $3
  671. fi
  672.  
  673. if [ "$1" == "StopUser" ];then
  674. $C_ZT_BIN_DIR/zt stop $2
  675. fi
  676.  
  677. if [ "$1" == "SalvaConfig" ];then
  678. VAL=$(echo "$3" | sed '/\&/s//\\\&/g' | sed '/\//s//\//g')
  679. if [ -z "$(cat $C_ZT_CONF_DIR/zt.config | grep "^$2=" 2>/dev/null)" ];then
  680. $C_ZT_BIN_DIR/zt "Aggiungi" "# ADDED" "$C_ZT_CONF_DIR/zt.config"
  681. $C_ZT_BIN_DIR/zt "Aggiungi" "$2=\"\"" "$C_ZT_CONF_DIR/zt.config"
  682. fi
  683. sed -i "s/^$2=.*/$2=\"$VAL\"/g" $C_ZT_CONF_DIR/zt.config
  684. chown root:root $C_ZT_CONF_DIR/zt.config
  685. chmod 755 $C_ZT_CONF_DIR/zt.config
  686. fi
  687.  
  688. if [ "$1" == "AddMuttrc" ];then
  689. sed -i "s/^set from=.*/set from=\"$2\"/g" $C_ZT_CONF_DIR/Muttrc
  690. chown root:root $C_ZT_CONF_DIR/Muttrc
  691. chmod 755 $C_ZT_CONF_DIR/zt.config
  692. fi
  693.  
  694. if [ "$1" == "CambiaRiga" ];then
  695. sed -i "s/$2.*/$3/g" $4
  696. chown root:root $4
  697. chmod 755 $4
  698. fi
  699.  
  700. if [ "$1" == "ConfGammu" ];then
  701. sed -i "s/^port.*/port = $2/g" $C_ZT_CONF_DIR/gammu.conf
  702. sed -i "s/^connection.*/connection = $3/g" $C_ZT_CONF_DIR/gammu.conf
  703. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_SEND_SMS_GAMMU" "$4"
  704. sed -i "s/%2F/\//g" $C_ZT_CONF_DIR/gammu.conf
  705. chown root:root $C_ZT_CONF_DIR/gammu.conf
  706. chmod 666 $C_ZT_CONF_DIR/gammu.conf
  707. if [ -n "$(ps -A | grep 'gammu')" ];then
  708. PIDGAMMU="$(ps -A | grep 'gammu' | awk '{print $1}')"
  709. kill -9 $PIDGAMMU 2>/dev/null
  710. kill -9 $PIDGAMMU 2>/dev/null
  711. kill -9 $PIDGAMMU 2>/dev/null
  712. fi
  713. if [ -n "$5" ];then
  714. $C_ZT_BIN_DIR/gammu-smsd -c $C_ZT_CONF_DIR/gammu.conf --pid=/var/run/gammu &
  715. fi
  716. fi
  717.  
  718. if [ "$1" == "StartGammu" ];then
  719. $C_ZT_BIN_DIR/gammu-smsd -c $C_ZT_CONF_DIR/gammu.conf --pid=/var/run/gammu &
  720. fi
  721.  
  722. if [ "$1" == "ControlGammu" ];then
  723. sleep 10
  724. NAMEHOST="$(echo $HOSTNAME | cut -d'.' -f1)"
  725. LASTRUN=$(cat /Database/LOG/*/*/*/$NAMEHOST/gammu-smsd | grep "$(cat /var/run/gammu)")
  726. if [ "$(echo -e "$LASTRUN" | grep 'Error at init connection')" ] || [ -z "$(ps -A | grep 'gammu')"];then
  727. echo "<br>Status:&nbsp;<img src=\"/images/disabilita.png\">"
  728. if [ -n "$(ps -A | grep 'gammu')" ];then
  729. PIDGAMMU="$(ps -A | grep 'gammu' | awk '{print $1}')"
  730. kill -9 $PIDGAMMU 2>/dev/null
  731. kill -9 $PIDGAMMU 2>/dev/null
  732. kill -9 $PIDGAMMU 2>/dev/null
  733. fi
  734. else
  735. echo "<br>Status:&nbsp;<img src=\"/images/abilita.png\">"
  736. fi
  737. fi
  738.  
  739. if [ "$1" == "CambiaURL" ];then
  740. sed -i "s/$2/$3/g" $4
  741. chown root:root $4
  742. chmod 755 $4
  743. fi
  744.  
  745. if [ "$1" == "GetToken" ];then
  746. CP_INT=$(cat $C_CP_DIR/Auth/Custom/IP)
  747. PP_URL=$(cat $C_ZT_CONF_DIR/conf_pp | grep TOKEN | awk '{print $2}')
  748. TOKEN=$(curl -k $PP_URL \
  749. -H "Accept: application/json" \
  750. -H "Accept-Language: en_US" \
  751. -u "$C_PP_CLIENT_ID:$C_PP_SECRET" \
  752. -d "grant_type=client_credentials" | awk '{split ($0, a, "access_token");print a[2]}' | cut -d'"' -f3)
  753. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_PP_TOKEN" "$TOKEN"
  754. sed -i "s/total.*/total\"\:\"$2\"\,/g" /DB/apache2/cgi-bin/zerotruth/scripts/send_pay_pp.sh
  755. sed -i "s/return_url.*/return_url\"\:\"http\:\/\/$CP_INT\:8089\/cgi-bin\/register.sh\?CONTROL_PAY=$3\&CREDIT\=$2\"\,/g" /DB/apache2/cgi-bin/zerotruth/scripts/send_pay_pp.sh
  756. sed -i "s/cancel_url.*/cancel_url\"\:\"http\:\/\/$CP_INT\:8089\/cgi-bin\/register.sh\"/g" /DB/apache2/cgi-bin/zerotruth/scripts/send_pay_pp.sh
  757. sed -i "s/tmp.*/tmp\/$3\"/g" /DB/apache2/cgi-bin/zerotruth/scripts/send_pay_pp.sh
  758. chown root:root /DB/apache2/cgi-bin/zerotruth/scripts/send_pay_pp.sh
  759. chmod 755 /DB/apache2/cgi-bin/zerotruth/scripts/send_pay_pp.sh
  760. /DB/apache2/cgi-bin/zerotruth/scripts/send_pay_pp.sh
  761. fi
  762.  
  763. if [ "$1" == "OkPay" ];then
  764. sed -i "s/Bearer.*/Bearer $C_PP_TOKEN\' \\\/g" /DB/apache2/cgi-bin/zerotruth/scripts/ok_pay_pp.sh
  765. sed -i "s/payer_id.*/payer_id\"\:\"$2\" \}\' \)/g" /DB/apache2/cgi-bin/zerotruth/scripts/ok_pay_pp.sh
  766. sed -i "s/^UTENTE.*/UTENTE\=\"$3\"/g" /DB/apache2/cgi-bin/zerotruth/scripts/ok_pay_pp.sh
  767. chown root:root /DB/apache2/cgi-bin/zerotruth/scripts/ok_pay_pp.sh
  768. chmod 755 /DB/apache2/cgi-bin/zerotruth/scripts/ok_pay_pp.sh
  769. /DB/apache2/cgi-bin/zerotruth/scripts/ok_pay_pp.sh
  770. fi
  771.  
  772. if [ "$1" == "Control" ];then
  773. if [ "$C_CP_LOCAL_TYPE" == "Client" ];then
  774. CONTROL_NC=$( `/usr/local/bin/nc -z -w 8 $C_CP_REMOTE_IP 8088 2> /dev/null` || echo "down")
  775. if [ "$CONTROL_NC" == "down" ];then
  776. if [ "$C_CP_LOCAL_AUTO" !="down" ];then
  777. CONNECTED=$(ls $C_CP_DIR/Connected )
  778. for IP in $CONNECTED;do
  779. $C_ZT_BIN_DIR/zt "Disconnetti" "$IP"
  780. done
  781. if [ "$C_CP_LOCAL_AUTO" == "on" ];then
  782. for dir in $( ls $C_SYSTEM/radius/proxy/realms/ );do
  783. for dirn in $( ls $C_SYSTEM/radius/proxy/realms/$dir/ );do
  784. CONTROL_IP=$(cat $C_SYSTEM/radius/proxy/realms/$dir/$dirn/Server)
  785. if [ "$CONTROL_IP" == "$C_CP_REMOTE_IP" ];then
  786. rm -rf $C_ZT_DIR/tmp/radius
  787. cp -a $C_SYSTEM/radius/proxy/realms/$dir/$dirn $C_ZT_DIR/tmp/radius
  788. echo "$dir" > $C_ZT_DIR/tmp/radius/RealM
  789. /root/kerbynet.cgi/scripts/radius_proxydel "$dir" "$dirn"
  790. fi
  791. done
  792. done
  793. for dir in $( ls $C_SYSTEM/net/router/PAT/ );do
  794. CONTROL_IP=$(cat $C_SYSTEM/net/router/PAT/$dir/RemoteIP)
  795. if [ "$CONTROL_IP" == "$C_CP_REMOTE_IP" ];then
  796. rm -rf $C_ZT_DIR/tmp/pat
  797. cp -a $C_SYSTEM/net/router/PAT/$dir $C_ZT_DIR/tmp/pat
  798. /root/kerbynet.cgi/scripts/router_delpat $dir
  799. fi
  800. done
  801. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_CP_LOCAL_AUTO" "down"
  802. fi
  803. fi
  804. else
  805. if [[ -n "$C_CP_LOCAL_AUTO" && "$C_CP_LOCAL_AUTO" != "on" ]];then
  806. REALM="$(cat $C_ZT_DIR/tmp/radius/RealM)"
  807. SERVER="$(cat $C_ZT_DIR/tmp/radius/Server)"
  808. AUTHPORT="$(cat $C_ZT_DIR/tmp/radius/AuthPort)"
  809. ACCTPORT="$(cat $C_ZT_DIR/tmp/radius/AcctPort)"
  810. SECRET="$(cat $C_ZT_DIR/tmp/radius/Secret)"
  811. NOSTRIP="$(cat $C_ZT_DIR/tmp/radius/NoStrip)"
  812. LB="yes"
  813. TYPE="Remote"
  814. ACCOUNTING="yes"
  815. rm -rf $C_ZT_DIR/tmp/radius
  816. /root/kerbynet.cgi/scripts/radius_proxyadd "$REALM" "$SERVER" "$AUTHPORT" "$ACCTPORT" "$SECRET" "$NOSTRIP" "$LB" "$TYPE" "$ACCOUNTING"
  817. INTERFACE="$(cat $C_ZT_DIR/tmp/pat/Interface)"
  818. VIRTUALIP="$(cat $C_ZT_DIR/tmp/pat/VirtualIP)"
  819. PROTOCOL="$(cat $C_ZT_DIR/tmp/pat/Protocol)"
  820. LOCALPORT="$(cat $C_ZT_DIR/tmp/pat/LocalPort)"
  821. REMOTEIP="$(cat $C_ZT_DIR/tmp/pat/RemoteIP)"
  822. REMOTEPORT="$(cat $C_ZT_DIR/tmp/pat/RemotePort)"
  823. rm -rf $C_ZT_DIR/tmp/pat
  824. /root/kerbynet.cgi/scripts/router_addpat "$INTERFACE" "$VIRTUALIP" "$PROTOCOL" "$LOCALPORT" "$REMOTEIP" "$REMOTEPORT"
  825. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_CP_LOCAL_AUTO" "on"
  826. fi
  827. fi
  828. fi
  829. if [ "$C_CP_LOCAL_TYPE" == "Server" ];then
  830. for CLIENT in $(ls $C_ZT_CONF_DIR/RemoteClients);do
  831. IP_REMOTE=$(cat $C_ZT_CONF_DIR/RemoteClients/$CLIENT/IP)
  832. CONTROL_NC=$( `nc -z -w 8 $IP_REMOTE 8088 2> /dev/null` || echo "down")
  833. if [ -n "$CONTROL_NC" ];then
  834. USERS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" loginRemote="$CLIENT-*" uid | grep '^uid:' | awk '{print $2}')
  835. for USER in $USERS;do
  836. for SESSION in $(ls -t $C_ACCT_DIR/entries/$USER/sessions/ );do
  837. STOP=$(cat $C_ACCT_DIR/entries/$USER/sessions/$SESSION/stop)
  838. if [ -z "$STOP" ];then
  839. SEC_NOW=$(date +%s)
  840. $C_ZT_BIN_DIR/zt "Salva" "$SEC_NOW" "$C_ACCT_DIR/entries/$USER_DET/sessions/$SESSION/stop"
  841. break
  842. fi
  843. done
  844. done
  845. fi
  846. done
  847. fi
  848. if [ -n "$C_DISCONNECT_TIME" ];then
  849. $C_ZT_SCRIPTS_DIR/controlinactivetime.sh
  850. fi
  851. if [ -n "$C_IPBLOCKED" ];then
  852. $C_ZT_BIN_DIR/zt "FailBan"
  853. fi
  854. if [ -d $C_ZT_DIR/mudc ];then
  855. $C_ZT_BIN_DIR/zt "mudc" "Control"
  856. fi
  857. $C_ZT_SCRIPTS_DIR/diskfull.sh
  858. if [ -f $C_CP_DIR/Auth/Custom/RegisterAsterisk ];then
  859. if [ "$(cat $C_CP_DIR/Auth/Custom/RegisterAsterisk)" == "yes" ];then
  860. NOW=$(date +%s)
  861. USERAST=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" gecos=wait_asterisk uid)
  862. USERASTERISK=$(echo "$USERAST" | sed -n '/uid:/p' | awk '{ print $2 }')
  863. for USERDEL in $USERASTERISK;do
  864. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USERDEL sn radiusUserCategory)
  865. PASSWORD=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g')
  866. TL="$(echo "$PASSWORD" | cut -d'-' -f2)"
  867. if [ "$TL" -eq "$TL" ];then
  868. if [ $TL -lt $NOW ];then
  869. deleteuser "$USERDEL"
  870. fi
  871. fi
  872. done
  873. fi
  874. fi
  875. if [ -n "$C_SHOW_NOT_INTERNET" ];then
  876. CONTROLDOWN=$( `/usr/local/bin/nc -z -w 4 8.8.8.8 53 2> /dev/null` || echo "down")
  877. if [[ -n "$CONTROLDOWN" && $(cat $C_CP_DIR/Auth/Custom/NoInternet) != "yes" ]];then
  878. IPCP=$(cat $C_CP_DIR/Auth/Custom/IP)
  879. cp -f $C_ZT_CONF_DIR/fakedns-ori $C_ZT_CONF_DIR/fakedns
  880. sed -i "s/IPCP/$IPCP/g" $C_ZT_CONF_DIR/fakedns
  881. cp -f $C_ZS_SCRIPTS_DIR/dns_zoneconfig $C_HTDOCS_SCRIPTS_DIR/dns_zoneconfig
  882. sed -i 's/IN//g' $C_ZS_SCRIPTS_DIR/dns_zoneconfig
  883. sed -i 's/type hint/type master/g' $C_ZS_SCRIPTS_DIR/dns_zoneconfig
  884. sed -i 's/root.cache/\/DB\/apache2\/cgi-bin\/zerotruth\/conf\/fakedns/g' $C_ZS_SCRIPTS_DIR/dns_zoneconfig
  885. /etc/init.d/dns restart
  886. echo "yes" > $C_CP_DIR/Auth/Custom/NoInternet
  887. OLDCPLINK=$(ls -lia $C_CP_DIR/Auth/Template/cp* | grep 'lrwx' | cut -d'/' -f15)
  888. echo "$OLDCPLINK" > $C_ZT_CONF_DIR/OldCplink
  889. ln -sf $C_HTDOCS_TEMPLATE_DIR/cp_showauth_custom-off $C_CP_DIR/Auth/Template/cp_showauth_custom
  890. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_INTERNET_DOWN" "on"
  891. if [ "$C_SMS_PROVIDER" == "Gammu" ];then
  892. TEXT_SMS="$C_HOTSPOT_NAME: Internet Down"
  893. $C_ZT_BIN_DIR/zt "InviaSms" "$C_SMS_PROVIDER" "$C_ADMIN_PHONE" "$TEXT_SMS"
  894. fi
  895. fi
  896. if [[ -z "$CONTROLDOWN" && $(cat $C_CP_DIR/Auth/Custom/NoInternet) == "yes" ]];then
  897. echo "no" > $C_CP_DIR/Auth/Custom/NoInternet
  898. OLDCPLINK=$(cat $C_ZT_CONF_DIR/OldCplink)
  899. ln -sf $C_HTDOCS_TEMPLATE_DIR/$OLDCPLINK $C_CP_DIR/Auth/Template/cp_showauth_custom
  900. mv -f $C_HTDOCS_SCRIPTS_DIR/dns_zoneconfig $C_ZS_SCRIPTS_DIR/dns_zoneconfig
  901. rm -f $C_ZT_CONF_DIR/fakedns
  902. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_INTERNET_DOWN" ""
  903. /etc/init.d/dns restart
  904. fi
  905. fi
  906. if [ -n "$(ls $C_CP_DIR/Connected)" ];then
  907. CONNMOB="$(ls $C_CP_DIR/Connected)"
  908. for IP in $CONNMOB;do
  909. if [ -f $C_CP_DIR/Connected/$IP/Now ];then
  910. VALIDITY_MOBILE=$(($C_AUTH_VALIDITY_MOBILE*60))
  911. USERMOBILE="$(cat $C_CP_DIR/Connected/$IP/User) | cut -d'@' -f1)"
  912. TIMEMOBILE="$(cat $C_CP_DIR/Connected/$IP/Now)"
  913. NOW=$(date +%s)
  914. CTIME=$(($NOW-$TIMEMOBILE))
  915. if [ "$CTIME" -gt "$VALIDITY_MOBILE" ];then
  916. $C_ZT_BIN_DIR/zt "Disconnetti" "$IP" "$USERMOBILE"
  917. fi
  918. fi
  919. done
  920. fi
  921. if [ -f /opt/asterisk/var/run/asterisk/asterisk.pid ];then
  922. if [ -z "$(/opt/asterisk/sbin/asterisk -r -x "sip show peers" | sed -n 2p | awk '{print $6}' | grep 'OK')" ];then
  923. $C_ZT_BIN_DIR/zt "AsteriskRestart"
  924. fi
  925. fi
  926. fi
  927.  
  928. if [ "$1" == "RestoreDns" ];then
  929. echo "no" > $C_CP_DIR/Auth/Custom/NoInternet
  930. if [ -f $C_ZT_CONF_DIR/OldCplink ];then
  931. OLDCPLINK=$(cat $C_ZT_CONF_DIR/OldCplink)
  932. else
  933. OLDCPLINK="cp_showauth_custom-on"
  934. fi
  935. ln -sf $C_HTDOCS_TEMPLATE_DIR/$OLDCPLINK $C_CP_DIR/Auth/Template/cp_showauth_custom
  936. if [ -f $C_HTDOCS_SCRIPTS_DIR/dns_zoneconfig ];then
  937. mv -f $C_HTDOCS_SCRIPTS_DIR/dns_zoneconfig $C_ZS_SCRIPTS_DIR/dns_zoneconfig
  938. fi
  939. /etc/init.d/dns restart
  940. fi
  941.  
  942. if [ "$1" == "UnlockClientDay" ];then
  943. PASSRADIUS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" sn="*LOCKORED" cn )
  944. USERSLOCK=$(echo "$PASSRADIUS" | sed -n '/cn:/p' | awk '{ print $2 }')
  945. for USERRO in $USERSLOCK;do
  946. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn="$USERRO" sn )
  947. PASSWORD=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g' | cut -d'-' -f1 )
  948. DATA="dn: cn=$USERRO,ou=Radius,$C_LDAPBASE\nsn: $PASSWORD"
  949. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  950. /usr/bin/logger -t ZT.system "UnBlocked $USERRO Hours per Day"
  951. done
  952. PASSRADIUS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" sn="*LOCKMBD" cn )
  953. USERSLOCK=$(echo "$PASSRADIUS" | sed -n '/cn:/p' | awk '{ print $2 }')
  954. for USERRO in $USERSLOCK;do
  955. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn="$USERRO" sn )
  956. PASSWORD=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g' | cut -d'-' -f1 )
  957. DATA="dn: cn=$USERRO,ou=Radius,$C_LDAPBASE\nsn: $PASSWORD"
  958. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  959. /usr/bin/logger -t ZT.system "UnBlocked $USERRO MB per Day"
  960. done
  961. $C_ZT_BIN_DIR/zt "CONTROL_EXPIRED"
  962. $C_ZT_BIN_DIR/zt "UPDATE_GRAPHS"
  963. ### control for details users ###
  964. cd $C_ACCT_DIR/entries
  965. ENTRIES=$(ls 2>/dev/null)
  966. [ -z "$ENTRIES" ] && exit
  967. for USER_NAME in $ENTRIES;do
  968. DN=$(date +%d | sed 's/^0//')
  969. MN=$(date +%m | sed 's/^0//')
  970. YN=$(date +%Y)
  971. rm -rf $(ls $USER_NAME/MBD* | grep -v "MBD$DN") 2>/dev/null
  972. rm -rf $(ls $USER_NAME/MBM* | grep -v "MBM$MN") 2>/dev/null
  973. rm -rf $(ls $USER_NAME/MBY* | grep -v "MBY$YN") 2>/dev/null
  974. rm -rf $(ls $USER_NAME/TimeD* | grep -v "TimeD$DN") 2>/dev/null
  975. rm -rf $(ls $USER_NAME/TimeM* | grep -v "TimeM$MN") 2>/dev/null
  976. rm -rf $(ls $USER_NAME/TimeY* | grep -v "TimeY$YN") 2>/dev/null
  977. done
  978. ###############
  979. fi
  980.  
  981. if [ "$1" == "CONTROL_EXPIRED" ];then
  982. TODAY=$(date +%s)
  983. TODAY=$(($TODAY/86400))
  984. PEOPLE=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid)
  985. USERPEOPLE=$(echo "$PEOPLE" | sed -n '/uid:/p' | awk '{ print $2 }')
  986. for USERNAME in $USERPEOPLE;do
  987. if [ "$USERNAME" != "admin" ];then
  988. CONTROL_EX=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid=$USERNAME shadowExpire | grep -e '^shadowExpire: ' | sed 's/^shadowExpire: //g')
  989. if [ $TODAY -gt $CONTROL_EX ];then
  990. if [ -d /Database/var/register/system/acct/entries/$USERNAME ];then
  991. $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "no" "E"
  992. fi
  993. if [ -n "$(ls $C_CP_DIR/Connected)" ];then
  994. CONNECTED=$(ls $C_CP_DIR/Connected)
  995. for IP in $CONNECTED;do
  996. if [ $( cat $C_CP_DIR/Connected/$IP/User | cut -d'@' -f1) == "$USERNAME" ];then
  997. $C_ZT_BIN_DIR/zt "Disconnetti" "$IP"
  998. fi
  999. done
  1000. fi
  1001. fi
  1002. fi
  1003. done
  1004. fi
  1005.  
  1006. if [ "$1" == "ControlAcct" ];then
  1007. USERNAME="$2"
  1008. if [ "$3" == "NEWREG" ];then
  1009. $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "yes"
  1010. exit
  1011. fi
  1012. TODAY=$(date +%s)
  1013. TODAY=$(($TODAY/86400))
  1014. CONTROL_EX=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid=$USERNAME shadowExpire | grep -e '^shadowExpire: ' | sed 's/^shadowExpire: //g')
  1015. if [ $TODAY -gt $CONTROL_EX ];then
  1016. $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "no" "E"
  1017. $C_ZT_BIN_DIR/zt "DisconnettiUsername" "$USERNAME"
  1018. exit
  1019. else
  1020. [ "$3" == "UPDATE" ] && VU="1"
  1021. fi
  1022. CL=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USERNAME radiusUserCategory | grep -e '^radiusUserCategory: ' | sed 's/^radiusUserCategory: //g')
  1023. if [ "$(cat $C_ACCT_DIR/classes/$CL/ChargeType)" == "pre" ];then
  1024. CREDIT=$(cat $C_ACCT_DIR/credits/$USERNAME/Credit)
  1025. CHARGETYPE=$(cat $C_ACCT_DIR/classes/$CL/ChargeType)
  1026. FREETIME=$(cat $C_ACCT_DIR/classes/$CL/FreeTime)
  1027. if [[ -z "$CREDIT" || "$CREDIT" == "0.00" || $(echo "$CREDIT" | grep '^-') ]] && [ "$CREDIT" != "freetime" ] ;then
  1028. $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "no" "C"
  1029. $C_ZT_BIN_DIR/zt "DisconnettiUsername" "$USERNAME"
  1030. exit
  1031. fi
  1032. if [[ -n "$CREDIT" && "$CREDIT" != "0.00" && -z $(echo "$CREDIT" | grep '^-') ]];then
  1033. [ "$3" == "UPDATE" ] && VU="$(($VU+1))"
  1034. fi
  1035. else
  1036. VU="$(($VU+1))"
  1037. fi
  1038. if [ -f $C_ACCT_DIR/entries/$USERNAME/Time ] && [ -n "$(cat $C_ACCT_DIR/classes/$CL/Hours)" ];then
  1039. TIME=$(cat $C_ACCT_DIR/entries/$USERNAME/Time)
  1040. LIMITH=$(cat $C_ACCT_DIR/classes/$CL/Hours)
  1041. LIMITH=$(($LIMITH*3600))
  1042. if [ $TIME -gt $LIMITH ] && [ -z "$VC" ];then
  1043. $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "no" "T"
  1044. $C_ZT_BIN_DIR/zt "DisconnettiUsername" "$USERNAME"
  1045. exit
  1046. else
  1047. [ "$3" == "UPDATE" ] && VU="$(($VU+1))"
  1048. fi
  1049. else
  1050. VU="$(($VU+1))"
  1051. fi
  1052. if [ -f $C_ACCT_DIR/entries/$USERNAME/MB ] && [ -n "$(cat $C_ACCT_DIR/classes/$CL/MB)" ];then
  1053. TRAFFIC=$(cat $C_ACCT_DIR/entries/$USERNAME/MB)
  1054. LIMITMB=$(cat $C_ACCT_DIR/classes/$CL/MB)
  1055. LIMITMB=$((LIMITMB*1048576))
  1056. if [ $TRAFFIC -gt $LIMITMB ];then
  1057. $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "no" "M"
  1058. $C_ZT_BIN_DIR/zt "DisconnettiUsername" "$USERNAME"
  1059. exit
  1060. else
  1061. [ "$3" == "UPDATE" ] && VU="$(($VU+1))"
  1062. fi
  1063. else
  1064. VU="$(($VU+1))"
  1065. fi
  1066. [[ "$3" == "UPDATE" && "$VU" == "4" ]] && $C_ZT_SCRIPTS_DIR/cp_validity.sh "$USERNAME" "yes"
  1067. fi
  1068.  
  1069. if [ "$1" == "UPDATE_GRAPHS" ];then
  1070. if ! [ -d $C_ZT_DIR/log/graphs ];then
  1071. $C_ZT_BIN_DIR/zt "CreaCartella" "$C_ZT_DIR/log/graphs"
  1072. fi
  1073. rm -rf $C_ZT_DIR/log/graphs/*
  1074. for CONF in "GRAPH_DATA_IN" "GRAPH_DATA_OUT";do
  1075. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_$CONF" ""
  1076. done
  1077. for USER_GRAPHS in $(ls $C_ACCT_DIR/entries/);do
  1078. TIME_TOT=0
  1079. TRAFFIC_TOT=0
  1080. for SESSION in $(ls $C_ACCT_DIR/entries/$USER_GRAPHS/sessions);do
  1081. if [ -f $C_ACCT_DIR/entries/$USER_GRAPHS/sessions/$SESSION/stop ];then
  1082. SECSTART=$(stat -c "%Y" $C_ACCT_DIR/entries/$USER_GRAPHS/sessions/$SESSION/start)
  1083. ANNO=$(date -d "1970-01-01 $SECSTART sec" +%Y)
  1084. MESE=$(date -d "1970-01-01 $SECSTART sec" +%m)
  1085. GIORNO=$(date -d "1970-01-01 $SECSTART sec" +%d)
  1086. GIORNOSETT=$(date -d "1970-01-01 $SECSTART sec" +%a)
  1087. GIORNOSETTNUM=$(date -d "1970-01-01 $SECSTART sec" +%w)
  1088. ORA=$(date -d "1970-01-01 $SECSTART sec" +%H)
  1089. TIME=$(cat $C_ACCT_DIR/entries/$USER_GRAPHS/sessions/$SESSION/Time)
  1090. TIME_TOT=$(($TIME_TOT+$TIME))
  1091. TRAFFIC=$(cat $C_ACCT_DIR/entries/$USER_GRAPHS/sessions/$SESSION/Traffic)
  1092. TRAFFIC_TOT=$(($TRAFFIC_TOT+$TRAFFIC))
  1093. $C_ZT_BIN_DIR/zt "Aggiungi" "$SECSTART anno-$ANNO mese-$MESE giorno-$GIORNO giornosett-$GIORNOSETT ora-$ORA tempo-$TIME traffico-$TRAFFIC giornosettnum-$GIORNOSETTNUM user-$USER_GRAPHS" "$C_ZT_DIR/log/graphs/graphs"
  1094. fi
  1095. done
  1096. done
  1097. /usr/bin/logger -t ZT.system "Update Graphs"
  1098. fi
  1099.  
  1100. if [ "$1" == "UnlockClientMonth" ];then
  1101. PASSRADIUS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" sn="*LOCKOREM" cn )
  1102. USERSLOCK=$(echo "$PASSRADIUS" | sed -n '/cn:/p' | awk '{ print $2 }')
  1103. for USERRO in $USERSLOCK;do
  1104. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn="$USERRO" sn )
  1105. PASSWORD=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g' | cut -d'-' -f1 )
  1106. DATA="dn: cn=$USERRO,ou=Radius,$C_LDAPBASE\nsn: $PASSWORD"
  1107. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  1108. /usr/bin/logger -t ZT.system "UnBlocked $USERRO Hours per Month"
  1109. done
  1110. PASSRADIUS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" sn="*LOCKMBM" cn )
  1111. USERSLOCK=$(echo "$PASSRADIUS" | sed -n '/cn:/p' | awk '{ print $2 }')
  1112. for USERRO in $USERSLOCK;do
  1113. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn="$USERRO" sn )
  1114. PASSWORD=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g' | cut -d'-' -f1 )
  1115. DATA="dn: cn=$USERRO,ou=Radius,$C_LDAPBASE\nsn: $PASSWORD"
  1116. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  1117. /usr/bin/logger -t ZT.system "UnBlocked $USERRO MB per Month"
  1118. done
  1119. fi
  1120.  
  1121. if [ "$1" == "Scarica" ];then
  1122. BG="$C_BG"
  1123. [ $(expr $5 % 2 ) -eq 0 ] && BG="$C_BG1"
  1124. if `wget -N -P $2 $3 2>/dev/null`;then
  1125. FILE="$4"
  1126. if [ $(echo "$FILE" | cut -d'.' -f2) == "tar" ];then
  1127. tar zxfv $2/$FILE -C $2 > /dev/null
  1128. FILE=$(echo "$4" | sed 's/\.tar\.gz//g')
  1129. fi
  1130. echo "<tr BGCOLOR=\"$BG\"><td align=\"center\">$2</td><td align=\"center\">$FILE</td><td align=\"center\">$L_UPDATED</td></tr>"
  1131. chown root:root $2/$FILE
  1132. chmod 755 $2/$FILE
  1133. if [ "$FILE" == "zt" ];then
  1134. chmod 4755 $2/$FILE
  1135. fi
  1136. logger -t ZT.update "Update $FILE"
  1137. else
  1138. echo "<tr BGCOLOR=\"$BG\"><td>$2</td><td>$FILE</td><td align=\"center\"><font color=\"red\">$L_NOT $L_UPDATED</font></td></tr>"
  1139. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_FIX_ERROR" "on"
  1140. logger -t ZT.update "Update $FILE error"
  1141. fi
  1142. fi
  1143.  
  1144. if [ "$1" == "ControlCode" ];then
  1145. $C_ZT_BIN_DIR/binzt "ControlCode" "$2"
  1146. fi
  1147.  
  1148. if [ "$1" == "RegisterCode" ];then
  1149. $C_ZT_BIN_DIR/binzt "RegisterCode" "$2"
  1150. fi
  1151.  
  1152. if [ "$1" == "DeleteCode" ];then
  1153. $C_ZT_BIN_DIR/binzt "DeleteCode"
  1154. fi
  1155.  
  1156. if [ "$1" == "ControlUpdate" ];then
  1157. $C_ZT_BIN_DIR/binzt "ControlUpdate"
  1158. fi
  1159.  
  1160. if [ "$1" == "Stat" ];then
  1161. stat -c "%Y" "$2"
  1162. fi
  1163.  
  1164. if [ "$1" == "StatSession" ];then
  1165. stat -c "%y" $2
  1166. fi
  1167.  
  1168. if [ "$1" == "Copia" ];then
  1169. cp $2 $3
  1170. fi
  1171.  
  1172. if [ "$1" == "CopiaTutto" ];then
  1173. cp -a $2 $3
  1174. fi
  1175.  
  1176. if [ "$1" == "Errore" ];then
  1177. echo "<p>&nbsp;<p><font color=\"red\" size=\"4\">$2</font><p>
  1178. <br><img src=\"/images/barra.png\" alt=\"barra\"><p>
  1179. <form action=\"$3\" method=\"POST\">
  1180. <input type=\"hidden\" name=\"$4\" value=\"$5\">
  1181. <input type=\"submit\" class=\"bottone\" value=\"$L_GO_BACK\">
  1182. </form>"
  1183. echo "<p>&nbsp;<p>"
  1184. ./footer.sh
  1185. fi
  1186.  
  1187. if [ "$1" == "ControlOk" ];then
  1188. echo "<font color=\"blue\" size=\"4\">$2</font><p>
  1189. <br><img src=\"/images/barra.png\" alt=\"barra\"><p>
  1190. <form action=\"$3\" method=\"POST\">
  1191. <input type=\"submit\" class=\"bottone\" value=\"$L_GO_BACK\">
  1192. </form>"
  1193. echo "<p>&nbsp;<p>"
  1194. ./footer.sh
  1195. fi
  1196.  
  1197. if [ "$1" == "AggOrologio" ];then
  1198. SUNDAY=$(echo "$L_SUNDAY" | sed 's/&/\\&/g')
  1199. MONDAY=$(echo "$L_MONDAY" | sed 's/&/\\&/g')
  1200. TUESDAY=$(echo "$L_TUESDAY" | sed 's/&/\\&/g')
  1201. WEDNESDAY=$(echo "$L_WEDNESDAY" | sed 's/&/\\&/g')
  1202. THURSDAY=$(echo "$L_THURSDAY" | sed 's/&/\\&/g')
  1203. FRIDAY=$(echo "$L_FRIDAY" | sed 's/&/\\&/g')
  1204. SATURDAY=$(echo "$L_SATURDAY" | sed 's/&/\\&/g')
  1205. JANUARY=$(echo "$L_JANUARY" | sed 's/&/\\&/g')
  1206. FEBRAURY=$(echo "$L_FEBRAURY" | sed 's/&/\\&/g')
  1207. MARCH=$(echo "$L_MARCH" | sed 's/&/\\&/g')
  1208. APRIL=$(echo "$L_APRIL" | sed 's/&/\\&/g')
  1209. MAY=$(echo "$L_MAY" | sed 's/&/\\&/g')
  1210. JUNE=$(echo "$L_JUNE" | sed 's/&/\\&/g')
  1211. JULY=$(echo "$L_JULY" | sed 's/&/\\&/g')
  1212. AUGUST=$(echo "$L_AUGUST" | sed 's/&/\\&/g')
  1213. SEPTEMBER=$(echo "$L_SEPTEMBER" | sed 's/&/\\&/g')
  1214. OCTOBER=$(echo "$L_OCTOBER" | sed 's/&/\\&/g')
  1215. NOVEMBER=$(echo "$L_NOVEMBER" | sed 's/&/\\&/g')
  1216. DECEMBER=$(echo "$L_DECEMBER" | sed 's/&/\\&/g')
  1217. sed -i "s/DaysOfWeek\[0\].*/DaysOfWeek\[0\] = \"$SUNDAY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1218. sed -i "s/DaysOfWeek\[1\].*/DaysOfWeek\[1\] = \"$MONDAY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1219. sed -i "s/DaysOfWeek\[2\].*/DaysOfWeek\[2\] = \"$TUESDAY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1220. sed -i "s/DaysOfWeek\[3\].*/DaysOfWeek\[3\] = \"$WEDNESDAY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1221. sed -i "s/DaysOfWeek\[4\].*/DaysOfWeek\[4\] = \"$THURSDAY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1222. sed -i "s/DaysOfWeek\[5\].*/DaysOfWeek\[5\] = \"$FRIDAY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1223. sed -i "s/DaysOfWeek\[6\].*/DaysOfWeek\[6\] = \"$SATURDAY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1224. sed -i "s/MonthsOfYear\[0\].*/MonthsOfYear\[0\] = \"$JANUARY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1225. sed -i "s/MonthsOfYear\[1\].*/MonthsOfYear\[1\] = \"$FEBRAURY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1226. sed -i "s/MonthsOfYear\[2\].*/MonthsOfYear\[2\] = \"$MARCH\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1227. sed -i "s/MonthsOfYear\[3\].*/MonthsOfYear\[3\] = \"$APRIL\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1228. sed -i "s/MonthsOfYear\[4\].*/MonthsOfYear\[4\] = \"$MAY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1229. sed -i "s/MonthsOfYear\[5\].*/MonthsOfYear\[5\] = \"$JUNE\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1230. sed -i "s/MonthsOfYear\[6\].*/MonthsOfYear\[6\] = \"$JULY\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1231. sed -i "s/MonthsOfYear\[7\].*/MonthsOfYear\[7\] = \"$AUGUST\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1232. sed -i "s/MonthsOfYear\[8\].*/MonthsOfYear\[8\] = \"$SEPTEMBER\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1233. sed -i "s/MonthsOfYear\[9\].*/MonthsOfYear\[9\] = \"$OCTOBER\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1234. sed -i "s/MonthsOfYear\[10\].*/MonthsOfYear\[10\] = \"$NOVEMBER\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1235. sed -i "s/MonthsOfYear\[11\].*/MonthsOfYear\[11\] = \"$DECEMBER\"/g" $C_HTDOCS_DIR/js/liveclock.js
  1236. fi
  1237.  
  1238. if [ "$1" == "AggCalendario" ];then
  1239. sed -i "s/^lang.*/lang\:\'$L_LANG\'\,/g" $C_HTDOCS_DIR/js/zt.js
  1240. fi
  1241.  
  1242. if [ "$1" == "AddK5" ];then
  1243. kadmin.local -q "addprinc -pw $2 $3" 2>/dev/null > /dev/null
  1244. kadmin.local -q "modprinc -expire $4 $3" 2>/dev/null > /dev/null
  1245. fi
  1246.  
  1247. if [ "$1" == "UpdateK5" ];then
  1248. kadmin.local -q "change_password -pw $2 $3" 2>/dev/null > /dev/null
  1249. kadmin.local -q "modprinc -expire $4 $3" 2>/dev/null > /dev/null
  1250. fi
  1251.  
  1252. if [ "$1" == "DelK5" ];then
  1253. kadmin.local -q "delprinc -force $2" 2>/dev/null > /dev/null
  1254. fi
  1255.  
  1256. if [ "$1" == "InviaSms" ];then
  1257. TESTO_LOG="$4"
  1258. TESTO=$(urlencode "$4")
  1259. if [[ "$2" == "Gammu" || "$2" == "aimon" ]];then
  1260. TESTO=$($C_ZT_BIN_DIR/convplain "$TESTO")
  1261. fi
  1262. if [ "$2" == "aimon" ];then
  1263. NUMERI=$(echo "$3" | sed '/^ /s///g' | sed '/ /s//,/g')
  1264. TESTO=$(echo "$TESTO" | $C_ZT_BIN_DIR/base64)
  1265. SENDER=$(echo "$C_SMS_SENDER" | $C_ZT_BIN_DIR/base64)
  1266. echo "$SENDER $TESTO" > /DB/aimon
  1267. `curl -k --data "authlogin=$C_SMS_USER&authpasswd=$C_SMS_PASSWORD&sender=$SENDER&destination=$NUMERI&body=$TESTO&id_api=59" https://secure.apisms.it/http/send_sms` 2>/dev/null >/dev/null
  1268. if [ "$6" == "credito" ];then
  1269. $C_ZT_BIN_DIR/zt "UpdateCreditSms" "$2"
  1270. fi
  1271. fi
  1272. if [ "$2" == "skebby" ];then
  1273. NUMERI=$(echo "$3" | sed '/ /s//\&recipients[]=/g')
  1274. `curl --data "method=send_sms_classic&username=$C_SMS_USER&password=$C_SMS_PASSWORD&recipients[]=$NUMERI&sender_string=$C_SMS_SENDER&text=$TESTO" http://gateway.skebby.it/api/send/smseasy/advanced/http.php ` 2>/dev/null >/dev/null
  1275. if [ "$6" == "credito" ];then
  1276. $C_ZT_BIN_DIR/zt "UpdateCreditSms" "$2"
  1277. fi
  1278. fi
  1279. if [ "$2" == "smsglobal" ];then
  1280. NUMERI=$(echo "$3" | sed '/^ /s///g' | sed '/ /s//,/g')
  1281. `curl --data "action=sendsms&user=$C_SMS_USER&password=$C_SMS_PASSWORD&&from=$C_SMS_SENDER&to=$NUMERI&text=$TESTO" http://www.smsglobal.com/http-api.php`
  1282. if [ "$6" == "credito" ];then
  1283. $C_ZT_BIN_DIR/zt "UpdateCreditSms" "$2"
  1284. fi
  1285. fi
  1286. if [ "$2" == "subitosms" ];then
  1287. NUMERI=$(echo "$3" | sed 's/^ //g' | sed 's/ /,%2B/g')
  1288. NUMERI="%2B$NUMERI"
  1289. `curl --data "username=$C_SMS_USER&password=$C_SMS_PASSWORD&dest=$NUMERI&tipo=1&mitt=$C_SMS_SENDER&testo=$TESTO" http://www.subitosms.it/gateway.php`
  1290. if [ "$6" == "credito" ];then
  1291. $C_ZT_BIN_DIR/zt "UpdateCreditSms" "$2"
  1292. fi
  1293. fi
  1294. if [ "$2" == "smsbiz" ];then
  1295. NUMERI=$(echo "$3" | sed '/^ /s///g' | sed '/ /s//,/g')
  1296. `curl --data "login=$C_SMS_USER&password=$C_SMS_PASSWORD&dest=$NUMERI&tipo=1&mitt=$C_SMS_SENDER&testo=$TESTO" http://www.nsgateway.net/smsscript/sendsms.php`
  1297. if [ "$6" == "credito" ];then
  1298. $C_ZT_BIN_DIR/zt "UpdateCreditSms" "$2"
  1299. fi
  1300. fi
  1301. if [ "$2" == "my_SMS_script" ];then
  1302. NUMERI=$(echo "$3" | sed '/^ /s///g' | sed '/ /s//,/g')
  1303. [ "$6" == "credito" ] && CREDIT="yes"
  1304. N_SMS=$5
  1305. $C_ZT_SCRIPTS_DIR/my_SMS_script.sh "$NUMERI" "$TESTO" "$5" "$CREDIT"
  1306. fi
  1307. if [ "$2" == "mobyt_old" ];then
  1308. NUMERI=$(echo "$3" | sed '/^ /s///g' | sed '/ /s//,/g')
  1309. RCPTARRAY=$(echo "")
  1310. ARR_TEMP=$(echo $NUMERI | tr "," "\n")
  1311. for x in $ARR_TEMP;do
  1312. RCPTARRAY=$(echo "$RCPTARRAY%2b$x,")
  1313. done
  1314. RCPTARRAY=$(echo "${RCPTARRAY/%,/}")
  1315. if [[ "$RCPTARRAY" != *,* ]];then
  1316. `curl --data "id=$C_SMS_USER&password=$C_SMS_PASSWORD&rcpt=$RCPTARRAY&from=$C_SMS_SENDER&data=$TESTO&qty=h&operation=TEXT" http://smsweb.mobyt.it/sms-gw/sendsmart`
  1317. fi
  1318. if [[ "$RCPTARRAY" == *,* ]];then
  1319. `curl --data "id=$C_SMS_USER&password=$C_SMS_PASSWORD&rcptbatch=$RCPTARRAY&from=$C_SMS_SENDER&data=$TESTO&qty=h&operation=TEXT" http://smsweb.mobyt.it/sms-gw/sendsmart`
  1320. fi
  1321. if [ "$6" == "credito" ];then
  1322. $C_ZT_BIN_DIR/zt "UpdateCreditSms" "$2"
  1323. fi
  1324. fi
  1325. if [ "$2" == "mobyt_new" ];then
  1326. NUMERI=$(echo "$3" | sed '/^ /s///g' | sed '/ /s//,/g')
  1327. RCPTARRAY=$(echo "")
  1328. ARR_TEMP=$(echo $NUMERI | tr "," "\n")
  1329. for x in $ARR_TEMP;do
  1330. RCPTARRAY=$(echo "$RCPTARRAY%2b$x,")
  1331. done
  1332. RCPTARRAY=$(echo "${RCPTARRAY/%,/}")
  1333. if [[ "$RCPTARRAY" != *,* ]];then
  1334. `curl --data "user=$C_SMS_USER&pass=$C_SMS_PASSWORD&rcpt=$RCPTARRAY&sender=$C_SMS_SENDER&data=$TESTO&qty=h&operation=TEXT" http://client.mobyt.it/sms/send.php`
  1335. fi
  1336. if [[ "$RCPTARRAY" == *,* ]];then
  1337. `curl --data "user=$C_SMS_USER&pass=$C_SMS_PASSWORD&rcpt=$RCPTARRAY&sender=$C_SMS_SENDER&data=$TESTO&qty=h&operation=TEXT" http://client.mobyt.it/sms/batch.php`
  1338. fi
  1339. if [ "$6" == "credito" ];then
  1340. $C_ZT_BIN_DIR/zt "UpdateCreditSms" "$2"
  1341. fi
  1342. fi
  1343. if [ "$2" == "Gammu" ];then
  1344. NUMERI=$(echo "$3" | sed '/^ /s///g')
  1345. for NUM in $NUMERI;do
  1346. echo "$TESTO" | $C_ZT_BIN_DIR/gammu-smsd-inject -c $C_ZT_CONF_DIR/gammu.conf TEXT +$NUM >/dev/null 2>/dev/null
  1347. done
  1348. fi
  1349. /usr/bin/logger -t sms "$NUMERI $TESTO"
  1350. fi
  1351.  
  1352. if [ "$1" == "SendSms" ];then
  1353. echo "$2" | $C_ZT_BIN_DIR/gammu-smsd-inject -c $C_ZT_CONF_DIR/gammu.conf TEXT +$3 >/dev/null 2>/dev/null
  1354. fi
  1355.  
  1356. if [ "$1" == "UpdateCreditSms" ];then
  1357. if [ "$2" == "skebby" ];then
  1358. CREDITO=$(curl --data "method=get_credit&username=$C_SMS_USER&password=$C_SMS_PASSWORD" http://gateway.skebby.it/api/send/smseasy/advanced/http.php)
  1359. CREDITOVAL=$(echo $CREDITO | cut -d'=' -f3 | cut -d'&' -f1)
  1360. CREDITONUM=$(echo $CREDITO | cut -d'=' -f4 | cut -d'&' -f1)
  1361. CREDITNOW="$CREDITOVAL $C_CURRENCY - Num: $CREDITONUM"
  1362. fi
  1363. if [ "$2" == "smsglobal" ];then
  1364. IP_WAN="$(dig -4 @resolver1.opendns.com -t a myip.opendns.com +short)"
  1365. NATION_PAGE="$(curl --data "id=query&ip=$IP_WAN" http://ipinfodb.com/ip_locator.php)"
  1366. NATION=$(echo -e "$NATION_PAGE" | grep 'Country :' | cut -d':' -f2 | cut -d'<' -f1 | sed 's/ //g')
  1367. [ -z "$NATION" ] && NATION="IT"
  1368. CREDITONUM=$(curl --data "user=$C_SMS_USER&password=$C_SMS_PASSWORD&country=$NATION" http://www.smsglobal.com/credit-api.php)
  1369. CREDIT=$(echo "$CREDITONUM" | cut -d':' -f2 | cut -d';' -f1 )
  1370. SMS=$(echo "$CREDITONUM" | cut -d':' -f4 | cut -d';' -f1 )
  1371. CREDITNOW="$CREDIT - SMS: $SMS"
  1372. fi
  1373. if [ "$2" == "smsbiz" ];then
  1374. CREDITONUM=$(curl --data "login=$C_SMS_USER&password=$C_SMS_PASSWORD&tipo=2" http://www.nsgateway.net/smsscript/sendsms.php)
  1375. CREDITONUM=$(echo "$CREDITONUM" | cut -d' ' -f2 )
  1376. CREDITONUM=$(echo "$CREDITONUM" | sed 's/\r//g')
  1377. CREDITNOW="Num: $CREDITONUM"
  1378. fi
  1379. if [ "$2" == "subitosms" ];then
  1380. CREDITONUM=`curl --data "username=$C_SMS_USER&password=$C_SMS_PASSWORD" http://www.subitosms.it/gateway.php`
  1381. CREDITONUM=$(echo "$CREDITONUM" | cut -d':' -f2 )
  1382. CREDITNOW="Num: $CREDITONUM"
  1383. fi
  1384. if [ "$2" == "mobyt_old" ];then
  1385. CREDITONUM=$(curl --data "id=$C_SMS_USER&password=$C_SMS_PASSWORD&operation=GETMESS" http://smsweb.mobyt.it/sms-gw/sendsmart)
  1386. CREDITONUM=$(echo "${CREDITONUM:3}")
  1387. CREDITNOW="SMS Residui HQ: $CREDITONUM"
  1388. fi
  1389. if [ "$2" == "mobyt_new" ];then
  1390. CREDITONUM=$(curl --data "user=$C_SMS_USER&pass=$C_SMS_PASSWORD&type=hqs" http://client.mobyt.it/sms/credit.php)
  1391. CREDITONUM=$(echo "${CREDITONUM:3}")
  1392. CREDITNOW="SMS Residui HQ: $CREDITONUM"
  1393. fi
  1394. if [ "$2" == "aimon" ];then
  1395. CREDITNOW=$(curl -k --data "authlogin=$C_SMS_USER&authpasswd=$C_SMS_PASSWORD" https://secure.apisms.it/http/get_credit)
  1396. fi
  1397. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_SMS_CREDIT" "$CREDITNOW"
  1398. fi
  1399.  
  1400. if [ "$1" == "Reboot" ];then
  1401. reboot
  1402. fi
  1403.  
  1404. if [ "$1" == "Shutdown" ];then
  1405. halt
  1406. fi
  1407.  
  1408. if [ "$1" == "SaveBandwidth" ];then
  1409. RATE=$( echo "$3*1024" | $C_ZT_BIN_DIR/bc | cut -d'.' -f1)
  1410. RATEKB=$(echo $RATE""Kbit)
  1411. WEIGHT=$( echo "$RATE/10" | $C_ZT_BIN_DIR/bc )
  1412. WEIGHTKB=$(echo $WEIGHT""Kbit)
  1413. if [ -f $C_ZT_CONF_DIR/cbqconf/cbq-$2 ];then
  1414. sed -i "s/^RATE=.*/RATE=$RATEKB/g" $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1415. sed -i "s/^WEIGHT=.*/WEIGHT=$WEIGHTKB/g" $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1416. else
  1417. INTERFACECP=$(cat $C_SYSTEM/cp/Interface | awk '{print $1}' )
  1418. file="# Bandwidth class: $2"
  1419. file="$file\nDEVICE=$INTERFACECP,1000Mbit,100Mbit"
  1420. file="$file\nRATE=$RATEKB"
  1421. file="$file\nWEIGHT=$WEIGHTKB"
  1422. file="$file\nPRIO=5"
  1423. echo -e "$file" > $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1424. chown root:root $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1425. chmod 755 $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1426. fi
  1427. fi
  1428.  
  1429. if [ "$1" == "SaveBandwidthUp" ];then
  1430. RATE=$( echo "$3*1024" | $C_ZT_BIN_DIR/bc | cut -d'.' -f1)
  1431. RATEKB=$(echo $RATE""Kbit)
  1432. WEIGHT=$( echo "$RATE/10" | $C_ZT_BIN_DIR/bc )
  1433. WEIGHTKB=$(echo $WEIGHT""Kbit)
  1434. if [ -f $C_ZT_CONF_DIR/cbqconf/cbq-$2 ];then
  1435. sed -i "s/^RATE=.*/RATE=$RATEKB/g" $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1436. sed -i "s/^WEIGHT=.*/WEIGHT=$WEIGHTKB/g" $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1437. else
  1438. INTERFACEWAN="$(route -n | grep '^0.0.0.0' | awk '{print $NF}')"
  1439. MARK=$(echo "$2" | cut -d'.' -f1)
  1440. file="# Bandwidth upload class: $2"
  1441. file="$file\nDEVICE=$INTERFACEWAN,1000Mbit,100Mbit"
  1442. file="$file\nRATE=$RATEKB\nWEIGHT=$WEIGHTKB"
  1443. file="$file\nPRIO=5\nMARK=$MARK"
  1444. echo -e "$file" > $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1445. chown root:root $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1446. chmod 755 $C_ZT_CONF_DIR/cbqconf/cbq-$2
  1447. fi
  1448. fi
  1449.  
  1450. if [[ "$1" == "SaveBandwidth" || "$1" == "SaveBandwidthUp" ]];then
  1451. $C_ZT_BIN_DIR/zt "Cancella" $C_ZT_CONF_DIR/cbqconf/cbq.init 2>/dev/null > /dev/null
  1452. $C_ZT_SCRIPTS_DIR/cbq.sh restart 2>/dev/null > /dev/null
  1453. fi
  1454.  
  1455. if [ "$1" == "ShaperRestart" ];then
  1456. $C_ZT_BIN_DIR/zt "Cancella" $C_ZT_CONF_DIR/cbqconf/cbq.init 2>/dev/null > /dev/null
  1457. $C_ZT_SCRIPTS_DIR/cbq.sh restart 2>/dev/null > /dev/null
  1458. fi
  1459.  
  1460. if [ "$1" == "DelShaperUser" ];then
  1461. $C_ZT_SCRIPTS_DIR/delshaperuser.sh "$2"
  1462.  
  1463. fi
  1464.  
  1465. if [ "$1" == "ShaperUser" ];then
  1466. $C_ZT_SCRIPTS_DIR/shaperuser.sh "$2" "$3"
  1467.  
  1468. fi
  1469.  
  1470. if [ "$1" == "Shaper" ];then
  1471. if [ "$2" == "on" ];then
  1472. INTERFACECP=$(cat $C_SYSTEM/cp/Interface | awk '{print $1}' )
  1473. INTERFACEWAN="$(route -n | grep '^0.0.0.0' | awk '{print $NF}')"
  1474. rm -rf $C_CLASSES_DIR/*/NumClass 2>/dev/null
  1475. echo "2" > $C_CLASSES_DIR/DEFAULT/NumClass
  1476. NUM=3
  1477. for CL in $(ls $C_CLASSES_DIR);do
  1478. if [ $CL != "DEFAULT" ];then
  1479. echo "$NUM" > $C_CLASSES_DIR/$CL/NumClass
  1480. NUM=$(($NUM+1))
  1481. fi
  1482. done
  1483. for CL in $(ls $C_CLASSES_DIR);do
  1484. if [ "$CL" != "DEFAULT" ];then
  1485. RATE=$(cat $C_CLASSES_DIR/$CL/Mbits)
  1486. RATEU=$(cat $C_CLASSES_DIR/$CL/MbitsUp)
  1487. NUM=$(cat $C_CLASSES_DIR/$CL/NumClass)
  1488. SHAPER=$(cat $C_CLASSES_DIR/$CL/ShaperType)
  1489. if [[ "$RATE" != "" && "$SHAPER" == "class" ]];then
  1490. RATE=$( echo "$RATE*1024" | $C_ZT_BIN_DIR/bc | cut -d'.' -f1)
  1491. RATEKB=$(echo $RATE""Kbit)
  1492. WEIGHT=$( echo "$RATE/10" | $C_ZT_BIN_DIR/bc )
  1493. WEIGHTKB=$(echo $WEIGHT""Kbit)
  1494. file="# Bandwidth class: $CL"
  1495. file="$file\nDEVICE=$INTERFACECP,1000Mbit,100Mbit"
  1496. file="$file\nRATE=$RATEKB"
  1497. file="$file\nWEIGHT=$WEIGHTKB"
  1498. file="$file\nPRIO=5"
  1499. echo -e "$file" > $C_ZT_CONF_DIR/cbqconf/cbq-$NUM.$CL
  1500. chown root:root $C_ZT_CONF_DIR/cbqconf/cbq-$NUM.$CL
  1501. chmod 755 $C_ZT_CONF_DIR/cbqconf/cbq-$NUM.$CL
  1502. fi
  1503. if [[ "$RATEU" != "" && "$SHAPER" == "class" ]];then
  1504. NUM=$(($NUM+100))
  1505. RATEU=$( echo "$RATEU*1024" | $C_ZT_BIN_DIR/bc | cut -d'.' -f1)
  1506. RATEKB=$(echo $RATEU""Kbit)
  1507. WEIGHT=$( echo "$RATEU/10" | $C_ZT_BIN_DIR/bc )
  1508. WEIGHTKB=$(echo $WEIGHT""Kbit)
  1509. file="# Bandwidth upload class: $CL"
  1510. file="$file\nDEVICE=$INTERFACEWAN,1000Mbit,100Mbit"
  1511. file="$file\nRATE=$RATEKB\nWEIGHT=$WEIGHTKB"
  1512. file="$file\nPRIO=5\nMARK=$NUM"
  1513. echo -e "$file" > $C_ZT_CONF_DIR/cbqconf/cbq-$NUM.$CL
  1514. chown root:root $C_ZT_CONF_DIR/cbqconf/cbq-$NUM.$CL
  1515. chmod 755 $C_ZT_CONF_DIR/cbqconf/cbq-$NUM.$CL
  1516. fi
  1517. fi
  1518. done
  1519. for IP in $(ls $C_SYSTEM/cp/Connected );do
  1520. USER_CON=$( cat $C_SYSTEM/cp/Connected/$IP/User | cut -d'@' -f1)
  1521. CLASS_US=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USER_CON radiusUserCategory)
  1522. CLASS_USER=$( echo "$CLASS_US" | grep -e '^radiusUserCategory: ' | sed 's/^radiusUserCategory: //g')
  1523. NUM_CLASS=$(cat $C_CLASSES_DIR/$CLASS_USER/NumClass)
  1524. if [ -f $C_ZT_CONF_DIR/cbqconf/cbq-$NUM_CLASS.$CLASS_USER ];then
  1525. echo "RULE=$IP/32" >> $C_ZT_CONF_DIR/cbqconf/cbq-$NUM_CLASS.$CLASS_USER
  1526. fi
  1527. NUM_CLASS_U=$(($NUM_CLASS+100))
  1528. if [ -f $C_ZT_CONF_DIR/cbqconf/cbq-$NUM_CLASS_U.$CLASS_USER ];then
  1529. echo "RULE=$IP/32" >> $C_ZT_CONF_DIR/cbqconf/cbq-$NUM_CLASS_U.$CLASS_USER
  1530. fi
  1531. done
  1532. $C_ZT_BIN_DIR/zt "Cancella" $C_ZT_CONF_DIR/cbqconf/cbq.init 2>/dev/null > /dev/null
  1533. $C_ZT_SCRIPTS_DIR/cbq.sh start 2>/dev/null > /dev/null
  1534. else
  1535. $C_ZT_SCRIPTS_DIR/cbq.sh stop 2>/dev/null > /dev/null
  1536. $C_ZT_BIN_DIR/zt "Cancella" $C_ZT_CONF_DIR/cbqconf/cbq.init 2>/dev/null > /dev/null
  1537. rm -rf $C_CLASSES_DIR/*/NumClass 2>/dev/null
  1538. rm -rf $C_ZT_CONF_DIR/cbqconf/* 2>/dev/null > /dev/null
  1539. fi
  1540. fi
  1541.  
  1542. if [ "$1" == "Proxy" ];then
  1543. $C_ZT_BIN_DIR/zt "ConfigProxy"
  1544. chmod -R 777 $C_ZT_LOG_DIR
  1545. $C_ZS_SCRIPTS_DIR/proxy_stop 2>/dev/null >/dev/null
  1546. if [ -n "$($C_ZT_BIN_DIR/zt ControlActive squid)" ]; then
  1547. $C_ZT_PROXY_DIR/sbin/squid -k shutdown
  1548. $C_ZS_SCRIPTS_DIR/terminate squid
  1549. $C_ZS_SCRIPTS_DIR/terminate squid
  1550. rm -f $C_ZT_PROXY_DIR/var/run/squid.pid
  1551. /usr/bin/logger -t squid "Squid terminate"
  1552. fi
  1553. if [ -n "$($C_ZT_BIN_DIR/zt ControlActive dansguardian)" ]; then
  1554. $C_ZT_PROXY_DIR/sbin/dansguardian -q
  1555. rm -rf $C_ZT_PROXY_DIR/var/run/dansguardian.pid
  1556. /usr/bin/logger -t dansguardian "Dansguardian terminate"
  1557. fi
  1558. echo "" > $C_SYSTEM/havp/Enabled
  1559. $C_ZS_SCRIPTS_DIR/proxy_fw_reset
  1560. $C_ZS_SCRIPTS_DIR/terminate dansguardian
  1561. $C_ZS_SCRIPTS_DIR/terminate havp
  1562. $C_ZS_SCRIPTS_DIR/terminate freshclam
  1563. rm -rf $SYSTEM/havp/clamav.tmp/* $SYSTEM/havp/tmp/*
  1564. if [ "$2" == "on-on" ];then
  1565. echo "yes" > $C_SYSTEM/havp/Enabled
  1566. rm -f $C_ZT_CONF_DIR/squid.conf
  1567. if [ -n "$C_DANSGUARDIAN" ];then
  1568. SQUIDCONF="squid-dg-havp.conf"
  1569. CONTROL_DANS="yes"
  1570. HAVPCONF="havp-dg-squid.conf"
  1571. else
  1572. SQUIDCONF="squid-havp.conf"
  1573. HAVPCONF="havp-squid.conf"
  1574. fi
  1575. cp -f $C_ZT_PROXY_DIR/etc/squid/$SQUIDCONF $C_ZT_PROXY_DIR/etc/squid.conf
  1576. cp -f $C_ZT_PROXY_DIR/etc/havp/$HAVPCONF $C_ZT_PROXY_DIR/etc/havp.conf
  1577. if [ -z "$C_SQ_LOG"];then
  1578. sed -i "s/^#access_log/access_log none/g" $C_ZT_PROXY_DIR/etc/squid.conf
  1579. else
  1580. sed -i "s/^#access_log/access_log syslog:daemon/g" $C_ZT_PROXY_DIR/etc/squid.conf
  1581. fi
  1582. if [ "$(cat $C_SYSTEM/havp/BlackList)" == "no" ];then
  1583. sed -i "s/^BLACKLIST.*/BLACKLIST \/dev\/null/g" $C_ZT_PROXY_DIR/etc/havp.conf
  1584. fi
  1585. if [ "$(cat $C_SYSTEM/havp/WhiteList)" == "no" ];then
  1586. sed -i "s/^WHITELIST.*/WHITELIST \/dev\/null/g" $C_ZT_PROXY_DIR/etc/havp.conf
  1587. fi
  1588. $C_ZT_BIN_DIR/zt "InterSquid"
  1589. if [ -z $(ls -d $C_ZT_PROXY_DIR/var/cache/squid/00) ];then
  1590. $C_ZT_PROXY_DIR/sbin/squid -z 2>/dev/null >/dev/null
  1591. fi
  1592. $C_ZT_PROXY_DIR/sbin/squid -s 2>/dev/null >/dev/null
  1593. chown -R havp /var/log/havp
  1594. if havp -c $C_ZT_PROXY_DIR/etc/havp.conf >/dev/null 2>/dev/null ; then
  1595. if [ -n "$CONTROL_DANS" ];then
  1596. $C_ZT_PROXY_DIR/sbin/dansguardian
  1597. fi
  1598. $C_ZS_SCRIPTS_DIR/proxy_fw
  1599. if ! ls $C_SYSTEM/havp/redirects/* 2>/dev/null >/dev/null ; then
  1600. /usr/bin/logger -t proxy "WARNING: No HTTP capturing rules defined."
  1601. fi
  1602. else
  1603. logger -t proxy "RESETTING VIRUS DATABASE."
  1604. rm -rf $C_SYSTEM/ClamAV/db/
  1605. mkdir -p $C_SYSTEM/ClamAV/db
  1606. if ! cp /usr/local/share/clamav/main.cvd $C_SYSTEM/ClamAV/db ; then
  1607. logger -t proxy "ERROR: Virus database corrupted. Check the profile disk space."
  1608. fi
  1609. chown -R havp $C_SYSTEM/ClamAV/db
  1610. if havp -c $C_ZT_PROXY_DIR/etc/havp.conf >/dev/null 2>/dev/null ; then
  1611. $C_ZS_SCRIPTS_DIR/proxy_fw
  1612. if ! ls $C_SYSTEM/havp/redirects/* 2>/dev/null >/dev/null ; then
  1613. /usr/bin/logger -t proxy "WARNING: No HTTP capturing rules defined."
  1614. fi
  1615. fi
  1616. fi
  1617. fi
  1618. if [ "$2" == "on-" ];then
  1619. rm -f $C_ZT_CONF_DIR/squid.conf
  1620. if [ -n "$C_DANSGUARDIAN" ];then
  1621. SQUIDCONF="squid-dg.conf"
  1622. CONTROL_DANS="yes"
  1623. else
  1624. SQUIDCONF="squid-only.conf"
  1625. fi
  1626. cp -f $C_ZT_PROXY_DIR/etc/squid/$SQUIDCONF $C_ZT_PROXY_DIR/etc/squid.conf
  1627. $C_ZT_BIN_DIR/zt "InterSquid"
  1628. if [ -z "$C_SQ_LOG"];then
  1629. sed -i "s/^access_log/access_log none/g" $C_ZT_PROXY_DIR/etc/squid.conf
  1630. else
  1631. sed -i "s/^access_log/access_log syslog:daemon/g" $C_ZT_PROXY_DIR/etc/squid.conf
  1632. fi
  1633. if [[ "$(cat $C_SYSTEM/havp/WhiteList)" == "yes" && -n "$(cat /Database/var/register/system/havp/WhiteList.txt)" ]];then
  1634. $C_ZT_BIN_DIR/zt "RimuoviRiga" "acl blacklist" "$C_ZT_PROXY_DIR/etc/squid.conf"
  1635. $C_ZT_BIN_DIR/zt "RimuoviRiga" "http_access deny blacklist" "$C_ZT_PROXY_DIR/etc/squid.conf"
  1636. fi
  1637. if [[ "$(cat $C_SYSTEM/havp/WhiteList)" == "no" || -z "$(cat /Database/var/register/system/havp/WhiteList.txt)" ]];then
  1638. $C_ZT_BIN_DIR/zt "RimuoviRiga" "acl whitelist" "$C_ZT_PROXY_DIR/etc/squid.conf"
  1639. $C_ZT_BIN_DIR/zt "RimuoviRiga" "http_access deny !whitelist" "$C_ZT_PROXY_DIR/etc/squid.conf"
  1640. fi
  1641. if [ "$(cat $C_SYSTEM/havp/BlackList)" == "no" ];then
  1642. $C_ZT_BIN_DIR/zt "RimuoviRiga" "acl blacklist" "$C_ZT_PROXY_DIR/etc/squid.conf"
  1643. $C_ZT_BIN_DIR/zt "RimuoviRiga" "http_access deny blacklist" "$C_ZT_PROXY_DIR/etc/squid.conf"
  1644. fi
  1645. if [ -z $(ls -d $C_ZT_PROXY_DIR/var/cache/squid/00) ];then
  1646. $C_ZT_PROXY_DIR/sbin/squid -z 2>/dev/null >/dev/null
  1647. fi
  1648. $C_ZT_PROXY_DIR/sbin/squid -s >/dev/null 2>/dev/null
  1649. if [[ -n "$CONTROL_DANS" && -n $(ps -A | grep squid) ]];then
  1650. $C_ZT_PROXY_DIR/sbin/dansguardian
  1651. fi
  1652. $C_ZT_BIN_DIR/zt "Proxy_fw"
  1653. fi
  1654. if [ "$2" == "-on" ];then
  1655. echo "yes" > $C_SYSTEM/havp/Enabled
  1656. if [ -n "$C_DANSGUARDIAN" ];then
  1657. $C_ZT_PROXY_DIR/sbin/dansguardian
  1658. HAVPCONF="havp-dg.conf"
  1659. else
  1660. HAVPCONF="havp-only.conf"
  1661. fi
  1662. cp -f $C_ZT_PROXY_DIR/etc/havp/$HAVPCONF $C_ZT_PROXY_DIR/etc/havp.conf
  1663. if [ "$(cat $C_SYSTEM/havp/BlackList)" == "no" ];then
  1664. sed -i "s/^BLACKLIST.*/BLACKLIST \/dev\/null/g" $C_ZT_PROXY_DIR/etc/havp.conf
  1665. echo ""
  1666. fi
  1667. if [ "$(cat $C_SYSTEM/havp/WhiteList)" == "no" ];then
  1668. sed -i "s/^WHITELIST.*/WHITELIST \/dev\/null/g" $C_ZT_PROXY_DIR/etc/havp.conf
  1669. echo ""
  1670. fi
  1671. if havp -c $C_ZT_PROXY_DIR/etc/havp.conf >/dev/null 2>/dev/null ; then
  1672. $C_ZS_SCRIPTS_DIR/proxy_fw
  1673. if ! ls $C_SYSTEM/havp/redirects/* 2>/dev/null >/dev/null ; then
  1674. /usr/bin/logger -t proxy "WARNING: No HTTP capturing rules defined."
  1675. fi
  1676. else
  1677. logger -t proxy "RESETTING VIRUS DATABASE."
  1678. rm -rf $C_SYSTEM/ClamAV/db/
  1679. mkdir -p $C_SYSTEM/ClamAV/db
  1680. if ! cp /usr/local/share/clamav/main.cvd $C_SYSTEM/ClamAV/db ; then
  1681. logger -t proxy "ERROR: Virus database corrupted. Check the profile disk space."
  1682. fi
  1683. chown -R havp $C_SYSTEM/ClamAV/db
  1684. if havp -c $C_ZT_PROXY_DIR/etc/havp.conf >/dev/null 2>/dev/null ; then
  1685. $C_ZS_SCRIPTS_DIR/proxy_fw
  1686. if ! ls $C_SYSTEM/havp/redirects/* 2>/dev/null >/dev/null ; then
  1687. /usr/bin/logger -t proxy "WARNING: No HTTP capturing rules defined."
  1688. fi
  1689. fi
  1690. fi
  1691. fi
  1692. fi
  1693.  
  1694. if [ "$1" == "ConfigProxy" ];then
  1695. INTERFACECP=$(cat $C_SYSTEM/cp/Interface | awk '{print $1}' )
  1696. IPCP=$(cat $C_SYSTEM/net/interfaces/$INTERFACECP/IP/00/IP)
  1697. rm -rf $C_ZT_PROXY_DIR/languages/havp/template
  1698. cp -a $C_ZT_PROXY_DIR/languages/havp/$C_LANGUAGE $C_ZT_PROXY_DIR/languages/havp/template
  1699. sed -i "s/ipcp/$IPCP/g" $C_ZT_PROXY_DIR/languages/havp/template/*.html
  1700. sed -i "s/zerotruth/$C_HOTSPOT_NAME/g" $C_ZT_PROXY_DIR/languages/havp/template/*.html
  1701.  
  1702. if [ -d $C_ZT_PROXY_DIR/languages/squid ];then
  1703. rm -rf $C_ZT_PROXY_DIR/languages/squid/template
  1704. cp -a $C_ZT_PROXY_DIR/languages/squid/$C_LANGUAGE $C_ZT_PROXY_DIR/languages/squid/template
  1705. sed -i "s/ipcp/$IPCP/g" $C_ZT_PROXY_DIR/languages/squid/template/*
  1706. sed -i "s/zerotruth/$C_HOTSPOT_NAME/g" $C_ZT_PROXY_DIR/languages/squid/template/*
  1707. fi
  1708. if [ -d $C_ZT_PROXY_DIR/languages/dansguardian ];then
  1709. rm -rf $C_ZT_PROXY_DIR/languages/dansguardian/template
  1710. cp -a $C_ZT_PROXY_DIR/languages/dansguardian/$C_LANGUAGE $C_ZT_PROXY_DIR/languages/dansguardian/template
  1711. sed -i "s/ipcp/$IPCP/g" $C_ZT_PROXY_DIR/languages/dansguardian/template/template.html
  1712. sed -i "s/zerotruth/$C_HOTSPOT_NAME/g" $C_ZT_PROXY_DIR/languages/dansguardian/template/template.html
  1713. fi
  1714. fi
  1715.  
  1716. if [ "$1" == "RimuoviRiga" ];then
  1717. sed -i "/^$2/d" $3
  1718. sed -i "/^$/d" $3
  1719. fi
  1720. if [ "$1" == "RimuoviNumRiga" ];then
  1721. sed -i "$2d" $3
  1722. sed -i "/^$/d" $3
  1723. fi
  1724.  
  1725. if [ "$1" == "DelConnesso" ];then
  1726. sed -i "/$2/d" $3
  1727. sed -i "/^$/d" $3
  1728. fi
  1729.  
  1730. if [ "$1" == "UpdateClamav" ];then
  1731. $C_ZS_SCRIPTS_DIR/ClamAV-Update
  1732. fi
  1733.  
  1734. if [ "$1" == "Esegui" ];then
  1735. $2 "$3" "$4"
  1736. fi
  1737.  
  1738. if [ "$1" == "Bash" ];then
  1739. COMAND=$(echo -e "$2" | sed 's/%2F/\//g' | sed 's/%22/\"/g' | sed 's/%7C/\|/g' | sed 's/%5C/\\/g'| sed 's/%3D/\=/g' | sed 's/%2C/\,/g' | sed 's/%3B/\;/g' | sed 's/%24/\$/g')
  1740. HOSTN=$(echo $HOSTNAME | cut -d'.' -f1)
  1741. DIR=$(cat /tmp/dirbash | sed 's/%2F/\//g' | sed 's/%22/\"/g' | sed 's/%7C/\|/g' | sed 's/%5C/\\/g'| sed 's/%3D/\=/g' | sed 's/%2C/\,/g' | sed 's/%3B/\;/g')
  1742. if [[ -d "$DIR" && -z $(echo "$DIR" | grep '\.\.') ]];then
  1743. DIRLINE=$(echo $DIR | sed 's/\// /g' | awk '{print $NF}')
  1744. echo -en "root@$HOSTN $DIRLINE>"
  1745. if [ "$(echo "$COMAND" | awk '{print $1}')" != "cd" ];then
  1746. echo " $COMAND"
  1747. fi
  1748. cd $DIR
  1749. RESULT=$(echo -e "$(eval "$COMAND" | sed 's/</\&lt;/g' | sed 's/>/\&gt;/g' | sed 's/\\n/\&\#92;n/g' )")
  1750. echo -e "$RESULT"
  1751. else
  1752. DIRORI=$(cat /tmp/dirbashori | sed 's/%2F/\//g' | sed 's/%22/\"/g' | sed 's/%7C/\|/g' | sed 's/%5C/\\/g'| sed 's/%3D/\=/g' | sed 's/%2C/\,/g' | sed 's/%3B/\;/g')
  1753. DIRORI=$(echo $DIRORI | sed 's/\// /g' | awk '{print $NF}')
  1754. echo "root@$HOSTN $DIRORI>"
  1755. echo "$(cat /tmp/dirbashori)" > /tmp/dirbash
  1756. echo "No such directory ff"
  1757. fi
  1758. fi
  1759.  
  1760. if [ "$1" == "PerFile" ];then
  1761. chown $2:$2 $4
  1762. chmod $3 $4
  1763. fi
  1764.  
  1765. if [ "$1" == "UpdateBlockHosts" ];then
  1766. [ -z "$C_ACTIVE_AD" ] && exit
  1767. /usr/local/bin/curl -l http://someonewhocares.org/hosts/ | sed -n "/\;wiki-spam-sites/,/\/wiki-spam-sites/p" > /tmp/blockhosts
  1768. sed -i "/#./d" /tmp/blockhosts
  1769. sed -i "/^$/d" /tmp/blockhosts
  1770. sed -i "1 i ##### BLOCKED HOSTS #####" /tmp/blockhosts
  1771. echo "##### END BLOCKED HOSTS #####" >> /tmp/blockhosts
  1772. if [ -n "$(cat /etc/hosts | grep 'END')" ];then
  1773. cat /etc/hosts | sed -n "/END/,//p" | sed "/END/d" >> /tmp/blockhosts
  1774. else
  1775. cat /etc/hosts >> /tmp/blockhosts
  1776. fi
  1777. mv /tmp/blockhosts /etc/hosts
  1778. if [ -z "$(cat $C_ZT_CONF_DIR/zt.config | grep "C_UPDATES_AD")" ];then
  1779. $C_ZT_BIN_DIR/zt "Aggiungi" "C_UPDATES_AD=\"\"" "$C_ZT_CONF_DIR/zt.config"
  1780. fi
  1781. TD=$(date '+%s')
  1782. sed -i "s/^C_UPDATES_AD=.*/C_UPDATES_AD=\"$TD\"/g" $C_ZT_CONF_DIR/zt.config
  1783. exit
  1784. fi
  1785.  
  1786. if [ "$1" == "CreaCartellaBk" ];then
  1787. mkdir $2
  1788. chown root:root $2
  1789. chmod -R 777 $C_ZT_DIR/tmp
  1790. exit
  1791. fi
  1792.  
  1793. if [ "$1" == "OpenBk" ];then
  1794. cd $C_ZT_DIR/tmp/restorebk
  1795. FILE_BK="$(ls *.tgz)"
  1796. tar zxvf $FILE_BK 2> /dev/null >/dev/null
  1797. rm -rf $FILE_BK
  1798. DIRBK="$(ls)"
  1799. DATEBK="$(ls | cut -d'_' -f2)"
  1800. mv $DIRBK backup_$DATEBK
  1801. exit
  1802. fi
  1803.  
  1804. if [ "$1" == "DeleteDataBk" ];then
  1805. if [ "$2" == "yes" ];then
  1806. PEOPLE=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid )
  1807. USERPEOPLE=$(echo "$PEOPLE" | sed -n '/uid:/p' | awk '{ print $2 }')
  1808. START="START"
  1809. STOP="STOP"
  1810. for USERDEL in $USERPEOPLE;do
  1811. if [ "$USERDEL" != "admin" ];then
  1812. if [ -d $C_CRON_SCRIPTS_DIR/ZT$USERDEL$STOP-Cron ];then
  1813. $C_ZT_BIN_DIR/zt "Cancella" "$C_CRON_SCRIPTS_DIR/ZT$USERDEL$STOP-Cron"
  1814. $C_ZT_BIN_DIR/zt "Cancella" "$C_CRON_SCRIPTS_DIR/ZT$USERDEL$START-Cron"
  1815. fi
  1816. LINE=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid=$USERDEL givenName sn)
  1817. NAME=$( echo "$LINE" | grep -e '^givenName: ' | sed 's/^givenName: //g' | sed 's/ /_/g')
  1818. LAST_NAME=$( echo "$LINE" | grep -e '^sn: ' | sed 's/^sn: //g' | sed 's/ /_/g')
  1819. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "uid=$USERDEL,ou=People,$C_LDAPBASE" 2> /dev/null >/dev/null
  1820. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "cn=$USERDEL,ou=Radius,$C_LDAPBASE" 2> /dev/null >/dev/null
  1821. CONNECTED=$(ls $C_CP_DIR/Connected )
  1822. if [ -n "$CONNECTED" ];then
  1823. for IP in "$CONNECTED";do
  1824. if [ $( cat $C_CP_DIR/Connected/$IP/User | cut -d'@' -f1) == "$USERDEL" ];then
  1825. $C_ZT_BIN_DIR/zt "Disconnetti" "$IP" "$USERDEL"
  1826. fi
  1827. done
  1828. fi
  1829. if [ -d $C_ACCT_DIR/entries/$USERDEL/sessions ];then
  1830. TODAY=$(date +%d%m%Y)
  1831. $C_ZT_BIN_DIR/zt "CreaCartella" "$C_ZT_DIR/deleted/$NAME-$LAST_NAME-$TODAY"
  1832.  
  1833. $C_ZT_BIN_DIR/zt "CopiaTutto" "$C_ACCT_DIR/entries/$USERDEL" "$C_ZT_DIR/deleted/$NAME-$LAST_NAME-$TODAY"
  1834. $C_ZT_BIN_DIR/zt "Cancella" "$C_ACCT_DIR/entries/$USERDEL"
  1835. if [ -n $(ls $C_ZT_DIR/expired/$USER_EX/sessions 2> /dev/null) ];then
  1836. if ! [ -d $C_ZT_DIR/deleted/$NAME-$LAST_NAME-$TODAY ];then
  1837. $C_ZT_BIN_DIR/zt "CreaCartella" "$C_ZT_DIR/deleted/$NAME-$LAST_NAME-$TODAY"
  1838. fi
  1839. $C_ZT_BIN_DIR/zt "CopiaTutto" "$C_ZT_DIR/expired/$USERDEL" "$C_ZT_DIR/deleted/$NAME-$LAST_NAME-$TODAY"
  1840. if [ -d $C_ZT_DIR/expired/$USERDEL ];then
  1841. $C_ZT_BIN_DIR/zt "Cancella" "$C_ZT_DIR/expired/$USERDEL"
  1842. fi
  1843. fi
  1844. if [ -f $C_ACCT_DIR/credits/$USERDEL/Credit ];then
  1845. $C_ZT_BIN_DIR/zt "Copia" "$C_ACCT_DIR/credits/$USERDEL/Credit" "$C_ZT_DIR/deleted/$NAME-$LAST_NAME-$TODAY/Credit"
  1846. fi
  1847. fi
  1848. if [ -d $C_ACCT_DIR/entries/$USERDEL ];then
  1849. $C_ZT_BIN_DIR/zt "Cancella" "$C_ACCT_DIR/entries/$USERDEL"
  1850. fi
  1851. if [ -d $C_ACCT_DIR/credits/$USERDEL ];then
  1852. $C_ZT_BIN_DIR/zt "Cancella" "$C_ACCT_DIR/credits/$USERDEL"
  1853. fi
  1854. $C_ZT_BIN_DIR/zt "DelK5" "$USERDEL" 2> /dev/null >/dev/null
  1855. fi
  1856. done
  1857. $C_ZT_BIN_DIR/zt "RestartCron"
  1858. fi
  1859. if [ "$3" == "yes" ];then
  1860. for PROGDIR in $(ls $C_SYSTEM/startup/scripts/);do
  1861. if [[ "$PROGDIR" != "ZTcontrol-Cron" && "$PROGDIR" != "ZTunlockclientday-Cron" && "$PROGDIR" != "ZTunlockclientmonth-Cron" && "$PROGDIR" != "postboot" ]];then
  1862. rm -rf $C_SYSTEM/startup/scripts/$PROGDIR
  1863. fi
  1864. done
  1865. fi
  1866. if [ "$4" == "yes" ];then
  1867. for SESSDIR in $(ls $C_ACCT_DIR/entries/);do
  1868. rm -rf $C_ACCT_DIR/entries/$SESSDIR
  1869. done
  1870. fi
  1871. if [ "$5" == "yes" ];then
  1872. for CLASSDIR in $(ls $C_CLASSES_DIR/);do
  1873. rm -rf $C_CLASSES_DIR/$CLASSDIR
  1874. done
  1875. fi
  1876. if [ "$6" == "yes" ];then
  1877. for CLIENTDIR in $(ls $C_CP_DIR/FreeClients/);do
  1878. $C_ZT_BIN_DIR/zt "RemoveFreeClient" "$CLIENTDIR"
  1879. rm -rf $C_CP_DIR/FreeClients/$CLIENTDIR
  1880. done
  1881. fi
  1882. if [ "$7" == "yes" ];then
  1883. for SERVICESDIR in $(ls $C_CP_DIR/FreeServices/);do
  1884. $C_ZT_BIN_DIR/zt "RemoveFreeService" "$SERVICESDIR"
  1885. rm -rf $C_CP_DIR/FreeServices/$SERVICESDIR
  1886. done
  1887. fi
  1888. fi
  1889.  
  1890. if [ "$1" == "RestoreUsers" ];then
  1891. sed -i "s/dn: uid=admin/rOl9jhyYtgbvCF/g" $C_ZT_DIR/tmp/restorebk/$2/ldap_ldif
  1892. sed -i "s/^$/## END/g" $C_ZT_DIR/tmp/restorebk/$2/ldap_ldif
  1893. echo "ENDFILE" >> $C_ZT_DIR/tmp/restorebk/$2/ldap_ldif
  1894. cat $C_ZT_DIR/tmp/restorebk/$2/ldap_ldif | sed -n "/^dn: uid=/,/^ENDFILE/p" > /tmp/LDAP_FILE
  1895. sed -i "/^ENDFILE/d" /tmp/LDAP_FILE
  1896. sed -i "/^$/d" /tmp/LDAP_FILE
  1897. BASE=$(cat /tmp/LDAP_FILE | grep "dn: uid" | tail -1)
  1898. LDAPBASE="$(echo "$BASE" | cut -d',' -f3),$(echo "$BASE" | cut -d',' -f4)"
  1899. if [ "$LDAPBASE" != "$C_LDAPBASE" ];then
  1900. sed -i "s/$LDAPBASE/$C_LDAPBASE/g" /tmp/LDAP_FILE
  1901. fi
  1902. N_USERS=$(cat /tmp/LDAP_FILE | grep 'dn: uid' | wc -l)
  1903. for NR in $(seq 1 $N_USERS);do
  1904. USER="$(cat /tmp/LDAP_FILE | grep 'dn: uid' | cut -d'=' -f2 | cut -d',' -f1 | /bin/sed -n "${NR}p")"
  1905. LINE=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid=$USER uid )
  1906. USERLOCAL=$( echo "$LINE" | grep -e '^uid: ' | sed 's/^uid: //g' )
  1907. cat /tmp/LDAP_FILE | sed -n "/^dn: uid=$USER\,/,/^## END/p" > /tmp/LDAP_PEOPLE_$USER
  1908. sed -i "/^## /d" /tmp/LDAP_PEOPLE_$USER
  1909. NAME=$( cat /tmp/LDAP_PEOPLE_$USER | grep -e '^givenName: ' | sed 's/^givenName: //g' )
  1910. LAST_NAME=$( cat /tmp/LDAP_PEOPLE_$USER | grep -e '^sn: ' | sed 's/^sn: //g' )
  1911. cat /tmp/LDAP_FILE | sed -n "/^dn: cn=$USER\,/,/^## END/p" > /tmp/LDAP_RADIUS_$USER
  1912. sed -i "/^## /d" /tmp/LDAP_RADIUS_$USER
  1913. if [ -n "$USERLOCAL" ];then
  1914. for RR in "structuralObjectClass" "entryUUID" "creatorsName" "createTimestamp" "uidNumber" "gidNumber" "objectClass" \
  1915. "cn" "o" "uidNumber" "homeDirectory" "loginShell" "entryCSN" "modifiersName" "modifyTimestamp";do
  1916. sed -i "/^$RR\:/d" /tmp/LDAP_PEOPLE_$USER
  1917. done
  1918. sed -i "/^$/d" /tmp/LDAP_PEOPLE_$USER
  1919. cat /tmp/LDAP_PEOPLE_$USER | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT 2>/dev/null >/dev/null || CONTROL_ERROR="yes"
  1920. for RR in "structuralObjectClass" "objectClass" "entryUUID" "creatorsName" "createTimestamp" "dialupAccess" \
  1921. "entryCSN" "modifiersName" "modifyTimestamp";do
  1922. sed -i "/^$RR\:/d" /tmp/LDAP_RADIUS_$USER
  1923. done
  1924. sed -i "/^$/d" /tmp/LDAP_RADIUS_$USER
  1925. cat /tmp/LDAP_RADIUS_$USER | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT 2>/dev/null >/dev/null || CONTROL_ERROR="yes"
  1926. echo "<tr><td align=\"center\">$NR</td><td>&nbsp;$USER</td><td>&nbsp;$NAME</td><td>&nbsp;$LAST_NAME</td><td>"
  1927. if [ "$CONTROL_ERROR" != "yes" ];then
  1928. PASSWORD=$(cat /tmp/LDAP_RADIUS_$USER | grep "sn:" | cut -d' ' -f2 | cut -d'-' -f1)
  1929. SHADOWEXPIRE=$(cat /tmp/LDAP_PEOPLE_$USER | grep "shadowExpire:" | cut -d' ' -f2 )
  1930. EXPIRE=$(date -d "1970-01-01 $SHADOWEXPIRE days" +%Y-%m-%d)
  1931. $C_ZT_BIN_DIR/zt "UpdateK5" "$PASSWORD" "$USER" "$EXPIRE" > /dev/null
  1932. echo "&nbsp;$L_UPDATED"
  1933. else
  1934. echo "<font color=\"red\">$L_NOT_UPDATED $CONTROL_ERROR</font>"
  1935.  
  1936. fi
  1937. echo "</td></tr>"
  1938. else
  1939. for RR in "structuralObjectClass" "entryUUID" "creatorsName" "createTimestamp" \
  1940. "entryCSN" "modifiersName" "modifyTimestamp" "uidNumber" ;do
  1941. sed -i "/^$RR\:/d" /tmp/LDAP_PEOPLE_$USER
  1942. done
  1943. sed -i "/^$/d" /tmp/LDAP_PEOPLE_$USER
  1944. UIDN=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uidNumber | sed -n '/uidNumber:/p' | awk '{ print $2 }' | sort -n | tail -1 )
  1945. UIDNUMBER=$(($UIDN+1))
  1946. echo "uidNumber: $UIDNUMBER" >> /tmp/LDAP_PEOPLE_$USER
  1947. cat /tmp/LDAP_PEOPLE_$USER | /usr/local/bin/ldapadd -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT 2>/dev/null >/dev/null || CONTROL_ERROR="yes"
  1948. for RR in "structuralObjectClass" "entryUUID" "creatorsName" "createTimestamp" \
  1949. "entryCSN" "modifiersName" "modifyTimestamp";do
  1950. sed -i "/^$RR\:/d" /tmp/LDAP_RADIUS_$USER
  1951. done
  1952. sed -i "/^$/d" /tmp/LDAP_RADIUS_$USER
  1953. cat /tmp/LDAP_RADIUS_$USER | /usr/local/bin/ldapadd -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT 2>/dev/null >/dev/null || CONTROL_ERROR="yes"
  1954. echo "<tr><td align=\"center\">$NR</td><td>&nbsp;$USER</td><td>&nbsp;$NAME</td><td>&nbsp;$LAST_NAME</td><td>"
  1955. if [ "$CONTROL_ERROR" != "yes" ];then
  1956. PASSWORD=$(cat /tmp/LDAP_RADIUS_$USER | grep "sn:" | cut -d' ' -f2 | cut -d'-' -f1)
  1957. SHADOWEXPIRE=$(cat /tmp/LDAP_PEOPLE_$USER | grep "shadowExpire:" | cut -d' ' -f2 )
  1958. EXPIRE=$(date -d "1970-01-01 $SHADOWEXPIRE days" +%Y-%m-%d)
  1959. $C_ZT_BIN_DIR/zt "AddK5" "$PASSWORD" "$USER" "$EXPIRE" > /dev/null
  1960. echo "&nbsp;$L_ADDED"
  1961. else
  1962. echo "&nbsp;<font color=\"red\">$L_NOT_ADDED</font>"
  1963. fi
  1964. echo "</td></tr>"
  1965. fi
  1966. rm -rf /tmp/LDAP_PEOPLE_$USER
  1967. rm -rf /tmp/LDAP_RADIUS_$USER
  1968. CONTROL_ERROR=""
  1969. NR=$(($NR+1))
  1970. done
  1971. rm -rf /tmp/LDAP_FILE
  1972. exit
  1973. fi
  1974.  
  1975. if [ "$1" == "RestoreClasses" ];then
  1976. NC=1
  1977. for CLASSDIR in $(ls $C_ZT_DIR/tmp/restorebk/$2/classes/);do
  1978. [ -d $C_CLASSES_DIR/$CLASSDIR ] && CONTROL="yes"
  1979. cp -a $C_ZT_DIR/tmp/restorebk/$2/classes/$CLASSDIR $C_CLASSES_DIR/$CLASSDIR
  1980. echo "<tr><td align=\"center\">$NC</td><td>&nbsp;$CLASSDIR</td><td>"
  1981. if [ "$CONTROL" != "yes" ];then
  1982. echo "&nbsp;$L_ADDED"
  1983. else
  1984. echo "&nbsp;$L_UPDATED"
  1985. fi
  1986. echo "</td></tr>"
  1987. NC=$(($NC+1))
  1988. done
  1989. exit
  1990. fi
  1991. if [ "$1" == "RestoreLogMudc" ];then
  1992. N=0
  1993. for DATAFILE in $(ls -A $C_ZT_DIR/tmp/restorebk/$2/mudclog/);do
  1994. if [ -n "$DATAFILE" ];then
  1995. if [[ "$DATAFILE" != "Graphs" && "$DATAFILE" != "Sessions" ]];then
  1996. N=$(($N + 1))
  1997. cp -f $C_ZT_DIR/tmp/restorebk/$2/mudclog/$DATAFILE $C_ZT_DIR/mudc/log/
  1998. echo "<tr><td>$N</td><td>$DATAFILE</td><td>&nbsp;$L_UPDATED</td></tr>"
  1999. fi
  2000. fi
  2001. done
  2002. exit
  2003. fi
  2004.  
  2005. if [ "$1" == "RestoreConfigMudc" ];then
  2006. N=0
  2007. for DATAFILE in $(ls -A $C_ZT_DIR/tmp/restorebk/$2/mudcconf);do
  2008. if [ -n "$DATAFILE" ];then
  2009. if [ "$DATAFILE" != "ssh" ];then
  2010. N=$(($N + 1))
  2011. cp -f $C_ZT_DIR/tmp/restorebk/$2/mudcconf/conf/$DATAFILE $C_ZT_DIR/mudc/conf/
  2012. echo "<tr><td>$N</td><td>$DATAFILE</td><td>&nbsp;$L_UPDATED</td></tr>"
  2013. fi
  2014. fi
  2015. done
  2016. for DATAFILE in $(ls -A $C_ZT_DIR/tmp/restorebk/$2/mudcconf/mudcconf/ssh/);do
  2017. if [ -n "$DATAFILE" ];then
  2018. [ ! -d $C_ZT_DIR/mudc/conf/ssh ] && mkdir $C_ZT_DIR/mudc/conf/ssh
  2019. N=$(($N + 1))
  2020. cp -f $C_ZT_DIR/tmp/restorebk/$2/mudcconf/ssh/$DATAFILE $C_ZT_DIR/mudc/conf/ssh/
  2021. echo "<tr><td>$N</td><td>$DATAFILE</td><td>&nbsp;$L_UPDATED</td></tr>"
  2022. fi
  2023. done
  2024. fi
  2025. if [ "$1" == "RestoreGraphsMudc" ];then
  2026. for DATAFILE in $(ls -A $C_ZT_DIR/tmp/restorebk/$2/mudcgraphs/);do
  2027. if [ -n "$DATAFILE" ];then
  2028. cp -f $C_ZT_DIR/tmp/restorebk/$2/mudcgraphs/$DATAFILE $C_ZT_DIR/mudc/data/Graphs/$DATAFILE
  2029. echo "<tr><td>$N</td><td>$DATAFILE</td><td>&nbsp;$L_UPDATED</td></tr>"
  2030. fi
  2031. done
  2032. fi
  2033. if [ "$1" == "RestoreSessionsMudc" ];then
  2034. for DATAFILE in $(ls -A $C_ZT_DIR/tmp/restorebk/$2/mudcsessions/);do
  2035. if [ -n "$DATAFILE" ];then
  2036. N=$(($N + 1))
  2037. cp -a -f $C_ZT_DIR/tmp/restorebk/$2/mudcsessions/$DATAFILE $C_ZT_DIR/mudc/data/Sessions/
  2038. echo "<tr><td>$N</td><td>$DATAFILE</td><td>&nbsp;$L_UPDATED</td></tr>"
  2039. fi
  2040. done
  2041. fi
  2042. if [ "$1" == "RestoreProgMudc" ];then
  2043. for DATAFILE in $(ls -A $C_ZT_DIR/tmp/restorebk/$2/mudcprog/);do
  2044. if [ -n "$DATAFILE" ];then
  2045. N=$(($N + 1))
  2046. cp -a -f $C_ZT_DIR/tmp/restorebk/$2/mudcprog/$DATAFILE $C_ZT_DIR/mudc/data/Prog/
  2047. echo "<tr><td>$N</td><td>$DATAFILE</td><td>&nbsp;$L_UPDATED</td></tr>"
  2048. fi
  2049. done
  2050. for DATAFILE in $(ls -A $C_ZT_DIR/tmp/restorebk/$2/mudccron/);do
  2051. if [ -n "$DATAFILE" ];then
  2052. N=$(($N + 1))
  2053. cp -a -f $C_ZT_DIR/tmp/restorebk/$2/mudccron/$DATAFILE $C_CRON_SCRIPTS_DIR/
  2054. echo "<tr><td>$N</td><td>$DATAFILE</td><td>&nbsp;$L_UPDATED</td></tr>"
  2055. CONTROLCRON="yes"
  2056. fi
  2057. done
  2058. if [ -n "$CONTROLCRON" ];then
  2059. $C_ZT_BIN_DIR/zt "KillProg" "cron"
  2060. rm -f /var/run/cron.pid
  2061. /etc/init.d/crond start >/dev/null
  2062. fi
  2063. fi
  2064.  
  2065. if [ "$1" == "RestoreFreeClients" ];then
  2066. ND=0
  2067. for CLIENTDIR in $(ls $C_CP_DIR/FreeClients/);do
  2068. NEWDIR="$(echo $((1000+$ND)))"
  2069. IPCLIENT="$(cat $C_CP_DIR/FreeClients/$CLIENTDIR/IP)"
  2070. MACCLIENT="$(cat $C_CP_DIR/FreeClients/$CLIENTDIR/MAC)"
  2071. CONTROLIP="$CONTROLIP+$IPCLIENT-$MACCLIENT+"
  2072. mv $C_CP_DIR/FreeClients/$CLIENTDIR $C_CP_DIR/FreeClients/$NEWDIR
  2073. ND="$(($ND+1))"
  2074. done
  2075. for CLIENTDIR in $(ls $C_CP_DIR/FreeClients/);do
  2076. NEWDIR="$( echo $CLIENTDIR | sed 's/^1//g')"
  2077. mv $C_CP_DIR/FreeClients/$CLIENTDIR $C_CP_DIR/FreeClients/$NEWDIR
  2078. done
  2079. NC=1
  2080. for CLIENTDIR in $(ls $C_ZT_DIR/tmp/restorebk/$2/FreeClients/);do
  2081. IPCLIENT="$(cat $C_ZT_DIR/tmp/restorebk/$2/FreeClients/$CLIENTDIR/IP)"
  2082. MACCLIENT="$(cat $C_ZT_DIR/tmp/restorebk/$2/FreeClients/$CLIENTDIR/MAC)"
  2083. DESC="$(cat $C_ZT_DIR/tmp/restorebk/$2/FreeClients/$CLIENTDIR/Desc)"
  2084. CONTROLIPMAC="$IPCLIENT-$MACCLIENT"
  2085. if [ -z "$(echo "$CONTROLIP" | grep "+$CONTROLIPMAC+")" ];then
  2086. $C_ZT_BIN_DIR/zt "AddFreeClient" "$DESC" "$IPCLIENT" "$MACCLIENT"
  2087. echo "<tr><td align=\"center\">$NC</td><td>&nbsp;$DESC</td><td>&nbsp;$L_ADDED</td></tr>"
  2088. else
  2089. echo "<tr><td align=\"center\">$NC</td><td>&nbsp;$DESC</td><td>&nbsp;$L_UPDATED</td></tr>"
  2090. fi
  2091. NC=$(($NC+1))
  2092. done
  2093. exit
  2094. fi
  2095.  
  2096. if [ "$1" == "RestoreFreeServices" ];then
  2097. ND=0
  2098. for SERVICEDIR in $(ls $C_CP_DIR/FreeServices/);do
  2099. NEWDIR="$(echo $((100+$ND)))"
  2100. IPSERVICE="$(cat $C_CP_DIR/FreeServices/$SERVICEDIR/IP)"
  2101. PORTSERVICE="$(cat $C_CP_DIR/FreeServices/$SERVICEDIR/Port)"
  2102. PROTOSERVICE="$(cat $C_CP_DIR/FreeServices/$SERVICEDIR/Proto)"
  2103. CONTROLIP="$CONTROLIP+$IPSERVICE-$PORTSERVICE-$PROTOSERVICE+"
  2104. mv $C_CP_DIR/FreeServices/$SERVICEDIR $C_CP_DIR/FreeServices/$NEWDIR
  2105. ND=$(($ND+1))
  2106. done
  2107. for SERVICEDIR in $(ls $C_CP_DIR/FreeServices/);do
  2108. NEWDIR="$(echo $SERVICEDIR | sed 's/^1//g')"
  2109. mv $C_CP_DIR/FreeServices/$SERVICEDIR $C_CP_DIR/FreeServices/$NEWDIR
  2110. done
  2111. NC=1
  2112. for SERVICEDIR in $(ls $C_ZT_DIR/tmp/restorebk/$2/FreeServices);do
  2113. IPSERVICE="$(cat $C_ZT_DIR/tmp/restorebk/$2/FreeServices/$SERVICEDIR/IP)"
  2114. PORTSERVICE="$(cat $C_ZT_DIR/tmp/restorebk/$2/FreeServices/$SERVICEDIR/Port)"
  2115. PROTOSERVICE="$(cat $C_ZT_DIR/tmp/restorebk/$2/FreeServices/$SERVICEDIR/Proto)"
  2116. DESC="$(cat $C_ZT_DIR/tmp/restorebk/$2/FreeServices/$SERVICEDIR/Desc)"
  2117. CONTROL="$IPSERVICE-$PORTSERVICE-$PROTOSERVICE"
  2118. if [ -z "$(echo "$CONTROLIP" | grep "+$CONTROL+")" ];then
  2119. $C_ZT_BIN_DIR/zt "AddFreeService" "$DESC" "$IPSERVICE" "$PORTSERVICE" "$PROTOSERVICE"
  2120. echo "<tr><td align=\"center\">$NC</td><td>&nbsp;$DESC</td><td>&nbsp;$L_ADDED</td></tr>"
  2121. else
  2122. echo "<tr><td align=\"center\">$NC</td><td>&nbsp;$DESC</td><td>&nbsp;$L_UPDATED</td></tr>"
  2123. fi
  2124. NC=$(($NC+1))
  2125. done
  2126. exit
  2127. fi
  2128.  
  2129. if [ "$1" == "RestoreProg" ];then
  2130. NP=1
  2131. for PROGDIR in $(ls $C_ZT_DIR/tmp/restorebk/$2/prog/);do
  2132. if [[ "$PROGDIR" != "ZTcontrol-Cron" && "$PROGDIR" != "ZTunlockclientday-Cron" && "$PROGDIR" != "ZTunlockclientmonth-Cron" && "$PROGDIR" != "postboot" ]];then
  2133. [ -d $C_SYSTEM/startup/scripts/$PROGDIR ] && CONTROL="yes"
  2134. cp -a $C_ZT_DIR/tmp/restorebk/$2/prog/$PROGDIR $C_SYSTEM/startup/scripts/$PROGDIR
  2135. echo "<tr><td align=\"center\">$NP</td><td>&nbsp;$PROGDIR</td><td>"
  2136. if [ "$CONTROL" != "yes" ];then
  2137. echo "&nbsp;$L_ADDED"
  2138. else
  2139. echo "&nbsp;$L_UPDATED"
  2140. fi
  2141. echo "</td></tr>"
  2142. NP=$(($NP+1))
  2143. CONTROL=""
  2144. fi
  2145. done
  2146. $C_ZT_BIN_DIR/zt "RestartCron"
  2147. exit
  2148. fi
  2149.  
  2150. if [ "$1" == "RestoreSessions" ];then
  2151. NS=1
  2152. for SESSDIR in $(ls $C_ZT_DIR/tmp/restorebk/$2/sessions/);do
  2153. if [[ "$SESSDIR" != "deleted" && "$SESSDIR" != "expired" ]];then
  2154. if ! [ -d $C_ACCT_DIR/entries/$SESSDIR ];then
  2155. $C_ZT_BIN_DIR/zt "CreaCartella" "$C_ACCT_DIR/entries/$SESSDIR"
  2156. $C_ZT_BIN_DIR/zt "CreaCartella" "$C_ACCT_DIR/entries/$SESSDIR/sessions"
  2157. fi
  2158. for SESSIONDIR in $(ls $C_ZT_DIR/tmp/restorebk/$2/sessions/$SESSDIR/sessions/ );do
  2159. [ -d $C_ACCT_DIR/entries/$SESSDIR/sessions/$SESSIONDIR ] && CONTROL="yes"
  2160. cp -a $C_ZT_DIR/tmp/restorebk/$2/sessions/$SESSDIR/sessions/$SESSIONDIR $C_ACCT_DIR/entries/$SESSDIR/sessions/$SESSIONDIR
  2161. echo "<tr><td align=\"center\">$NS</td><td>&nbsp;$SESSDIR</td><td>&nbsp;$SESSIONDIR</td><td>"
  2162. if [ "$CONTROL" != "yes" ];then
  2163. echo "&nbsp;$L_ADDED"
  2164. else
  2165. echo "&nbsp;$L_UPDATED"
  2166. fi
  2167. echo "</td></tr>"
  2168. NS=$(($NS+1))
  2169. CONTROL=""
  2170. done
  2171. fi
  2172. done
  2173. exit
  2174. fi
  2175.  
  2176. if [ "$1" == "RestoreConfig" ];then
  2177. NC=1
  2178. for CONFBK in "emailh" "msmtprc" "ppnotice" "banmac" "cbqconf" "emailf" "infoTicket" "ppbutton" "privacy" "tmp_banmac" "zt.config";do
  2179. cp -f $C_ZT_DIR/tmp/restorebk/$2/conf/$CONFBK $C_ZT_CONF_DIR/$CONFBK
  2180. chmod 666 $C_ZT_CONF_DIR/$CONFBK
  2181. echo "<tr><td align=\"center\">$NC</td><td>&nbsp;$CONFBK</td><td>&nbsp;$L_UPDATED</td></tr>"
  2182. NC=$(($NC+1))
  2183. done
  2184. for CONFBKCUSTOM in $(ls $C_ZT_DIR/tmp/restorebk/$2/Custom);do
  2185. cp -f $C_ZT_DIR/tmp/restorebk/$2/Custom/$CONFBKCUSTOM $C_CP_DIR/Auth/Custom/
  2186. chmod 666 $C_CP_DIR/Auth/Custom/$CONFBKCUSTOM
  2187. echo "<tr><td align=\"center\">$NC</td><td>&nbsp;$CONFBKCUSTOM</td><td>&nbsp;$L_UPDATED</td></tr>"
  2188. NC=$(($NC+1))
  2189. done
  2190. sed -i "s/^C_ADMIN_COOKIE=.*/C_ADMIN_COOKIE=\"$C_ADMIN_COOKIE\"/g" $C_ZT_CONF_DIR/zt.config
  2191. CC="$($C_ZT_BIN_DIR/cc)"
  2192. if [ "$CC" == "yes" ];then
  2193. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_CODE" "$C_CODE"
  2194. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_CODE_LOCAL" "$C_CODE_LOCAL"
  2195. cp -f $C_ZT_DIR/tmp/restorebk/$2/images/imguser.png $C_HTDOCS_DIR/images/imguser.png
  2196. chmod 666 $C_HTDOCS_DIR/images/imguser.png
  2197. cp -f $C_ZT_DIR/tmp/restorebk/$2/images/base.png $C_HTDOCS_DIR/images/base.png
  2198. chmod 666 $C_HTDOCS_DIR/images/base.png
  2199. rm -rf $C_HTDOCS_DIR/images/popup
  2200. rm -rf $C_HTDOCS_DIR/images/wg
  2201. rm -rf $C_HTDOCS_DIR/images/imglogin
  2202. cp -a $C_ZT_DIR/tmp/restorebk/$2/images/popup $C_HTDOCS_DIR/images/
  2203. chmod 666 $C_HTDOCS_DIR/images/popup/*
  2204. cp -a $C_ZT_DIR/tmp/restorebk/$2/images/wg $C_HTDOCS_DIR/images/
  2205. chmod 666 $C_HTDOCS_DIR/images/wg/*
  2206. cp -a $C_ZT_DIR/tmp/restorebk/$2/images/imglogin $C_HTDOCS_DIR/images/
  2207. chmod 666 $C_HTDOCS_DIR/images/imglogin/*
  2208. fi
  2209. source /DB/apache2/cgi-bin/zerotruth/conf/zt.config
  2210. $C_ZT_BIN_DIR/zt "AggOrologio"
  2211. $C_ZT_BIN_DIR/zt "Cancella" "$C_CP_DIR/msg/custom/*"
  2212. $C_ZT_BIN_DIR/zt "Copia" "$C_HTDOCS_ZT_DIR/msg/$C_LANGUAGE/*" "$C_CP_DIR/msg/custom/"
  2213. $C_ZT_BIN_DIR/zt "Copia" "$C_HTDOCS_ZT_DIR/havp/$C_LANGUAGE/*" "$C_HTDOCS_ZT_DIR/havp/template/"
  2214. $C_ZT_BIN_DIR/zt "Copia" "$C_HTDOCS_ZT_DIR/squid/$C_LANGUAGE/*" "$C_HTDOCS_ZT_DIR/squid/template/"
  2215. $C_ZT_BIN_DIR/zt "ConfigProxy" "ipcp"
  2216. for dc in $(ls $C_CLASSES_DIR);do
  2217. if [[ $(cat $C_CLASSES_DIR/$dc/ChargeType) == "pre" && -n "$C_ACTIVE_PP" ]];then
  2218. $C_ZT_BIN_DIR/zt "Salva" "yes" "$C_CP_DIR/Auth/Custom/ChargePayPal"
  2219. CONTROLPRE="ok"
  2220. fi
  2221. done
  2222. if [ -z "$CONTROLPRE" ];then
  2223. $C_ZT_BIN_DIR/zt "Salva" " " "$C_CP_DIR/Auth/Custom/ChargePayPal"
  2224. fi
  2225. if [ -n "$AUTO_REGISTER" ];then
  2226. $C_ZT_BIN_DIR/zt "Salva" "yes" "$C_CP_DIR/Auth/Custom/Registered"
  2227. else
  2228. $C_ZT_BIN_DIR/zt "Salva" " " "$C_CP_DIR/Auth/Custom/Registered"
  2229. fi
  2230. if [[ $(cat $C_CLASSES_DIR/$AR_CLASS/ChargeType) == "pre" && -z "$C_ACTIVE_PP" ]];then
  2231. $C_ZT_BIN_DIR/zt "Salva" " " "$C_CP_DIR/Auth/Custom/Registered"
  2232. fi
  2233. if [ "$C_ACTIVE_CP" == "on" ];then
  2234. $C_ZT_BIN_DIR/zt "Copia" "$C_HTDOCS_TEMPLATE_DIR/cp_showauth_custom-on" "$C_CP_DIR/Auth/Template/cp_showauth_custom"
  2235. else
  2236. $C_ZT_BIN_DIR/zt "Copia" "$C_HTDOCS_TEMPLATE_DIR/cp_showauth_custom-off" "$C_CP_DIR/Auth/Template/cp_showauth_custom"
  2237. fi
  2238. INTERFACECP=$(cat $C_SYSTEM/cp/Interface | awk '{print $1}' )
  2239. CONTROLV=$(echo "$INTERFACECP" | cut -sd'.' -f2)
  2240. if [ -n "$CONTROLV" ];then
  2241. INTERFACE=$(echo "$INTERFACECP" | cut -d'.' -f1)
  2242. IPCP=$(cat $C_SYSTEM/net/interfaces/$INTERFACE/VLAN/$CONTROLV/IP/00/IP)
  2243. $C_ZT_BIN_DIR/zt "SLink" "$C_SYSTEM/net/interfaces/$INTERFACE/VLAN/$CONTROLV/IP/00/IP" "$C_CP_DIR/Auth/Custom/IP"
  2244. else
  2245. IPCP=$(cat $C_SYSTEM/net/interfaces/$INTERFACECP/IP/00/IP)
  2246. $C_ZT_BIN_DIR/zt "SLink" "$C_SYSTEM/net/interfaces/$INTERFACECP/IP/00/IP" "$C_CP_DIR/Auth/Custom/IP"
  2247. fi
  2248. $C_ZT_BIN_DIR/zt "BottonCp" "$IPCP"
  2249. exit
  2250. fi
  2251.  
  2252. if [ "$1" == "PermCartella" ];then
  2253. chmod "$2" "$3"
  2254. chown root:root "$3"
  2255. exit
  2256. fi
  2257.  
  2258. if [ "$1" == "PermFiles" ];then
  2259. chmod "$2" "$3"
  2260. exit
  2261. fi
  2262.  
  2263. if [ "$1" == "ProFile" ];then
  2264. chown "$2" "$3"
  2265. exit
  2266. fi
  2267.  
  2268. if [ "$1" == "CreaLog" ];then
  2269. if ! [ -d $C_ZT_LOG_DIR/users ];then
  2270. mkdir $C_ZT_LOG_DIR/users
  2271. chown -R root:root $C_ZT_LOG_DIR/users
  2272. chmod -R 777 $C_ZT_LOG_DIR/users
  2273. fi
  2274. if ! [ -d $C_ZT_LOG_DIR/users/$2 ];then
  2275. mkdir $C_ZT_LOG_DIR/users/$2
  2276. fi
  2277. if ! [ -f $C_ZT_LOG_DIR/users/$2/$2_log ];then
  2278. touch $C_ZT_LOG_DIR/users/$2/$2_log
  2279. fi
  2280. chown -R root:root $C_ZT_LOG_DIR/users/$2
  2281. chmod -R 777 $C_ZT_LOG_DIR/users/$2
  2282. exit
  2283. fi
  2284.  
  2285. if [ "$1" == "AddLog" ];then
  2286. USERLOG="$2"
  2287. if [ "$2" == "$C_ADMIN" ];then
  2288. USERLOG="admin"
  2289. fi
  2290. if [ -f $C_ZT_LOG_DIR/users/$USERLOG/${USERLOG}_log ];then
  2291. echo "$(date +%s)-$3" >> $C_ZT_LOG_DIR/users/$USERLOG/${USERLOG}_log
  2292. fi
  2293. sed -i "/^$/d" $C_ZT_LOG_DIR/users/$USERLOG/${USERLOG}_log
  2294. chown -R root:root $C_ZT_LOG_DIR/users/$USERLOG
  2295. chmod -R 777 $C_ZT_LOG_DIR/users/$USERLOG
  2296. logger -t "ZT.$2" "$3"
  2297. exit
  2298. fi
  2299.  
  2300. if [ "$1" == "ScaricaChecksum" ];then
  2301. if `wget -N -P $2 $3 2>/dev/null` ;then
  2302. echo ""
  2303. else
  2304. rm -rf $2
  2305. echo "<script language=\"JavaScript\" type=\"text/javascript\">
  2306. setTimeout('top.location.href=(window.location.href=\"config.sh?SECTION=UPGRADE_ZT_ERROR\")',\"50\")
  2307. </script>"
  2308. exit
  2309. fi
  2310. exit
  2311. fi
  2312.  
  2313. if [ "$1" == "ScaricaUpgrade" ];then
  2314. if `wget -N -P $2 $3 2>/dev/null`;then
  2315. chown root:root $2/$4
  2316. chmod 755 $2/$4
  2317. CONTROL_CHECKSUM=$(md5sum $2/$4)
  2318. CONTROL_CHECKSUM=$( echo $CONTROL_CHECKSUM | awk '{print $1}')
  2319. CONTROL_CHECKSUM_DOWN=$(cat $2/checksum | awk '{print $1}')
  2320. if [ "$CONTROL_CHECKSUM_DOWN" != "$CONTROL_CHECKSUM" ];then
  2321. rm -rf $2
  2322. echo "error" > /tmp/checksum
  2323. exit
  2324. fi
  2325. echo "$C_CODE" > /tmp/CODE
  2326. [ -d /tmp/oldzt ] && rm -rf /tmp/oldzt
  2327. mkdir /tmp/oldzt
  2328. cp -a $C_ZT_DIR/conf /tmp/oldzt
  2329. cp -a $C_ZT_DIR/proxy /tmp/oldzt
  2330. [ -d $C_ZT_DIR/expired ] && cp -a $C_ZT_DIR/expired /tmp/oldzt
  2331. cp -a $C_HTDOCS_DIR/images /tmp/oldzt
  2332. cp $C_HTDOCS_DIR/walledgarden.html /tmp/oldzt
  2333. cp $C_HTDOCS_DIR/popup.html /tmp/oldzt
  2334. tar zxvf $2/$4 -C $2 >/dev/null
  2335. NEWZT=$(echo $4 | sed 's/.tar.gz//g')
  2336. [ -d /DB/$NEWZT ] && rm -rf /DB/$NEWZT
  2337. mkdir /DB/$NEWZT
  2338. cp -a $2/$NEWZT/uninstall.sh /DB/$NEWZT
  2339. tar zxvf $2/$NEWZT/zerotruth.tar.gz -C / >/dev/null
  2340. tar zxvf $2/$(echo zerotruth-2.0.tar.gz | sed 's/.tar.gz//g')/zerotruth.tar.gz -C / >/dev/null
  2341.  
  2342. cp -f /tmp/oldzt/images/imguser.png $C_HTDOCS_DIR/images/imguser.png
  2343. cp -f /tmp/oldzt/images/base.png $C_HTDOCS_DIR/images/base.png
  2344. cp -a -f /tmp/oldzt/images/wg $C_HTDOCS_DIR/images
  2345. cp -a -f /tmp/oldzt/images/popup $C_HTDOCS_DIR/images
  2346. cp -a -f /tmp/oldzt/images/imglogin $C_HTDOCS_DIR/images
  2347. cp -a -f /tmp/oldzt/proxy $C_ZT_DIR
  2348.  
  2349. rm -rf $2/$4
  2350. rm -rf $2/checksum
  2351.  
  2352. if [ -z "$5" ];then
  2353. sed -i "/^#/d" /tmp/oldzt/conf/zt.config
  2354. sed -i "/^$/d" /tmp/oldzt/conf/zt.config
  2355. RIGHE=$(cat /tmp/oldzt/conf/zt.config | wc -l | awk '{print $1}')
  2356. for R in $(seq 1 $RIGHE);do
  2357. RIGA="$(cat /tmp/oldzt/conf/zt.config | sed -n "${R}p")"
  2358. VAR=$(echo "$RIGA" | cut -d'=' -f1)
  2359. if [ "$VAR" != "C_CURRENCY" ];then
  2360. sed -i "s/^$VAR\=.*/$RIGA/g" $C_ZT_CONF_DIR/zt.config
  2361. fi
  2362. done
  2363. for CONF in $(ls /tmp/oldzt/conf);do
  2364. if [[ "$CONF" != "version" && "$CONF" != "zt.config" ]];then
  2365. cp -a /tmp/oldzt/conf/$CONF /DB/apache2/cgi-bin/zerotruth/conf/$CONF
  2366. fi
  2367. done
  2368. fi
  2369. rm -rf /tmp/oldzt
  2370. source /DB/apache2/cgi-bin/zerotruth/conf/zt.config
  2371. chown root:root $C_ZT_BIN_DIR/*
  2372. chmod 755 $C_ZT_BIN_DIR/*
  2373. chmod 4755 $C_ZT_BIN_DIR/zt
  2374. chmod 4755 $C_ZT_BIN_DIR/zt
  2375. chmod 777 $ZT_DIR/tmp
  2376. ln -f -s $C_ZT_DIR/registerasterisk.sh $C_HTDOCS_ZT_DIR/cgi-bin/registerasterisk.sh
  2377. ln -f -s $C_ZT_DIR/unlockasterisk.sh $C_HTDOCS_ZT_DIR/cgi-bin/unlockasterisk.sh
  2378. ln -f -s $C_ZT_DIR/forgotasterisk.sh $C_HTDOCS_ZT_DIR/cgi-bin/forgotasterisk.sh
  2379. if [ -n "$6" ];then
  2380. PEOPLE=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid)
  2381. USERPEOPLE=$(echo "$PEOPLE" | sed -n '/uid:/p' | awk '{ print $2 }')
  2382. for USERDEL in $USERPEOPLE;do
  2383. if [ "$USERDEL" != "admin" ];then
  2384. LINE=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid="$USERP" givenName sn)
  2385. NAME=$( echo "$LINE" | grep -e '^givenName: ' | sed 's/^givenName: //g' )
  2386. LAST_NAME=$( echo "$LINE" | grep -e '^sn: ' | sed 's/^sn: //g' )
  2387. if [ -d $C_CRON_SCRIPTS_DIR/ZT${USERDEL}STOP-Cron ];then
  2388. $C_ZT_BIN_DIR/zt "Cancella" "$C_CRON_SCRIPTS_DIR/ZT${USERDEL}STOP-Cron"
  2389. $C_ZT_BIN_DIR/zt "Cancella" "$C_CRON_SCRIPTS_DIR/ZT${USERDEL}START-Cron"
  2390. CONTROL_CRON="yes"
  2391. fi
  2392. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "uid=$USERDEL,ou=People,$C_LDAPBASE" > /dev/null
  2393. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "cn=$USERDEL,ou=Radius,$C_LDAPBASE" > /dev/null
  2394. CONNECTED=$(ls $C_CP_DIR/Connected )
  2395. for IP in "$CONNECTED";do
  2396. if [ $( cat $C_CP_DIR/Connected/$IP/User | cut -d'@' -f1) == "$USERDEL" ];then
  2397. $C_ZT_BIN_DIR/zt "Disconnetti" "$IP" "$USERDEL"
  2398. fi
  2399. done
  2400. if [ -n $(ls $C_ACCT_DIR/entries/$USERDEL/sessions 2> /dev/null) ];then
  2401. NAME=$(echo "$NAME" | sed '/ /s///g' | sed 's/ /_/g')
  2402. LAST_NAME=$(echo "$LAST_NAME" | sed '/ /s///g' | sed 's/ /_/g')
  2403. TODAY=$(date +%d%m%Y)
  2404. $C_ZT_BIN_DIR/zt "CreaCartella" "$C_ZT_DIR/deleted/$NAME-$LAST_NAME-$TODAY"
  2405. $C_ZT_BIN_DIR/zt "CopiaTutto" "$C_ACCT_DIR/entries/$USERDEL" "$C_ZT_DIR/deleted/$NAME-$LAST_NAME-$TODAY"
  2406. $C_ZT_BIN_DIR/zt "Cancella" "$C_ACCT_DIR/entries/$USERDEL"
  2407. $C_ZT_BIN_DIR/zt "Cancella" "$C_ACCT_DIR/credits/$USERDEL"
  2408. $C_ZT_BIN_DIR/zt "DelK5" "$USERDEL"
  2409. [ -n "$CONTROL_CRON" ] && $C_ZT_BIN_DIR/zt "RestartCron"
  2410. fi
  2411. fi
  2412. done
  2413. fi
  2414. #da 2.0 a 2.1 nuovo ldap
  2415. /etc/init.d/ldap restart
  2416. TODAY=$(date +%s)
  2417. TODAY=$(($TODAY/86400))
  2418. PEOPLE=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid )
  2419. USERPEOPLE=$(echo "$PEOPLE" | sed -n '/uid:/p' | awk '{ print $2 }')
  2420. for USERNAME in $USERPEOPLE;do
  2421. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USERNAME sn radiusUserCategory)
  2422. CLASS=$(echo "$QUERY" | grep -e '^radiusUserCategory: ' | sed 's/^radiusUserCategory: //g')
  2423. PASSWORD=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g')
  2424. if [ -z "$CLASS" ];then
  2425. CLASS="DEFAULT"
  2426. fi
  2427. if [ -d $C_ACCT_DIR/entries/$USERNAME/sessions ];then
  2428. NSESSIONS=`ls $C_ACCT_DIR/entries/$USERNAME/sessions/ | wc -l`
  2429. if [ -d $C_ZT_DIR/expired/$USER/$USERNAME/sessions ];then
  2430. NSESSIONS_EXP=`ls $C_ZT_DIR/expired/$USER/$USERNAME/sessions/ | wc -l`
  2431. else
  2432. NSESSIONS_EXP=0
  2433. fi
  2434. NSESSIONS=$(($NSESSIONS+$NSESSIONS_EXP))
  2435. else
  2436. NSESSIONS=0
  2437. fi
  2438. VALIDITY="yes"
  2439. CONTROL_EX=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid=$USERNAME shadowExpire | grep -e '^shadowExpire: ' | sed 's/^shadowExpire: //g')
  2440. if [[ -n "$CONTROL_EX" && $TODAY -gt $CONTROL_EX ]];then
  2441. VALIDITY="E"
  2442. fi
  2443. CL=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USERNAME radiusUserCategory | grep -e '^radiusUserCategory: ' | sed 's/^radiusUserCategory: //g')
  2444. if [ -f $C_ACCT_DIR/classes/$CL/ChargeType ];then
  2445. if [ "$(cat $C_ACCT_DIR/classes/$CL/ChargeType)" == "pre" ];then
  2446. CREDIT=$(cat $C_ACCT_DIR/credits/$USERNAME/Credit)
  2447. CHARGETYPE=$(cat $C_ACCT_DIR/classes/$CL/ChargeType)
  2448. FREETIME=$(cat $C_ACCT_DIR/classes/$CL/FreeTime)
  2449. if [[ -z "$CREDIT" || "$CREDIT" == "0.00" || $(echo "$CREDIT" | grep '^-') ]] && [ "$CREDIT" != "freetime" ];then
  2450. VALIDITY="C"
  2451. fi
  2452. fi
  2453. fi
  2454. if [ -f $C_ACCT_DIR/entries/$USERNAME/Time ] && [ -f $C_ACCT_DIR/classes/$CL/Hours ] && [ -n "$(cat $C_ACCT_DIR/classes/$CL/Hours)" ];then
  2455. TIME=$(cat $C_ACCT_DIR/entries/$USERNAME/Time)
  2456. LIMITH=$(cat $C_ACCT_DIR/classes/$CL/Hours)
  2457. LIMITH=$(($LIMITH*3600))
  2458. if [ $TIME -gt $LIMITH ];then
  2459. VALIDITY="T"
  2460. fi
  2461. fi
  2462. if [ -f $C_ACCT_DIR/entries/$USERNAME/MB ] && [ -f $C_ACCT_DIR/classes/$CL/MB ] && [ -n "$(cat $C_ACCT_DIR/classes/$CL/MB)" ];then
  2463. TRAFFIC=$(cat $C_ACCT_DIR/entries/$USERNAME/MB)
  2464. LIMITMB=$(cat $C_ACCT_DIR/classes/$CL/MB)
  2465. LIMITMB=$((LIMITMB*1048576))
  2466. if [ $TRAFFIC -gt $LIMITMB ];then
  2467. VALIDITY="M"
  2468. fi
  2469. fi
  2470. DATA="dn: uid=$USERNAME,ou=PEOPLE,$C_LDAPBASE\nsessions: $NSESSIONS\nclass: $CLASS\nvalidity: $VALIDITY"
  2471. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  2472. done
  2473. #### end
  2474. if [ -n "$C_SHAPER" ];then
  2475. $C_ZT_BIN_DIR/zt "Shaper"
  2476. $C_ZT_BIN_DIR/zt "Shaper" "on"
  2477. fi
  2478. $C_ZT_BIN_DIR/binzt "RegisterCode" "$(cat /tmp/CODE)"
  2479. $C_ZT_BIN_DIR/zt "Cancella" "/tmp/CODE"
  2480. $C_ZT_BIN_DIR/zt "Cancella" "/tmp/upgrade"
  2481. return_page "config.sh?SECTION=UPGRADE_ZT_COMPLETE"
  2482. else
  2483. echo "<p>&nbsp;<p><font color=\"red\" size=\"4\">$L_NO_SERVER</font><p>
  2484. <form action=\"$3\" method=\"POST\">
  2485. <input type=\"hidden\" name=\"SECTION\" value=\"UPDATE_ZT\">
  2486. <input type=\"submit\" class=\"bottone\" value=\"$L_GO_BACK\">
  2487. </form>"
  2488. fi
  2489. exit
  2490. fi
  2491.  
  2492. if [ "$1" == "ControlSlash" ];then
  2493. sed -i 's/\%2F/\//g' $C_ZT_CONF_DIR/zt.config
  2494. exit
  2495. fi
  2496.  
  2497. if [ "$1" == "AddFreeService" ];then
  2498. DESC="$2"
  2499. IP="$3"
  2500. [ "$IP" == Any ] && IP=""
  2501. PORT="$4"
  2502. PROTO="$5"
  2503. CONFIG=$C_CP_DIR
  2504. cd $CONFIG/FreeServices
  2505. LAST=`ls -d * 2>/dev/null |tail -1`
  2506. if [ -z "$LAST" ] ; then
  2507. NEW=00
  2508. else
  2509. if [ "${LAST:0:1}" == 0 ] ; then
  2510. LAST="${LAST:1:1}"
  2511. fi
  2512. NEW="$((LAST+1))"
  2513. if [ "$NEW" -lt 10 ] ; then
  2514. NEW=0$NEW
  2515. fi
  2516. fi
  2517. mkdir $NEW
  2518. echo "$DESC" > $CONFIG/FreeServices/$NEW/Desc
  2519. echo "$IP" > $CONFIG/FreeServices/$NEW/IP
  2520. echo "$PROTO" > $CONFIG/FreeServices/$NEW/Proto
  2521. echo "$PORT" > $CONFIG/FreeServices/$NEW/Port
  2522. if [ -z "$IP" ] ; then
  2523. DEST=""
  2524. else
  2525. DEST="-d $IP"
  2526. fi
  2527. /usr/local/sbin/iptables -A CapPortFS $DEST -p $PROTO --dport $PORT -j ACCEPT
  2528. if [ "$PROTO" == "tcp" ] ; then
  2529. if [ "$PORT" == 80 ] ; then
  2530. /usr/local/sbin/iptables -t nat -I CapPortHTTP 1 $DEST -p $PROTO --dport $PORT -j CapPortProxy
  2531. fi
  2532. if [ "$PORT" == 443 ] ; then
  2533. /usr/local/sbin/iptables -t nat -I CapPortHTTPS 1 $DEST -p $PROTO --dport $PORT -j ACCEPT
  2534. fi
  2535. fi
  2536. if [ "$6" == "SRVWalledGarden" ];then
  2537. echo "$NEW" > $C_CP_DIR/Auth/Custom/SRVWalledGarden
  2538. fi
  2539.  
  2540. fi
  2541.  
  2542. if [ "$1" == "RemoveMacBlocked" ];then
  2543. /bin/sed -i "/^$2/d" $C_ZT_CONF_DIR/macblocked
  2544. /bin/sed -i "/^$/d" $C_ZT_CONF_DIR/macblocked
  2545. fi
  2546.  
  2547. if [ "$1" == "RemoveFreeService" ];then
  2548. SRV="$2"
  2549. [ -z "$SRV" ] && exit 1
  2550. CONFIG=$C_CP_DIR/FreeServices
  2551. IP=`cat $CONFIG/$SRV/IP`
  2552. PORT=`cat $CONFIG/$SRV/Port`
  2553. PROTO=`cat $CONFIG/$SRV/Proto`
  2554. if [ -z "$IP" ];then
  2555. DEST=""
  2556. else
  2557. DEST="-d $IP"
  2558. fi
  2559. /usr/local/sbin/iptables -D CapPortFS $DEST -p $PROTO --dport $PORT -j ACCEPT
  2560. if [ "$PROTO" == "tcp" ];then
  2561. if [ "$PORT" == 80 ];then
  2562. /usr/local/sbin/iptables -t nat -D CapPortHTTP $DEST -p $PROTO --dport $PORT -j CapPortProxy
  2563. fi
  2564. if [ "$PORT" == 443 ];then
  2565. /usr/local/sbin/iptables -t nat -D CapPortHTTPS $DEST -p $PROTO --dport $PORT -j ACCEPT
  2566. fi
  2567. rm -rf $CONFIG/$SRV
  2568. fi
  2569. rm -rf $CONFIG/$SRV
  2570. fi
  2571.  
  2572. if [ "$1" == "AddFreeClient" ];then
  2573. DESC="$2"
  2574. IP="$3"
  2575. [ "$IP" == Any ] && IP=""
  2576. MAC="$4"
  2577. [ "$MAC" == Any ] && MAC=""
  2578. CONFIG=$C_CP_DIR
  2579. cd $CONFIG/FreeClients
  2580. LAST=`ls -d * 2>/dev/null | sort -n | tail -1`
  2581. if [ -z "$LAST" ] ; then
  2582. NEW=0000
  2583. else
  2584. LAST=$(echo $LAST | sed 's/^0*//')
  2585. [ -z "$LAST" ] && LAST=0
  2586. NEW=$(printf "%04d" $((LAST+1)))
  2587. fi
  2588. mkdir $NEW
  2589. echo "$DESC" > $CONFIG/FreeClients/$NEW/Desc
  2590. echo "$IP" > $CONFIG/FreeClients/$NEW/IP
  2591. echo "$MAC" > $CONFIG/FreeClients/$NEW/MAC
  2592. if ! [ -z "$IP" ] ; then
  2593. SOURCE="-s $IP"
  2594. fi
  2595. if ! [ -z "$MAC" ] ; then
  2596. SOURCE="$SOURCE -m mac --mac-source $MAC"
  2597. fi
  2598. /usr/local/sbin/iptables -A CapPortFC $SOURCE -j ACCEPT
  2599. /usr/local/sbin/iptables -t nat -D CapPortHTTP $SOURCE -j CapPortProxy 2>/dev/null
  2600. /usr/local/sbin/iptables -t nat -D CapPortHTTPS $SOURCE -j ACCEPT 2>/dev/null
  2601. /usr/local/sbin/iptables -t nat -D CapPortGW $SOURCE -j ACCEPT 2>/dev/null
  2602. /usr/local/sbin/iptables -t nat -I CapPortHTTP 1 $SOURCE -j CapPortProxy
  2603. /usr/local/sbin/iptables -t nat -I CapPortHTTPS 1 $SOURCE -j ACCEPT
  2604. /usr/local/sbin/iptables -t nat -I CapPortGW 1 $SOURCE -j ACCEPT
  2605. fi
  2606.  
  2607. if [ "$1" == "RemoveFreeClient" ];then
  2608. CLT="$2"
  2609. [ -z "$CLT" ] && exit 1
  2610. CONFIG=$C_CP_DIR/FreeClients
  2611. IP=`cat $CONFIG/$CLT/IP`
  2612. MAC=`cat $CONFIG/$CLT/MAC`
  2613. [ "$IP" == Any ] && IP=""
  2614. [ "$MAC" == Any ] && MAC=""
  2615. if ! [ -z "$IP" ] ; then
  2616. SOURCE="-s $IP"
  2617. fi
  2618. if ! [ -z "$MAC" ] ; then
  2619. SOURCE="$SOURCE -m mac --mac-source $MAC"
  2620. fi
  2621. /usr/local/sbin/iptables -D CapPortFC $SOURCE -j ACCEPT
  2622. /usr/local/sbin/iptables -t nat -D CapPortHTTP $SOURCE -j CapPortProxy 2>/dev/null
  2623. /usr/local/sbin/iptables -t nat -D CapPortHTTPS $SOURCE -j ACCEPT 2>/dev/null
  2624. /usr/local/sbin/iptables -t nat -D CapPortGW $SOURCE -j ACCEPT 2>/dev/null
  2625. rm -rf "$CONFIG/$CLT"
  2626. fi
  2627.  
  2628. if [ "$1" == "ChangeProtUrl" ];then
  2629. /root/kerbynet.cgi/scripts/cp_auth_start
  2630. fi
  2631.  
  2632. if [ "$1" == "ControlConnection" ];then
  2633. [ -z "$2" ] && exit
  2634. [ ! -d $C_ACCT_DIR/entries ] && $C_ZT_BIN_DIR/zt "CreaCartella" "$C_ACCT_DIR/entries"
  2635. USERNAME=$(cat $C_CP_DIR/Connected/$2/User | cut -d'@' -f1)
  2636. ldap_search_people "uid=$USERNAME"
  2637. if [ -n "$MAXDAYS" ];then
  2638. YEAR_EXPIRE=$(date +%Y --date="+$MAXDAYS days")
  2639. MONTH_EXPIRE=$(date +%m --date="+$MAXDAYS days")
  2640. DAY_EXPIRE=$(date +%d --date="+$MAXDAYS days")
  2641. SHADOWEXPIRE=$(dateDiff -d "1970-01-01" "$YEAR_EXPIRE-$MONTH_EXPIRE-$DAY_EXPIRE")
  2642. MAXDAYS="?"
  2643. ldap_modify_people "shadowExpire maxDays"
  2644. kadmin.local -q "modprinc -expire $YEAR_EXPIRE-$MONTH_EXPIRE-$DAY_EXPIRE $USERNAME" > /dev/null
  2645. fi
  2646. if [ -d $C_ACCT_DIR/entries/$USERNAME/sessions ];then
  2647. NSESSIONS=`ls $C_ACCT_DIR/entries/$USERNAME/sessions/ | wc -l`
  2648. NSESSIONS_EXP=`ls $C_ZT_DIR/expired/$USER/$USERNAME/sessions/ | wc -l`
  2649. NSESSIONS=$(($NSESSIONS+$NSESSIONS_EXP+1))
  2650. else
  2651. NSESSIONS=1
  2652. fi
  2653. DATA="dn: uid=$USERNAME,ou=PEOPLE,$C_LDAPBASE\nsessions: $NSESSIONS"
  2654. echo -e "$DATA" | ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  2655. fi
  2656.  
  2657. if [ "$1" == "TokenDb" ];then
  2658. curl -k -s --show-error --globoff -i -o /tmp/tokendb --data "oauth_consumer_key=$C_APP_KEY_DB&oauth_signature_method=PLAINTEXT&oauth_signature=$C_APP_SECRET_DB%26&oauth_nonce=$RANDOM" https://api.dropbox.com/1/oauth/request_token 2>/dev/null
  2659. fi
  2660.  
  2661. if [ "$1" == "TokenAccessDb" ];then
  2662. TMPTOKEN="$(cat /tmp/tokendb | tail -1 | cut -d'=' -f3 )"
  2663. TMPSECRETTOKEN="$(cat /tmp/tokendb | tail -1 | cut -d'=' -f2 | cut -d'&' -f1)"
  2664. curl -k --show-error --globoff -i -o /tmp/tokendb --data "oauth_consumer_key=$C_APP_KEY_DB&oauth_token=$TMPTOKEN&oauth_signature_method=PLAINTEXT&oauth_signature=$C_APP_SECRET_DB%26$TMPSECRETTOKEN&oauth_nonce=$RANDOM" https://api.dropbox.com/1/oauth/access_token 2>/dev/null
  2665. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_TOKEN_DB" "$(cat /tmp/tokendb | tail -1 | cut -d'=' -f3 | cut -d'&' -f1)"
  2666. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_TOKEN_SECRET_DB" "$(cat /tmp/tokendb | tail -1 | cut -d'=' -f2 | cut -d'&' -f1)"
  2667. rm -rf /tmp/tokendb
  2668. fi
  2669.  
  2670. if [ "$1" == "ConfClam" ];then
  2671. if [ "$2" == "yes" ];then
  2672. VAL="true"
  2673. else
  2674. VAL="false"
  2675. fi
  2676. sed -i "s/^SCANIMAGES.*/SCANIMAGES $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-squid.conf
  2677. sed -i "s/^SCANIMAGES.*/SCANIMAGES $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-only.conf
  2678. sed -i "s/^SCANIMAGES.*/SCANIMAGES $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-dg.conf
  2679. sed -i "s/^SCANIMAGES.*/SCANIMAGES $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-dg-squid.conf
  2680. if [ "$3" == "AnyAccess" ];then
  2681. VAL="true"
  2682. else
  2683. VAL="false"
  2684. fi
  2685. sed -i "s/^LOG_OKS.*/LOG_OKS $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-squid.conf
  2686. sed -i "s/^LOG_OKS.*/LOG_OKS $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-only.conf
  2687. sed -i "s/^LOG_OKS.*/LOG_OKS $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-dg.conf
  2688. sed -i "s/^LOG_OKS.*/LOG_OKS $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-dg-squid.conf
  2689. if [ "$4" == "Enabled" ];then
  2690. VAL="5000000"
  2691. else
  2692. VAL="1"
  2693. fi
  2694. sed -i "s/^MAXSCANSIZE.*/MAXSCANSIZE $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-squid.conf
  2695. sed -i "s/^MAXSCANSIZE.*/MAXSCANSIZE $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-only.conf
  2696. sed -i "s/^MAXSCANSIZE.*/MAXSCANSIZE $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-dg.conf
  2697. sed -i "s/^MAXSCANSIZE.*/MAXSCANSIZE $VAL/g" $C_ZT_PROXY_DIR/etc/havp/havp-dg-squid.conf
  2698. if [ $(cat $C_SYSTEM/havp/WhiteList) == "yes" ] ; then
  2699. sed -i "s/^WHITELIST.*/WHITELIST $C_SYSTEM/havp/WhiteList.txt/g" $C_ZT_CONF_DIR/havp-squid.conf
  2700. sed -i "s/^WHITELIST.*/WHITELIST $C_SYSTEM/havp/WhiteList.txt/g" $C_ZT_CONF_DIR/havp-only.conf
  2701. else
  2702. sed -i "s/^WHITELIST.*/WHITELIST \/dev\/null/g" $C_ZT_CONF_DIR/havp-squid.conf
  2703. sed -i "s/^WHITELIST.*/WHITELIST \/dev\/null/g" $C_ZT_CONF_DIR/havp-only.conf
  2704. fi
  2705. if [ $(cat $C_SYSTEM/havp/BlackList) == "yes" ] ; then
  2706. sed -i "s/^BLACKLIST.*/BLACKLIST $C_SYSTEM/havp/BlackList.txt/g" $C_ZT_CONF_DIR/havp-squid.conf
  2707. sed -i "s/^BLACKLIST.*/BLACKLIST $C_SYSTEM/havp/BlackList.txt/g" $C_ZT_CONF_DIR/havp-only.conf
  2708. else
  2709. sed -i "s/^BLACKLIST.*/BLACKLIST \/dev\/null/g" $C_ZT_CONF_DIR/havp-squid.conf
  2710. sed -i "s/^BLACKLIST.*/BLACKLIST \/dev\/null/g" $C_ZT_CONF_DIR/havp-only.conf
  2711. fi
  2712. MEMORY=$(cat /proc/meminfo |grep ^MemTotal: | awk '{print $2}')
  2713. SERVERNUMBER=$((MEMORY/20000))
  2714. sed -i "s/^SERVERNUMBER.*/SERVERNUMBER $SERVERNUMBER/g" $C_ZT_CONF_DIR/havp-squid.conf
  2715. sed -i "s/^SERVERNUMBER.*/SERVERNUMBER $SERVERNUMBER/g" $C_ZT_CONF_DIR/havp-only.conf
  2716. if [ "$SERVERNUMBER" -lt 8 ];then
  2717. sed -i "s/^SERVERNUMBER.*/SERVERNUMBER 8/g" $C_ZT_CONF_DIR/havp-squid.conf
  2718. sed -i "s/^SERVERNUMBER.*/SERVERNUMBER 8/g" $C_ZT_CONF_DIR/havp-only.conf
  2719. fi
  2720. if [ "$SERVERNUMBER" -gt 120 ];then
  2721. sed -i "s/^SERVERNUMBER.*/SERVERNUMBER 120/g" $C_ZT_CONF_DIR/havp-squid.conf
  2722. sed -i "s/^SERVERNUMBER.*/SERVERNUMBER 120/g" $C_ZT_CONF_DIR/havp-only.conf
  2723. fi
  2724. chown -R havp $C_ZT_PROXY_DIR/log/dansguardian/access.log 2>/dev/null
  2725. fi
  2726.  
  2727. if [ "$1" == "Proxy_fw" ];then
  2728. CONFIG=$C_SYSTEM/havp/redirects
  2729. cd "$CONFIG" || exit 0
  2730. $C_ZS_SCRIPTS_DIR/proxy_fw_reset
  2731. PORT="55559"
  2732. if ! /usr/local/sbin/iptables -t nat -L Proxy -n >/dev/null 2>/dev/null ; then
  2733. /usr/local/sbin/iptables -t nat -N Proxy
  2734. /usr/local/sbin/iptables -N Proxy
  2735. /usr/local/sbin/iptables -t nat -I CapPortProxy 1 -p tcp --dport 80 -j Proxy 2>/dev/null
  2736. fi
  2737. /usr/local/sbin/iptables -t nat -F Proxy
  2738. /usr/local/sbin/iptables -t nat -D PREROUTING -p tcp --dport 80 -j Proxy 2>/dev/null
  2739. /usr/local/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -j Proxy
  2740. /usr/local/sbin/iptables -F Proxy
  2741. /usr/local/sbin/iptables -A Proxy -j DROP
  2742. /usr/local/sbin/iptables -D INPUT -p tcp --dport $PORT -j Proxy 2>/dev/null
  2743. /usr/local/sbin/iptables -A INPUT -p tcp --dport $PORT -j Proxy
  2744. OBJECTS=`ls -d * 2>/dev/null`
  2745. for O in $OBJECTS ; do
  2746. ACTION=`cat $O/Action`
  2747. INTERFACE=`cat $O/Interface`
  2748. DESTINATIONIP=`cat $O/DestinationIP`
  2749. SOURCEIP=`cat $O/SourceIP`
  2750. if [ "$ACTION" == Capture ] ; then
  2751. IPT="iptables -t nat -A Proxy -p tcp"
  2752. TARGET="REDIRECT --to-ports $PORT"
  2753. TARGET2="ACCEPT"
  2754. else
  2755. IPT="iptables -t nat -I Proxy 1 -p tcp"
  2756. TARGET="ACCEPT"
  2757. TARGET2="DROP"
  2758. fi
  2759. IF=""
  2760. if [ -n "$INTERFACE" ] ; then
  2761. if [ -f $C_SYSTEM/net/interfaces/$INTERFACE/Bridge/Name ] ; then
  2762. IF="-m physdev --physdev-in $INTERFACE"
  2763. else
  2764. IF="-i $INTERFACE"
  2765. fi
  2766. fi
  2767. SRC=""
  2768. if [ -n "$SOURCEIP" ] ; then
  2769. if echo "$SOURCEIP" | grep -q '-' ; then
  2770. SRC="-m iprange --src-range $SOURCEIP"
  2771. echo $SRC
  2772. else
  2773. SRC="-s $SOURCEIP"
  2774. fi
  2775. fi
  2776. DST=""
  2777. if [ -n "$DESTINATIONIP" ] ; then
  2778. if echo "$DESTINATIONIP" | grep -q '-' ; then
  2779. DST="-m iprange --dst-range $DESTINATIONIP"
  2780. else
  2781. DST="-d $DESTINATIONIP"
  2782. fi
  2783. fi
  2784. $IPT $IF $SRC $DST -j $TARGET
  2785. iptables -I Proxy 1 $IF $SRC $DST -j $TARGET2
  2786. done
  2787. fi
  2788.  
  2789. if [ "$1" == "CreaFile" ];then
  2790. touch $2
  2791. chown root:root $2
  2792. fi
  2793.  
  2794. if [ "$1" == "SetDansguardian" ];then
  2795. sed -i "s/^naughtynesslimit.*/naughtynesslimit \= $2/g" $C_ZT_PROXY_DIR/etc/dansguardian/dansguardianf1.conf
  2796. sed -i "s/^groupmode.*/groupmode \= $3/g" $C_ZT_PROXY_DIR/etc/dansguardian/dansguardianf1.conf
  2797. sed -i "s/^loglevel.*/loglevel \= $4/g" $C_ZT_PROXY_DIR/etc/dansguardian/dansguardian.conf
  2798. sed -i "s/^logexceptionhits.*/logexceptionhits \= $5/g" $C_ZT_PROXY_DIR/etc/dansguardian/dansguardian.conf
  2799. chown root:root $C_ZT_PROXY_DIR/etc/dansguardian/dansguardian*
  2800. fi
  2801.  
  2802. if [ "$1" == "InterSquid" ];then
  2803. INTERFACE_PROXY=$(ls $C_SYSTEM/havp/redirects )
  2804. INTSQUID=""
  2805. for INTP in $INTERFACE_PROXY;do
  2806. ACTION="$(cat $C_SYSTEM/havp/redirects/$INTP/Action)"
  2807. if [ "$ACTION" == "Capture" ];then
  2808. DIP="$(cat $C_SYSTEM/havp/redirects/$INTP/DestinationIP)"
  2809. SIP="$(cat $C_SYSTEM/havp/redirects/$INTP/SourceIP)"
  2810. INT="$(cat $C_SYSTEM/havp/redirects/$INTP/Interface)"
  2811. IFCONFIG=$(ifconfig)
  2812. NETINT=$(echo $IFCONFIG | /bin/awk '{split ($0, a, "'${INT}':");print a['2'];}' | /bin/awk '{split ($0, a, "Mask:");print a['2'];}' | awk '{print $1}')
  2813. #NETINT=$(addressprefix "$NETINT")
  2814. IFCINT=$(echo $IFCONFIG | /bin/awk '{split ($0, a, "'${INT}':");print a['2'];}' | /bin/awk '{split ($0, a, "addr:");print a['2'];}' | awk '{print $1}')
  2815. #IFCINT=$(echo "$IFCINT" | awk '{split ($0, a, ".");print a['1']"."a['2']"."a['3']".0";}')
  2816. NETWORK="$(ipcalc $IFCINT/$NETINT | grep 'Network' | awk '{print $2}')"
  2817. INTSQUID="$INTSQUID $NETWORK"
  2818. fi
  2819. done
  2820. INTSQUID=$(echo "$INTSQUID" | sed 's/\//\\\//g')
  2821. sed -i "s/^#localnet/acl localnet src $INTSQUID/g" $C_ZT_PROXY_DIR/etc/squid.conf
  2822. fi
  2823.  
  2824. if [ "$1" == "ControlActive" ];then
  2825. [ -z "$2" ] && exit
  2826. ps -A | grep "$2"
  2827. fi
  2828.  
  2829. if [ "$1" == "PreInstallSquid" ];then
  2830. rm -rf /tmp/download 2>/dev/null
  2831. mkdir /tmp/download
  2832. cd /tmp/download
  2833. if `wget -o wgetlog -S --spider http://zerotruth.net/download/squid-3.3.11.2.tar.gz 2>/dev/null`;then
  2834. DIMORI=$(cat wgetlog | grep ' Content-Length' | awk '{print $3}')
  2835. echo "squid-3.3.11.2.tar.gz $DIMORI ./config.sh?SECTION=PROXY&SUB_SECTION=INSTALLSQUID" > file
  2836. chmod -R 777 /tmp/download
  2837. `wget -b http://www.zerotruth.net/controldl.php?file=squid-3.3.11.2.tar.gz 2>/dev/null`
  2838. echo "<p><font color=\"blue\">Download squid.3.3.11</font><p>"
  2839. echo "<p><table width=\"502\" border=\"0\"><tr><td>"
  2840. cat $C_HTDOCS_DIR/svg/download.svg
  2841. echo "</td></tr></table>"
  2842. echo "<p>&nbsp;<p>"
  2843. ./footer.sh
  2844. else
  2845. echo "<br><font color=\"red\">Downlod error</font>"
  2846. ./footer.sh
  2847. fi
  2848. fi
  2849.  
  2850. if [ "$1" == "InstallSquid" ];then
  2851. rm -rf /tmp/download 2>/dev/null
  2852. mkdir /tmp/download
  2853. cd /tmp/download
  2854. `wget http://www.zerotruth.net/controldl.php?file=squid-3.3.11.2.tar.gz 2>/dev/null`
  2855. cd $C_ZT_PROXY_DIR
  2856. if [ -f /tmp/download/squid-3.3.11.2.tar.gz ];then
  2857. tar zxvf /tmp/download/squid-3.3.11.2.tar.gz > /dev/null
  2858. chmod -R 777 $C_ZT_PROXY_DIR/var/logs
  2859. chmod -R 777 $C_ZT_PROXY_DIR/var/cache
  2860. INTERFACECP=$(cat $C_SYSTEM/cp/Interface | awk '{print $1}' )
  2861. IPCP=$(cat $C_SYSTEM/net/interfaces/$INTERFACECP/IP/00/IP)
  2862. rm -rf $C_ZT_PROXY_DIR/languages/squid/template 2>/dev/null
  2863. cp -a $C_ZT_PROXY_DIR/languages/squid/$C_LANGUAGE $C_ZT_PROXY_DIR/languages/squid/template
  2864. sed -i "s/ipcp/$IPCP/g" $C_ZT_PROXY_DIR/languages/squid/template/*
  2865. rm -rf /tmp/download 2>/dev/null
  2866. fi
  2867. fi
  2868.  
  2869. if [ "$1" == "InstallGammu" ];then
  2870. rm -rf /tmp/download 2>/dev/null
  2871. mkdir /tmp/download
  2872. cd /tmp/download
  2873. `wget http://www.zerotruth.net/controldl.php?file=gammu-1.33.0.tar.gz 2>/dev/null`
  2874. cd $C_ZT_DIR
  2875. if [ -f /tmp/download/gammu-1.33.0.tar.gz ];then
  2876. tar zxvf /tmp/download/gammu-1.33.0.tar.gz > /dev/null
  2877. chmod 755 $C_ZT_BIN_DIR/gammu*
  2878. chmod -R 777 $C_ZT_DIR/log/gammu
  2879. chown root:root $C_ZT_BIN_DIR/gammu*
  2880. chmod -R 666 $C_ZT_CONF_DIR/gammu.conf
  2881. chown root:root $C_ZT_CONF_DIR/gammu.conf
  2882. rm -rf /tmp/download 2>/dev/null
  2883. fi
  2884. fi
  2885.  
  2886. if [ "$1" == "InstallSocial" ];then
  2887. rm -rf /tmp/download 2>/dev/null
  2888. mkdir /tmp/download
  2889. cd /tmp/download
  2890. `wget http://www.zerotruth.net/controldl.php?file=loginsocial30.tar.gz 2>/dev/null`
  2891. cd /
  2892. if [ -f /tmp/download/loginsocial30.tar.gz ];then
  2893. tar zxvf /tmp/download/loginsocial30.tar.gz > /dev/null
  2894. ln -f -s $C_ZT_DIR/registersocial.sh $C_HTDOCS_ZT_DIR/cgi-bin/registersocial.sh
  2895. chmod 755 $C_ZT_DIR/registersocial.sh
  2896. ln -f -s $C_HTDOCS_DIR/images/googlelogo.png $C_HTDOCS_ZT_DIR/images/googlelogo
  2897. ln -f -s $C_HTDOCS_DIR/images/facebooklogo.png $C_HTDOCS_ZT_DIR/images/facebooklogo
  2898. ln -f -s $C_HTDOCS_DIR/images/twitterlogo.png $C_HTDOCS_ZT_DIR/images/twitterlogo
  2899. ln -f -s $C_HTDOCS_DIR/images/google.png $C_HTDOCS_ZT_DIR/images/google
  2900. ln -f -s $C_HTDOCS_DIR/images/facebook.png $C_HTDOCS_ZT_DIR/images/facebook
  2901. ln -f -s $C_HTDOCS_DIR/images/twitter.png $C_HTDOCS_ZT_DIR/images/twitter
  2902. rm -rf /tmp/download 2>/dev/null
  2903. fi
  2904. fi
  2905.  
  2906. if [ "$1" == "PreInstallDG" ];then
  2907. rm -rf /tmp/download 2>/dev/null
  2908. mkdir /tmp/download
  2909. cd /tmp/download
  2910. if `wget -o wgetlog -S --spider http://zerotruth.net/download/dansguardian-2.12.0.3.tar.gz 2>/dev/null`;then
  2911. DIMORI=$(cat wgetlog | grep ' Content-Length' | awk '{print $3}')
  2912. echo "dansguardian-2.12.0.3.tar.gz $DIMORI ./config.sh?SECTION=PROXY&SUB_SECTION=INSTALLDG" > file
  2913. chmod -R 777 /tmp/download
  2914. `wget -b http://www.zerotruth.net/controldl.php?file=dansguardian-2.12.0.3.tar.gz 2>/dev/null`
  2915. echo "<p><font color=\"blue\">Download dansguardian-2.12.0.3</font><p>"
  2916. echo "<p><table width=\"502\" border=\"0\"><tr><td>"
  2917. cat $C_HTDOCS_DIR/svg/download.svg
  2918. echo "</td></tr></table>"
  2919. echo "<p>&nbsp;<p>"
  2920. ./footer.sh
  2921. else
  2922. echo "<br><font color=\"red\">Downlod error</font>"
  2923. ./footer.sh
  2924. fi
  2925. fi
  2926.  
  2927. if [ "$1" == "InstallDG" ];then
  2928. rm -rf /tmp/download 2>/dev/null
  2929. mkdir /tmp/download
  2930. cd /tmp/download
  2931. `wget http://www.zerotruth.net/controldl.php?file=dansguardian-2.12.0.3.tar.gz 2>/dev/null`
  2932. cd $C_ZT_PROXY_DIR
  2933. if [ -f /tmp/download/dansguardian-2.12.0.3.tar.gz ];then
  2934. tar zxvf /tmp/download/dansguardian-2.12.0.3.tar.gz > /dev/null
  2935. chmod -R 777 $C_ZT_PROXY_DIR/var/log/dansguardian
  2936. ln -s /DB /db
  2937. INTERFACECP=$(cat $C_SYSTEM/cp/Interface | awk '{print $1}' )
  2938. IPCP=$(cat $C_SYSTEM/net/interfaces/$INTERFACECP/IP/00/IP)
  2939. rm -rf $C_ZT_PROXY_DIR/languages/dansguardian/template 2>/dev/null
  2940. cp -a $C_ZT_PROXY_DIR/languages/dansguardian/$C_LANGUAGE $C_ZT_PROXY_DIR/languages/dansguardian/template
  2941. sed -i "s/ipcp/$IPCP/g" $C_ZT_PROXY_DIR/languages/dansguardian/template/template.html
  2942. rm -rf /tmp/download 2>/dev/null
  2943. fi
  2944. fi
  2945.  
  2946. if [ "$1" == "SetSquid" ];then
  2947. sed -i "s/^cache_dir.*/cache_dir ufs \/DB\/apache2\/cgi-bin\/zerotruth\/proxy\/var\/cache\/squid $2 16 256/g" $C_ZT_PROXY_DIR/etc/squid/squid*
  2948. sed -i "s/^cache_mem.*/cache_mem $3 MB/g" $C_ZT_PROXY_DIR/etc/squid/squid*
  2949. sed -i "s/^cache_swap_high.*/cache_swap_high $4/g" $C_ZT_PROXY_DIR/etc/squid/squid*
  2950. sed -i "s/^cache_swap_low.*/cache_swap_low $5/g" $C_ZT_PROXY_DIR/etc/squid/squid*
  2951. sed -i "s/^maximum_object_size .*/maximum_object_size $6 MB/g" $C_ZT_PROXY_DIR/etc/squid/squid*
  2952. sed -i "s/^minimum_object_size.*/minimum_object_size $7 KB/g" $C_ZT_PROXY_DIR/etc/squid/squid*
  2953. sed -i "s/^maximum_object_size_in_memory.*/maximum_object_size_in_memory $8 KB/g" $C_ZT_PROXY_DIR/etc/squid/squid*
  2954. chown root:root $C_ZT_PROXY_DIR/etc/squid/squid*
  2955. fi
  2956.  
  2957. if [ "$1" == "AutoUpdate" ];then
  2958. [ -z "$C_AUTO_UPDATE" ] && exit
  2959. NEWFILES=$(curl -s http://www.zerotruth.net/download/updates/$VERSION/elencafiles.php?code=$C_CODE | sed '/<br>/s//\n/g' | sed '/\.\//s//\//g' | sed '/^$/d')
  2960. if [ -n "$C_UPDATE_ZT" ];then
  2961. NEWFILES=$(echo -e "$NEWFILES" | awk -v lu="$C_UPDATE_ZT" '{if ($1 > lu ) print}')
  2962. fi
  2963. if [ ! -f $C_ZT_CONF_DIR/updates ];then
  2964. $C_ZT_BIN_DIR/zt "Salva" "$NEWFILES" "$C_ZT_CONF_DIR/updates"
  2965. else
  2966. $C_ZT_BIN_DIR/zt "Salva" "$NEWFILES" "$C_ZT_CONF_DIR/newupdates"
  2967. fi
  2968. RIGHE=$(echo "$NEWFILES" | wc -l )
  2969. DATE_UPDATE=$(echo "$NEWFILES" | tail -1 | cut -d' ' -f1)
  2970. if [[ -z "$C_UPDATE_ZT" || "$C_UPDATE_ZT" -lt "$DATE_UPDATE" ]];then
  2971. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_UPDATE_SERVER" "$DATE_UPDATE"
  2972. for I in $(seq 1 $RIGHE);do
  2973. RIGA="$(echo -e "$NEWFILES" | sed -n "${I}p")"
  2974. NAMEFILE=$(echo "$RIGA" | awk '{ print $2 }')
  2975. FILE=$(echo $NAMEFILE | awk '{n=split ($0, a, "/");print a[n]'})
  2976. DIR=$(echo $NAMEFILE | sed '/'${FILE}'/s///g')
  2977. TIMEFILE=$(echo "$RIGA" | awk '{ print $1 }')
  2978. TIMEFILELOC=$($C_ZT_BIN_DIR/zt "Stat" "/$NAMEFILE")
  2979. if [ $TIMEFILELOC -lt $TIMEFILE ] && [ -f /$NAMEFILE ];then
  2980. wget -N -P "$DIR" "http://www.zerotruth.net/download/updates/$VERSION/$NAMEFILE"
  2981. NAMEFILES="$NAMEFILES\n$NAMEFILE"
  2982. else
  2983. if [ ! -e /$NAMEFILE ];then
  2984. if [ ! -d /$DIR ];then
  2985. $C_ZT_BIN_DIR/zt "CreaCartella" "/$DIR"
  2986. fi
  2987. wget -N -P "$DIR" "http://www.zerotruth.net/download/updates/$VERSION/$NAMEFILE"
  2988. NAMEFILES="$NAMEFILES\n$NAMEFILE"
  2989. fi
  2990. fi
  2991. done
  2992. fi
  2993. if [ -n "$NAMEFILES" ];then
  2994. if [[ -n "$C_ADMIN_EMAIL" && -n "$C_AUTO_UPDATE_EMAIL" ]];then
  2995. TEXT_EMAIL="$(cat $C_ZT_CONF_DIR/emailh)\n\n\n$NAMEFILES\n\n\n$(cat $C_ZT_CONF_DIR/emailf)"
  2996. echo -e "$TEXT_EMAIL" | $C_ZT_BIN_DIR/mutt -e "set realname=\"$C_HOTSPOT_NAME\"" -F $C_ZT_CONF_DIR/Muttrc -s "$C_HOTSPOT_NAME Auto Update " "$C_ADMIN_EMAIL"
  2997. fi
  2998. fi
  2999. /usr/bin/logger -t ZT.system "AutoUpdate $NAMEFILES"
  3000. fi
  3001.  
  3002. if [ "$1" == "InfoZT" ];then
  3003. UPTIME="$(awk '{Days=$1/86400; Sec=$1%86400; Hours=Sec/3600; Sec=Sec%3600 ; Minutes=Sec/60; printf "%d days, %d:%d",Days,Hours,Minutes }' < /proc/uptime)"
  3004. DAYSUP=$(echo "$UPTIME" | cut -d' ' -f1)
  3005. MINUTES=$(echo "$UPTIME" | cut -d':' -f2)
  3006. if [ $MINUTES -lt 10 ];then
  3007. UPTIME=$(echo "$UPTIME" | sed "s/:$MINUTES/:0$MINUTES/g")
  3008. fi
  3009. if [ "$DAYSUP" == "1" ];then
  3010. UPTIME=$(echo "$UPTIME" | sed "s/days/$L_DAY/g")
  3011. else
  3012. UPTIME=$(echo "$UPTIME" | sed "s/days/$L_DAYS/g")
  3013. fi
  3014. echo "<p><font color=\"blue\">&nbsp;&nbsp;&nbsp;Uptime: $UPTIME $L_HOURS&nbsp;&nbsp;&nbsp;<br>"
  3015. echo "Zeroshell $($C_ZS_SCRIPTS_DIR/release).$($C_ZS_SCRIPTS_DIR/patchlevel)"
  3016. echo "<br>"
  3017. echo "Linux Kernel $(uname -r)"
  3018. echo "</font>"
  3019. fi
  3020.  
  3021. if [ "$1" == "DisableCp443" ];then
  3022. if [ -n "$2" ];then
  3023. `/usr/local/sbin/iptables -C CapPortHTTPS -t nat -p tcp --dport 443 -j RETURN > /dev/null 2>&1`
  3024. if [ $? -eq 1 ]; then
  3025. pos=`/usr/local/sbin/iptables -S CapPortHTTPS -t nat | wc -l 2>/dev/null`
  3026. pos=`expr $pos - 3`
  3027. if [ $pos -ge 2 ]; then
  3028. `/usr/local/sbin/iptables -I CapPortHTTPS $pos -t nat -p tcp --dport 443 -j RETURN > /dev/null`
  3029. fi
  3030. fi
  3031. else
  3032. `/usr/local/sbin/iptables -C CapPortHTTPS -t nat -p tcp --dport 443 -j RETURN > /dev/null 2>&1`
  3033. if [ $? -eq 0 ]; then
  3034. `/usr/local/sbin/iptables -D CapPortHTTPS -t nat -p tcp --dport 443 -j RETURN > /dev/null`
  3035. fi
  3036. fi
  3037. fi
  3038.  
  3039. if [ "$1" == "ControlCp443" ];then
  3040. `/usr/local/sbin/iptables -C CapPortHTTPS -t nat -p tcp --dport 443 -j RETURN > /dev/null 2>&1`
  3041. if [ $? -eq 0 ];then
  3042. echo "<input name=\"DISABLE_CP_443\" type=\"checkbox\" checked=\"checked\">"
  3043. else
  3044. echo "<input name=\"DISABLE_CP_443\" type=\"checkbox\">"
  3045. fi
  3046. fi
  3047.  
  3048. if [ "$1" == "CompExport" ];then
  3049. tar -czvf /tmp/exportuser.$2.tgz /tmp/exportuser.$2 >/dev/null
  3050. mkdir $C_HTDOCS_DIR/$3
  3051. echo "$3" > /DB/bks
  3052. mv /tmp/exportuser.$2.tgz $C_HTDOCS_DIR/$3/exportuser.$2.tgz >/dev/null
  3053. $C_ZT_SCRIPTS_DIR/RemoveTgz.sh "$C_HTDOCS_DIR/$3" &
  3054. fi
  3055.  
  3056.  
  3057. if [ "$1" == "HttpdConf" ];then
  3058. echo "$2" > $C_SYSTEM/httpd/HTTP
  3059. echo "$2" > $C_SYSTEM/httpd/NEWHTTP
  3060. echo "$3" > $C_SYSTEM/httpd/HTTPS
  3061. echo "$3" > $C_SYSTEM/httpd/NEWHTTPS
  3062. cp -f $C_HTDOCS_CONF_DIR/httpd $C_HTDOCS_CONF_DIR/httpd.conf
  3063. sed -i "s/HTTP_PORT/$2/g" $C_HTDOCS_CONF_DIR/httpd.conf
  3064. cp -f $C_HTDOCS_CONF_DIR/ssl $C_HTDOCS_CONF_DIR/ssl.conf
  3065. sed -i "s/HTTPS_PORT/$3/g" $C_HTDOCS_CONF_DIR/ssl.conf
  3066. #CN=`openssl x509 -in $C_CP_DIR/Auth/TLS/cert.pem -noout -subject |awk -F"CN=" '{print $2}' | awk -F"/" '{print $1}'`
  3067. #[ -n "$(cat $C_CP_DIR/Auth/URLrid)" ] && CN="$(cat $C_CP_DIR/Auth/URLrid)"
  3068. #sed -i "s/www.example.com/$CN/g" $C_HTDOCS_CONF_DIR/ssl.conf
  3069. #chown apache:apache $C_HTDOCS_CONF_DIR/ssl.conf
  3070. #chown apache:apache $C_HTDOCS_CONF_DIR/httpd.conf
  3071. #/etc/init.d/httpd restart
  3072. fi
  3073.  
  3074. if [ "$1" == "ConfigLanCp" ];then
  3075. if [[ -n "$2" && -n "$3" ]];then
  3076. echo "yes" > $C_SYSTEM/cp/Enabled
  3077. else
  3078. echo "no" > $C_SYSTEM/cp/Enabled
  3079. fi
  3080. echo "$3" > $C_SYSTEM/cp/Interface
  3081. echo "$3" > $C_SYSTEM/cp/Multi
  3082. INTERFACECP=$(echo "$3" | awk '{print $1}')
  3083. CONTROLV=$(echo "$INTERFACECP" | cut -sd'.' -f2)
  3084. if [ -n "$CONTROLV" ];then
  3085. INTERFACE=$(echo "$INTERFACECP" | cut -d'.' -f1)
  3086. IPCP=$(cat $C_SYSTEM/net/interfaces/$INTERFACE/VLAN/$CONTROLV/IP/00/IP)
  3087. rm -f $C_SYSTEM/cp/Auth/Custom/IP
  3088. ln -f -s $C_SYSTEM/net/interfaces/$INTERFACE/VLAN/$CONTROLV/IP/00/IP $C_SYSTEM/cp/Auth/Custom/IP
  3089. else
  3090. IPCP=$(cat $C_SYSTEM/net/interfaces/$INTERFACECP/IP/00/IP)
  3091. rm -f $C_SYSTEM/cp/Auth/Custom/IP
  3092. ln -f -s $C_SYSTEM/net/interfaces/$INTERFACECP/IP/00/IP $C_SYSTEM/cp/Auth/Custom/IP
  3093. fi
  3094. CLASSES=$(ls $C_ACCT_DIR/classes)
  3095. for CLASS in $CLASSES;do
  3096. INTCLASS="$(cat $C_ACCT_DIR/classes/$CLASS/InterfacesClass)"
  3097. for INTCP in $INTCLASS;do
  3098. if [ -z "$(cat $C_SYSTEM/cp/Interface | grep $INTCP)" ];then
  3099. sed -i "s/$INTCP//g" $C_ACCT_DIR/classes/$CLASS/InterfacesClass
  3100. fi
  3101. done
  3102. INTCLASS="$(cat $C_ACCT_DIR/classes/$CLASS/InterfacesClass)"
  3103. if [ -z $INTCLASS ];then
  3104. FIRSTINT="$(cat $C_SYSTEM/cp/Interface | awk '{print $1}')"
  3105. echo "$FIRSTINT" > $C_ACCT_DIR/classes/$CLASS/InterfacesClass
  3106. fi
  3107. done
  3108. $C_ZS_SCRIPTS_DIR/cp_start
  3109. fi
  3110.  
  3111. if [ "$1" == "x509_user" ];then
  3112. USERNAME="$2"
  3113. NBIT="$(cat $REGISTER/system/ssl/ca/keysize)"
  3114. DAYS="$(cat $REGISTER/system/ssl/ca/days)"
  3115. [ -z "$NBIT" ] && NBIT=1024
  3116. [ -z "$DAYS" ] && DAYS=365
  3117. /usr/local/ssl/bin/openssl req -new -batch -newkey rsa:$NBIT -nodes -out /tmp/x509default.req -keyout /tmp/x509default.key -days $DAYS -subj "/OU=Users/CN=$1"
  3118. /usr/local/ssl/bin/openssl ca -batch -days $DAYS -in /tmp/x509default.req -out /tmp/x509default.cert -extfile /etc/ssl/extensions -extensions user
  3119. /usr/local/ssl/bin/openssl x509 -in /tmp/x509default.cert -out "/etc/ssl/certs/${USERNAME}_user.pem"
  3120. mv /tmp/x509default.key "/etc/ssl/private/${USERNAME}_user.pem"
  3121. rm -f /tmp/x509default.req /tmp/x509default.cert
  3122. fi
  3123.  
  3124. if [ "$1" == "Logger" ];then
  3125. logger -t "ZT.$2" "$3"
  3126. fi
  3127.  
  3128. if [ "$1" == "FailBan" ];then
  3129. if [ -n "$C_IPBLOCKED" ];then
  3130. NUM_LIMIT=2
  3131. if [ "$C_FORM_DATE" == "ita" ];then
  3132. DATA_TODAY=$(date "+%d/%m/%Y %T")
  3133. else
  3134. DATA_TODAY=$(date "+%Y/%m/%d %T")
  3135. fi
  3136. NAMEHOST="$(echo $HOSTNAME | cut -d'.' -f1)"
  3137. ATTACK=""
  3138. if [ -n "$(ls /Database/LOG/$(date +%Y)/$(date +%b)/$(date +%d)/$NAMEHOST | grep 'sshd')" ];then
  3139. ATTACK="$(cat /Database/LOG/*/*/*/$NAMEHOST/sshd | grep 'Failed password' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | sort -nr )"
  3140. fi
  3141. if [ -n "$ATTACK" ];then
  3142. NUM_TOT="$(echo -e "$ATTACK" | wc -l | awk '{print $1}')"
  3143. for NUM in $(seq 1 $NUM_TOT); do
  3144. PR="$(echo -e "$ATTACK" | sed -n "${NUM}p" | awk '{print $1}')"
  3145. if [ "$PR" -gt "$C_NUM_FAIL" ];then
  3146. IP="$(echo -e "$ATTACK" | sed -n "${NUM}p" | awk '{print $2}')"
  3147. INSERTED="$(cat $C_ZT_CONF_DIR/ipbanned | grep "$IP")"
  3148. CONTROL_SIC="$(cat $C_ZT_CONF_DIR/ipfree | grep "$IP")"
  3149. if [[ -z "$INSERTED" && -z "$CONTROL_SIC" ]];then
  3150. echo "$IP # ssh - $PR Failed Login # $DATA_TODAY" >> $C_ZT_CONF_DIR/ipbanned
  3151. /usr/local/sbin/iptables -D INPUT -s $IP/32 -j DROP 2>/dev/null
  3152. /usr/local/sbin/iptables -I INPUT 1 -s $IP/32 -j DROP
  3153. fi
  3154. fi
  3155. done
  3156. fi
  3157. ATTACK=""
  3158. if [ -n "$(ls /Database/LOG/*/*/*/$NAMEHOST | grep 'ZT.LoginError')" ];then
  3159. ATTACK="$(cat /Database/LOG/*/*/*/$NAMEHOST/ZT.LoginError | grep 'Failed for' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | sort -nr )"
  3160. fi
  3161. if [ -n "$ATTACK" ];then
  3162. NUM_TOT="$(echo -e "$ATTACK" | wc -l | awk '{print $1}')"
  3163. for NUM in $(seq 1 $NUM_TOT); do
  3164. PR="$(echo -e "$ATTACK" | sed -n "${NUM}p" | awk '{print $1}')"
  3165. if [ "$PR" -gt "$C_NUM_FAIL" ];then
  3166. IP="$(echo -e "$ATTACK" | sed -n "${NUM}p" | awk '{print $2}')"
  3167. INSERTED="$(cat $C_ZT_CONF_DIR/ipbanned | grep "$IP")"
  3168. CONTROL_SIC="$(cat $C_ZT_CONF_DIR/ipfree | grep "$IP")"
  3169. if [[ -z "$INSERTED" && -z "$CONTROL_SIC" ]];then
  3170. echo "$IP # ZT - $PR Failed Login # $DATA_TODAY" >> $C_ZT_CONF_DIR/ipbanned
  3171. /usr/local/sbin/iptables -D INPUT -s $IP/32 -j DROP 2>/dev/null
  3172. /usr/local/sbin/iptables -I INPUT 1 -s $IP/32 -j DROP
  3173. fi
  3174. fi
  3175. done
  3176. fi
  3177. sed -i "/^$/d" $C_ZT_CONF_DIR/ipbanned
  3178. fi
  3179. fi
  3180.  
  3181. if [ "$1" == "IpTablesIPBan" ];then
  3182. /usr/local/sbin/iptables -D INPUT -s $2/32 -j DROP 2>/dev/null
  3183. if [ "$3" == "BAN" ];then
  3184. /usr/local/sbin/iptables -I INPUT 1 -s $2/32 -j DROP
  3185. fi
  3186. fi
  3187.  
  3188. if [ "$1" == "ControlBan" ];then
  3189. echo "$(iptables-save | grep 'INPUT' | grep DROP | grep -Eo "([0-9]{1,3}[\.]){3}[0-9]{1,3}")" > /tmp/ipbanned
  3190. fi
  3191.  
  3192. if [ "$1" == "RimuoviLogBan" ];then
  3193. SSH_LOG="$(ls /Database/LOG/*/*/*/*/sshd)"
  3194. LOGIN_LOG="$(ls /Database/LOG/*/*/*/*/ZT.LoginError)"
  3195. for SSHL in $SSH_LOG;do
  3196. sed -i "/Failed password for .*. from $2/d" $SSHL
  3197. sed -i "/^$/d" $SSHL
  3198. done
  3199. for LOGINL in $LOGIN_LOG;do
  3200. sed -i "/$2/d" $LOGINL
  3201. sed -i "/^$/d" $LOGINL
  3202. done
  3203. fi
  3204.  
  3205. if [ "$1" == "ExecSms" ];then
  3206. MYCODE="$(echo "$SMS_1_TEXT" | cut -sd' ' -f1)"
  3207. MYCOMMAND="$(echo "$SMS_1_TEXT" | cut -sd' ' -f2)"
  3208. if [[ "$MYCODE" != "$C_MY_CODE" && -z "$MYCOMMAND" ]];then
  3209. SENDER=$(echo "$SMS_1_NUMBER" | sed 's/\+//g')
  3210. PASSWORD=$(echo "$SMS_1_TEXT" | sed 's/ //g')
  3211. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid=$SENDER uid)
  3212. USERN=$(echo "$QUERY" | grep -e '^uid: ' | sed 's/^uid: //g')
  3213. if [ "$USERN" == "$SENDER" ];then
  3214. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$SENDER sn radiusUserCategory)
  3215. PASSWORD_ORI=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g')
  3216. if [ -n "$(echo "$PASSWORD_ORI" | cut -sd'-' -f2)" ];then
  3217. PASSWORD="$PASSWORD-$RANDOM"
  3218. fi
  3219. DATA="dn: cn=$SENDER,ou=Radius,$C_LDAPBASE\ncn: $SENDER\nsn: $PASSWORD"
  3220. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null || CONTROLMODIFY="no"
  3221. if [ -z "$CONTROLMODIFY" ];then
  3222. echo "$SENDER $MSG" >> $C_ZT_LOG_DIR/gammu/registration/$SENDER
  3223. logger -t "ZT.sms" "Received registration or new password from user - $SMS_1_NUMBER - $SMS_1_TEXT"
  3224. else
  3225. echo "$SENDER $MSG ERROR" >> $C_ZT_LOG_DIR/gammu/registration/$SENDER
  3226. logger -t "ZT.sms" "Error - Received registration or new password from user - $SMS_1_NUMBER - $SMS_1_TEXT"
  3227. fi
  3228. else
  3229. if [ -n "$C_AR_ONLY_SMS" ];then
  3230. USERNAME=$(echo "$SMS_1_NUMBER" | sed 's/\+//g')
  3231. PASSWORD=$(echo "$SMS_1_TEXT" | sed 's/ //g')
  3232. PHONE="$USERNAME"
  3233. UIDN=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uidNumber | sed -n '/uidNumber:/p' | awk '{ print $2 }' | sort -n | tail -1 )
  3234. UIDNUMBER=$(($UIDN+1))
  3235. TODAY=$(dateDiff -d "1970-01-01" "$(date +%Y)-$(date +%m)-$(date +%d)")
  3236. if [ -z "$C_AR_EXPIRE" ];then
  3237. C_AR_EXPIRE=24836
  3238. else
  3239. SHADOWEXPIRE=$C_AR_EXPIRE
  3240. DIFF_DATE=$(($SHADOWEXPIRE-$TODAY))
  3241. AR_YEAR=$(date +%Y --date="+$DIFF_DATE days")
  3242. AR_MONTH=$(date +%m --date="+$DIFF_DATE days")
  3243. AR_DAY=$(date +%d --date="+$DIFF_DATE days")
  3244. DATEK5="$AR_YEAR-$AR_MONTH-$AR_DAY"
  3245. fi
  3246. if [ -n "$C_AR_EXPIRE_DAYS" ];then
  3247. AR_YEAR=$(date +%Y --date="+$C_AR_EXPIRE_DAYS days")
  3248. AR_MONTH=$(date +%m --date="+$C_AR_EXPIRE_DAYS days")
  3249. AR_DAY=$(date +%d --date="+$C_AR_EXPIRE_DAYS days")
  3250. SHADOWEXPIRE=$(dateDiff -d "1970-01-01" "$AR_YEAR-$AR_MONTH-$AR_DAY")
  3251. DATEK5="$AR_YEAR-$AR_MONTH-$AR_DAY"
  3252. fi
  3253. PASSWORD_ORI="$PASSWORD"
  3254. CLASS="$C_AR_CLASS"
  3255. UTENTEC="admin"
  3256. INFO="autoregister_gammu"
  3257. ldap_add_people
  3258. if [ -n "$CONTROLADD" ]; then
  3259. error "$L_PROBLEM_INSERTING"
  3260. exit
  3261. fi
  3262. ldap_add_radius
  3263. if [ -n "$CONTROLADD" ]; then
  3264. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "uid=$USERNAME,ou=People,$C_LDAPBASE" 2> /dev/null > /dev/null
  3265. error "$L_PROBLEM_INSERTING"
  3266. exit
  3267. fi
  3268. $C_ZT_BIN_DIR/zt "ControlAcct" "$USERNAME"
  3269. $C_ZT_BIN_DIR/zt "ControlLimits" "$USERNAME"
  3270. $C_ZT_BIN_DIR/zt "AddK5" "$PASSWORD" "$USERNAME" "$DATEK5"
  3271. if [ -z "$CONTROLADD" ];then
  3272. echo "$SMS_1_NUMBER $SMS_1_TEXT" >> $C_ZT_LOG_DIR/gammu/registration/$SMS_1_NUMBER
  3273. logger -t "ZT.sms" "Received registration from user - $SMS_1_NUMBER - $SMS_1_TEXT"
  3274. else
  3275. echo "$SMS_1_NUMBER $SMS_1_TEXT" >> $C_ZT_LOG_DIR/gammu/registration/$SMS_1_NUMBER
  3276. logger -t "ZT.sms" "Error - Received registration from user - $SMS_1_NUMBER - $SMS_1_TEXT"
  3277. fi
  3278. fi
  3279. fi
  3280. fi
  3281. if [[ "$MYCODE" == "$C_MY_CODE" && -n "$MYCOMMAND" ]];then
  3282. $C_ZT_SCRIPTS_DIR/esec_from_sms.sh "$MYCOMMAND"
  3283. echo "$SMS_1_NUMBER $SMS_1_TEXT" >> $C_ZT_LOG_DIR/gammu/mycommands/$SMS_1_NUMBER
  3284. logger -t "ZT.sms" "Received command from admin - $SMS_1_NUMBER - $MYCOMMAND"
  3285. fi
  3286. fi
  3287.  
  3288. if [ "$1" == "CheckKey" ];then
  3289. KEY_PORT=$(cat $C_ZT_CONF_DIR/gammu.conf | grep '^port' | awk '{print $3}' | cut -d'/' -f3)
  3290. KEY=$(udevadm info --query=property --name=$KEY_PORT)
  3291. MODEL=$(echo -e "$KEY" | grep '^ID_MODEL=' | cut -d'=' -f2)
  3292. TYPE=$(echo -e "$KEY" | grep '^ID_MODEL_FROM_DATABASE=' | cut -d'=' -f2)
  3293. VENDOR=$(echo -e "$KEY" | grep '^ID_VENDOR_ID=' | cut -d'=' -f2)
  3294. MONITOR="$($C_ZT_BIN_DIR/gammu-smsd-monitor -c $C_ZT_CONF_DIR/gammu.conf -d1 -n1)"
  3295. SIGNAL="$(echo -e "$MONITOR" | grep '^NetworkSignal' | awk '{print $2}')"
  3296. BATTERY="$(echo -e "$MONITOR" | grep '^BatterPercent' | awk '{print $2}')"
  3297. if [[ -n "$2" && -z "$MODEL" ]];then
  3298. echo "notconnected"
  3299. else
  3300. if [ -n "$MODEL" ];then
  3301. echo "Device: <font color=\"blue\">$MODEL - $TYPE</font>"
  3302. if [ -n "$SIGNAL" ];then
  3303. echo "<br>&nbsp;<br> Signal: <font color=\"blue\">$SIGNAL %</font>"
  3304. fi
  3305. if [[ -n "$BATTERY" && "$BATTERY" != "0" ]];then
  3306. echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Battery: <font color=\"blue\">$BATTERY %</font>"
  3307. fi
  3308. else
  3309. echo "Device: <font color=\"red\">$L_NOT_CONNECTED</font>"
  3310. fi
  3311. fi
  3312. fi
  3313.  
  3314. if [ "$1" == "RegisterSocial" ];then
  3315. PASSWORD="$($C_ZT_BIN_DIR/convplain $4)"
  3316. if [ "$2" == "facebook" ];then
  3317. COOKIE='/tmp/cookiefb'
  3318. USER_AGENT='Mozilla/5.0'
  3319. curl -k -X GET 'https://www.facebook.com/home.php' --verbose --user-agent $USER_AGENT --cookie $COOKIE --cookie-jar $COOKIE >/dev/null 2>/dev/null
  3320. curl -k -X POST 'https://login.facebook.com/login.php' --verbose --user-agent $USER_AGENT --data-urlencode "email=$3" --data-urlencode "pass=$PASSWORD" --cookie $COOKIE --cookie-jar $COOKIE >/dev/null 2>/dev/null
  3321. CONTROL_EXTREF="$(cat $COOKIE | grep 'reg_ext_ref' | awk '{print $NF}')"
  3322. CONTROL_FBGATE="$(cat $COOKIE | grep 'reg_fb_gate' | awk '{print $NF}')"
  3323. CONTROL_FBREF="$(cat $COOKIE | grep 'reg_fb_gate' | awk '{print $NF}')"
  3324. CONTROL_USER="$(cat $COOKIE | grep 'c_user')"
  3325. #if [[ "$CONTROL_EXTREF" == "deleted" && "$CONTROL_FBGATE" == "deleted" && "$CONTROL_FBREF" == "deleted" && -n "$CONTROL_USER" ]];then
  3326. if [ -n "$CONTROL_USER" ];then
  3327. echo "yes"
  3328. else
  3329. echo "no"
  3330. fi
  3331. rm -rf $COOKIE
  3332. exit
  3333. fi
  3334.  
  3335. if [ "$2" == "google" ];then
  3336. GOOGLEPLUS="$(curl -N -k https://www.google.com/accounts/ClientLogin --data-urlencode Email=$3 --data-urlencode Passwd=$PASSWORD -d accountType=GOOGLE -d source=Google-cURL-Example -d service=lh2)"
  3337. if [ "$GOOGLEPLUS" == "Error=BadAuthentication" ];then
  3338. echo "no"
  3339. else
  3340. echo "yes"
  3341. fi
  3342. exit
  3343. fi
  3344. if [ "$2" == "twitter" ];then
  3345. rm -rf /tmp/cookietw 2>/dev/null
  3346. COOKIE='/tmp/cookietw'
  3347. USER_AGENT='Mozilla/5.0'
  3348. init=`curl -k -s -c "$COOKIE" 'https://twitter.com/'`
  3349. token=`echo "$init" | grep "authenticity_token" | sed -n '1p' | sed -e 's/.*value="//' | cut -d'"' -f1`
  3350. sleep 1
  3351. control=`curl -k -X POST -s -b "$COOKIE" -c "$COOKIE" -A "$USER_AGENT" --data "session[username_or_email]=$3&session[password]=$PASSWORD&return_to_ssl=true&scribe_log=&redirect_after_login=&authenticity_token=$token" 'https://twitter.com/sessions'`
  3352. CONTROL_OTOKEN="$(cat $COOKIE | grep 'auth_token')"
  3353. CONTROL_USER="$(cat $COOKIE | grep 'twid')"
  3354. if [[ -n "$CONTROL_OTOKEN" && -n "$CONTROL_USER" ]];then
  3355. echo "yes"
  3356. else
  3357. echo "no"
  3358. fi
  3359. rm -rf /tmp/cookietw 2>/dev/null
  3360. fi
  3361. fi
  3362.  
  3363. if [ "$1" == "AccountingStart" ];then
  3364. $C_ZS_SCRIPTS_DIR/accounting_start
  3365. fi
  3366.  
  3367. if [ "$1" == "DeleteBlankLine" ];then
  3368. sed -i "/^$/d" "$2"
  3369. fi
  3370.  
  3371. if [ "$1" == "LockUserWait" ];then
  3372. USERLOCK="$(echo $2 | cut -d'-' -f1)"
  3373. if [ -z $(cat $C_ZT_CONF_DIR/userswait | grep "^$USERLOCK-") ];then
  3374. sed -i "s/^$USERLOCK/$USERLOCK-$RANDOM/g" "$3"
  3375. fi
  3376. fi
  3377.  
  3378. if [ "$1" == "UnlockUserWait" ];then
  3379. if [ -n $(cat $C_ZT_CONF_DIR/userswait | grep "^$2-") ];then
  3380. sed -i "s/^$2.*/$2/g" "$3"
  3381. fi
  3382. fi
  3383.  
  3384. if [ "$1" == "DeleteUserWait" ];then
  3385. if [ "$2" == "END" ];then
  3386. sed -i "/DELETE/d" "$3"
  3387. sed -i "/^$/d" "$3"
  3388. exit
  3389. fi
  3390. USERDEL="$2"
  3391. sed -i "s/^$USERDEL*/DELETE/g" "$3"
  3392. fi
  3393.  
  3394. if [ "$1" == "DeleteFirstZero" ];then
  3395. echo "$2" | $C_ZT_BIN_DIR/bc
  3396. fi
  3397.  
  3398. if [ "$1" == "SortUsersWait" ];then
  3399. echo "$(cat $2 | sort)" > $2
  3400. fi
  3401.  
  3402. if [ "$1" == "AddNumLogin" ];then
  3403. sed -i "s/^$2.*/$2 $3 $4/g" $C_ZT_LOG_DIR/controllogin/control
  3404. sed -i "/^$/d" $C_ZT_LOG_DIR/controllogin/control
  3405. fi
  3406.  
  3407. if [ "$1" == "BlockMacLogin" ];then
  3408. /usr/local/sbin/iptables -D INPUT -m mac --mac-source $2 -j DROP 2>/dev/null
  3409. /usr/local/sbin/iptables -I INPUT 1 -m mac --mac-source $2 -j DROP 2>/dev/null
  3410. SEC_NOW=$(date --utc +%s)
  3411. SEC_NOW=$(($SEC_NOW+3600))
  3412. SEC_BLOCK=$(($C_WAIT_LOGIN_TIME*60))
  3413. SEC_UNBLOCK=$(($SEC_NOW+$SEC_BLOCK))
  3414. MIN_UNBLOCK=$(date -d "1970-01-01 $SEC_UNBLOCK sec" +%M | $C_ZT_BIN_DIR/bc)
  3415. HOUR_UNBLOCK=$(date -d "1970-01-01 $SEC_UNBLOCK sec" +%H | $C_ZT_BIN_DIR/bc)
  3416. DAY_UNBLOCK=$(date -d "1970-01-01 $SEC_UNBLOCK sec" +%d | $C_ZT_BIN_DIR/bc)
  3417. MONTH_UNBLOCK=$(date -d "1970-01-01 $SEC_UNBLOCK sec" +%m | $C_ZT_BIN_DIR/bc)
  3418. MACS="$(echo $2 | sed 's/\://g')"
  3419. rm -r -f $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron 2>/dev/null > /dev/null
  3420. mkdir $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron
  3421. mkdir $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/cron
  3422. echo "Cron ZT${MACS}" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/Description
  3423. echo "yes" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/Enabled
  3424. echo "$C_ZT_SCRIPTS_DIR/unblocklogin.sh $2" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/File
  3425. chmod 755 $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/File
  3426. echo "*" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/cron/DoW
  3427. echo "$DAY_UNBLOCK" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/cron/DoM
  3428. echo "$HOUR_UNBLOCK" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/cron/Hour
  3429. echo "$MIN_UNBLOCK" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/cron/Minute
  3430. echo "$MONTH_UNBLOCK" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/cron/Month
  3431. echo "" > $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron/cron/Step
  3432. chown -R root:root $C_CRON_SCRIPTS_DIR/ZT${MACS}-Cron
  3433. $C_ZT_BIN_DIR/zt "RestartCron"
  3434. fi
  3435.  
  3436. if [ "$1" == "ConvertFileUsers" ];then
  3437. sed -i 's/$/\n/g' $C_ZT_DIR/tmp/fileusers.txt
  3438. sed -i '/^$/d' $C_ZT_DIR/tmp/fileusers.txt
  3439. fi
  3440.  
  3441. if [ "$1" == "QrCode" ];then
  3442. if ! [ -d $C_HTDOCS_DIR/images/qrcode ];then
  3443. mkdir $C_HTDOCS_DIR/images/qrcode
  3444. fi
  3445. USER="$2"
  3446. USERNAME="$( echo "$2" | $C_ZT_BIN_DIR/base64)"
  3447. PASSWORD="$( echo "$3" | $C_ZT_BIN_DIR/base64)"
  3448. rm -rf $C_HTDOCS_DIR/images/qrcode/${USER}.png 2>/dev/null
  3449. $C_ZT_BIN_DIR/qrencode -o $C_HTDOCS_DIR/images/qrcode/${USER}.png "http://www.zerotruth.net?OjoKcXJ2YWxpZGl0eQo=OjoK${USERNAME}OjoK${PASSWORD}"
  3450. fi
  3451.  
  3452. if [ "$1" == "DeleteQrCode" ];then
  3453. USER="$2"
  3454. rm -rf $C_HTDOCS_DIR/images/qrcode/${USER}.png 2>/dev/null
  3455. fi
  3456.  
  3457. if [ "$1" == "FixUpgrade" ];then
  3458. $C_ZT_BIN_DIR/zt "RegisterCode" "$(cat /tmp/CODE)"
  3459. rm -rf /tmp/CODE
  3460. rm -rf $C_HTDOCS_ZT_DIR/images/wg
  3461. rm -rf $C_HTDOCS_ZT_DIR/images/popup
  3462. ln -s $C_HTDOCS_DIR/images/wg $C_HTDOCS_ZT_DIR/images/wg
  3463. ln -s $C_HTDOCS_DIR/images/popup $C_HTDOCS_ZT_DIR/images/popup
  3464. fi
  3465.  
  3466. if [ "$1" == "SpeedyTest" ];then
  3467. if [ -z "$3" ];then
  3468. rm -rf $C_ZT_CONF_DIR/speedytest/download 2>/dev/null
  3469. rm -rf $C_ZT_CONF_DIR/speedytest/ping 2>/dev/null
  3470. fi
  3471. if [ -n "$3" ];then
  3472. rm -rf $C_ZT_CONF_DIR/speedytest/upload 2>/dev/null
  3473. fi
  3474. fileName="10mb.test"
  3475. cd /tmp
  3476. if [[ -f ./$filename && -z "$3" ]];then
  3477. rm -rf ./$filename
  3478. fi
  3479. if [ -z "$3" ];then
  3480. DLSPEED=$(curl http://$2/$fileName -w "%{speed_download}" -o $fileName -s | sed "s/\,/\./g")
  3481. echo "$(echo "scale=2;$DLSPEED/1048576" | $C_ZT_BIN_DIR/bc | sed 's/^\./0\./g' )" > $C_ZT_CONF_DIR/speedytest/download
  3482. echo "$2" > $C_ZT_CONF_DIR/speedytest/server
  3483. else
  3484. ULSPEED=$(echo -n "scale=2; " && curl -F "file=@$fileName" http://$2/webtests/ul.php -w "%{speed_upload}" -s -o /dev/null | sed "s/\,/\./g")
  3485. echo "$(echo "scale=2;$ULSPEED/1048576" | $C_ZT_BIN_DIR/bc | sed 's/^\./0\./g' )" > $C_ZT_CONF_DIR/speedytest/upload
  3486. ping -q -c5 $2 > $C_ZT_CONF_DIR/speedytest/ping
  3487. if [ -f ./$filename ];then
  3488. rm -rf ./$filename
  3489. fi
  3490. fi
  3491. fi
  3492.  
  3493. if [ "$1" == "DiskTest" ];then
  3494. cd /tmp
  3495. SPEED="$($C_ZT_BIN_DIR/dd if=/dev/zero of=disktest bs=64k count=16k conv=fdatasync 2>&1 | tail -n 1 | sed 's/s, /\|/g' | cut -d'|' -f2)"
  3496. echo "$SPEED" > $C_ZT_CONF_DIR/disktest
  3497. rm -rf disktest
  3498. fi
  3499.  
  3500. if [ "$1" == "CPUTest" ];then
  3501. echo "$(cat /proc/cpuinfo | grep "model name" | cut -d ":" -f2 | tr -s " " | head -n 1) $(cat /proc/cpuinfo | grep "model name" | cut -d ":" -f2 | wc -l)" > $C_ZT_CONF_DIR/cputype
  3502. TESTCPU="$((time echo "scale=5000; 4*a(1)" | $C_ZT_BIN_DIR/bc -lq) 2>&1 | grep real | cut -f2 | sed 's/m/ /g' | sed 's/s//g')"
  3503. MINCPU="$(echo $TESTCPU | awk '{print $1}')"
  3504. SECCPU="$(echo $TESTCPU | awk '{print $2}')"
  3505. if [ "$MINCPU" != "0" ];then
  3506. [ "$MINCPU" -lt 10 ] && MINCPU=0$MINCPU
  3507. echo "$MINCPU min $SECCPU sec" > $C_ZT_CONF_DIR/cputest
  3508. else
  3509. echo "sec $SECCPU" > $C_ZT_CONF_DIR/cputest
  3510. fi
  3511. fi
  3512.  
  3513. if [ "$1" == "CreateImageRandom" ];then
  3514. echo "function BaseURL(protocol,port) {" > $C_HTDOCS_ZT_DIR/js/rimages.js
  3515. echo " var host = location.hostname;" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3516. echo " if (protocol == 'https:') { port = port + 1000 };" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3517. echo " return protocol+\"//\"+host+\":\"+port;" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3518. echo "}" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3519. echo "var images = [];" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3520. echo "index = 0;" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3521. ni=0
  3522. for imgs in $(ls $C_HTDOCS_ZT_DIR/images/template/imglogin );do
  3523. echo "images[$ni] = \"<img id='imgup' src='\"+url+\"/zerotruth/images/template/imglogin/$imgs'>\";" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3524. ni=$(($ni+1))
  3525. done
  3526. echo "index = Math.floor(Math.random() * images.length);" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3527. echo "document.write(images[index]);" >> $C_HTDOCS_ZT_DIR/js/rimages.js
  3528. fi
  3529.  
  3530. if [ "$1" == "UnlockAsterisk" ];then
  3531. QUERY="$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$2 sn)"
  3532. PASSWORD="$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g')"
  3533. PASSWORD="$(echo "$PASSWORD" | cut -d'-' -f1)"
  3534. DATA="dn: cn=$2,ou=Radius,$C_LDAPBASE\nsn: $PASSWORD"
  3535. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3536. DATA="dn: uid=$2,ou=PEOPLE,$C_LDAPBASE\ngecos: autoregister_asterisk"
  3537. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3538. fi
  3539.  
  3540. if [ "$1" == "HttpdRestart" ];then
  3541. /etc/init.d/httpd restart
  3542. fi
  3543.  
  3544. #### MultiCP
  3545. if [ "$1" == "SyncRemoteDefCron" ];then
  3546. rm -r -f $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron 2>/dev/null > /dev/null
  3547. if [ -n "$2" ];then
  3548. mkdir $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron
  3549. mkdir $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron/cron
  3550. echo "Cron ZTSYNCREMOTEDEF" > $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron/Description
  3551. echo "yes" > $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron/Enabled
  3552. echo "$C_ZT_SCRIPTS_DIR/zt.sh CronSyncDef" > $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron/File
  3553. chmod 755 $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron/File
  3554. echo "$3 m" > $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron/cron/Step
  3555. chown -R root:root $C_CRON_SCRIPTS_DIR/ZTSyncRemoteDef-Cron
  3556. fi
  3557. $C_ZT_BIN_DIR/zt "RestartCron"
  3558. fi
  3559.  
  3560. if [ "$1" == "RemoteSyncDef" ];then
  3561. [ -z "$C_CP_SYNC_DEF" ] && exit
  3562. if [ ! -d $C_ZT_CONF_DIR/RemoteSyncDef ];then
  3563. mkdir $C_ZT_CONF_DIR/RemoteSyncDef
  3564. fi
  3565. ACTION="$2"
  3566. CLIENT="$3"
  3567. IP="$4"
  3568. USER="$5"
  3569. cd $C_ZT_CONF_DIR/RemoteSyncDef
  3570. LAST=`ls -f * 2>/dev/null | sort -n | tail -1`
  3571. if [ -z "$LAST" ] ; then
  3572. NEW=0000
  3573. else
  3574. LAST=$(echo $LAST | sed 's/^0*//')
  3575. [ -z "$LAST" ] && LAST=0
  3576. NEW=$(printf "%04d" $((LAST+1)))
  3577. fi
  3578. echo "ACTION: $ACTION" > $NEW
  3579. echo "CLIENT: $CLIENT" >> $NEW
  3580. echo "IP: $IP" >> $NEW
  3581. echo "PASSWORD: $PASSWORD" >> $NEW
  3582. echo "$USER: $USER" >> $NEW
  3583. fi
  3584.  
  3585. if [ "$1" == "CronSyncDef" ];then
  3586. [ -z "$C_CP_SYNC_DEF" ] && exit
  3587. if [ -d $C_ZT_CONF_DIR/RemoteSyncDef ];then
  3588. cd $C_ZT_CONF_DIR/RemoteSyncDef
  3589. [ -z "$(ls -f)" ] && exit
  3590. for CR in $(ls -f);do
  3591. ACTION=$(cat "$CR" | grep '^ACTION:' | awk '{print $2}')
  3592. CLIENT=$(cat "$CR" | grep '^CLIENT:' | awk '{print $2}')
  3593. IP=$(cat "$CR" | grep '^IP:' | awk '{print $2}')
  3594. PASSWORD=$(cat "$CR" | grep '^PASSWORD:' | awk '{print $2}')
  3595. USER=$(cat "$CR" | grep '^USER:' | awk '{print $2}')
  3596. if [ -n "$USER" ];then
  3597. /usr/local/bin/curl -G -d "CLIENT=$CLIENT&PASS=$PASSWORD&ACTION=$ACTION&USER=$USER" http://$IP:8088/cgi-bin/remotecp.sh >/dev/null
  3598. else
  3599. /usr/local/bin/curl -G -d "CLIENT=$CLIENT&PASS=$PASSWORD&ACTION=$ACTION" http://$IP:8088/cgi-bin/remotecp.sh >/dev/null
  3600. fi
  3601. rm -rf $CR
  3602. done
  3603. NEW="1000"
  3604. for CR in $(ls -f);do
  3605. mv $CR $NEW
  3606. NEW=$(($NEW+1))
  3607. done
  3608. NEW="0000"
  3609. for CR in $(ls -f);do
  3610. mv $CR $NEW
  3611. LAST=$(echo $NEW | sed 's/^0*//')
  3612. NEW=$(printf "%04d" $((LAST+1)))
  3613. done
  3614. fi
  3615. fi
  3616. ##########
  3617. if [ "$1" == "KeyRemoteCp" ];then
  3618. if [ ! -d $C_ZT_CONF_DIR/RemoteKey ];then
  3619. mkdir $C_ZT_CONF_DIR/RemoteKey
  3620. fi
  3621. /usr/local/ssl/bin/openssl req -x509 -nodes -days 100000 -newkey rsa:2048 -keyout $C_ZT_CONF_DIR/RemoteKey/privatekey.pem -out $C_ZT_CONF_DIR/RemoteKey/publickey.pem -subj '/'
  3622. echo "$(date +%s)" > $C_ZT_CONF_DIR/RemoteKey/controlkey
  3623. fi
  3624.  
  3625. if [ "$1" == "ModifyKey" ];then
  3626. sed -i 's/+++++/ /g' $C_ZT_CONF_DIR/RemoteKey/privatekey.pem
  3627. fi
  3628.  
  3629. if [ "$1" == "TgzClasses" ];then
  3630. rm -rf /tmp/classes.tgz 2>/dev/null
  3631. rm -rf /tmp/classes.sec 2>/dev/null
  3632. cd $C_ACCT_DIR/classes
  3633. tar -czvf /tmp/classes.tgz * >/dev/null
  3634. /usr/local/ssl/bin/openssl smime -encrypt -aes256 -in /tmp/classes.tgz -binary -outform DEM -out /tmp/classes.sec $C_ZT_CONF_DIR/RemoteKey/publickey.pem
  3635. rm -rf /tmp/classes.tgz
  3636. mv -f /tmp/classes.sec $C_HTDOCS_ZT_DIR/classes.sec
  3637. fi
  3638.  
  3639. if [ "$1" == "GetRemoteClass" ];then
  3640. cd /tmp
  3641. rm -rf classes.sec 2>/dev/null
  3642. rm -rf classes.tgz 2>/dev/null
  3643. wget http://$C_CP_REMOTE_IP:8088/classes.sec
  3644. /usr/local/ssl/bin/openssl smime -decrypt -in /tmp/classes.sec -binary -inform DEM -inkey $C_ZT_CONF_DIR/RemoteKey/privatekey.pem -out /tmp/classes.tgz
  3645. rm -rf $C_ACCT_DIR/classes/*
  3646. /bin/tar zxvf /tmp/classes.tgz -C /Database/var/register/system/acct/classes/
  3647. rm -rf classes.sec 2>/dev/null
  3648. #rm -rf classes.tgz 2>/dev/null
  3649. fi
  3650.  
  3651. if [ "$1" == "TgzLDAP" ];then
  3652. rm -rf /tmp/ldapremote 2>/dev/null
  3653. mkdir /tmp/ldapremote
  3654. cd /tmp/ldapremote
  3655. /usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" '(&(uid=*)(!(uid=admin)))' > ldap.people
  3656. /usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" '(&(cn=*)(!(cn=admin)))' > ldap.radius
  3657. tar -czvf ldap.tgz * >/dev/null
  3658. /usr/local/ssl/bin/openssl smime -encrypt -aes256 -in /tmp/ldapremote/ldap.tgz -binary -outform DEM -out /tmp/ldapremote/ldap.sec $C_ZT_CONF_DIR/RemoteKey/publickey.pem
  3659. mv -f /tmp/ldapremote/ldap.sec $C_HTDOCS_ZT_DIR/ldap.sec
  3660. rm -rf /tmp/ldapremote 2>/dev/null
  3661. fi
  3662.  
  3663. if [ "$1" == "GetRemoteLDAP" ];then
  3664. rm -rf /tmp/ldapremote 2>/dev/null
  3665. mkdir /tmp/ldapremote
  3666. cd /tmp/ldapremote
  3667. wget http://$C_CP_REMOTE_IP:8088/ldap.sec
  3668. /usr/local/ssl/bin/openssl smime -decrypt -in /tmp/ldapremote/ldap.sec -binary -inform DEM -inkey $C_ZT_CONF_DIR/RemoteKey/privatekey.pem -out /tmp/ldapremote/ldap.tgz
  3669. /bin/tar zxvf ldap.tgz
  3670. USERS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" '(!(uid=admin))' uid | grep '^uid:' | awk '{print $2}')
  3671. for USER in $USERS;do
  3672. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "uid=$USER,ou=People,$C_LDAPBASE" > /dev/null
  3673. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "cn=$USER,ou=Radius,$C_LDAPBASE" > /dev/null
  3674. $C_ZT_BIN_DIR/zt "Cancella" "$C_ACCT_DIR/credits/$USER"
  3675. $C_ZT_BIN_DIR/zt "DelK5" "$USER"
  3676. done
  3677. /etc/init.d/ldap restart
  3678. /usr/local/bin/ldapadd -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT -f ldap.people > /dev/null
  3679. /usr/local/bin/ldapadd -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT -f ldap.radius > /dev/null
  3680. cd ..
  3681. rm -rf /tmp/ldapremote 2>/dev/null
  3682. /etc/init.d/ldap restart
  3683. fi
  3684.  
  3685. if [ "$1" == "TgzUser" ];then
  3686. USERNAME="$2"
  3687. UPDATE="$3"
  3688. rm -rf /tmp/userRemote 2>/dev/null
  3689. mkdir /tmp/userRemote
  3690. cd /tmp/userRemote
  3691. /usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" "uid=$USERNAME" > ldap.people.user
  3692. /usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" "cn=$USERNAME" > ldap.radius.user
  3693. if [ -f $C_ACCT_DIR/credits/$USERNAME ];then
  3694. cp $C_ACCT_DIR/credits/$USERNAME ./credit
  3695. fi
  3696. tar -czvf user.tgz * >/dev/null
  3697. /usr/local/ssl/bin/openssl smime -encrypt -aes256 -in /tmp/userRemote/user.tgz -binary -outform DEM -out /tmp/userRemote/user.sec $C_ZT_CONF_DIR/RemoteKey/publickey.pem
  3698. mv -f /tmp/userRemote/user.sec $C_HTDOCS_ZT_DIR/user.sec
  3699. rm -rf /tmp/userRemote 2>/dev/null
  3700. fi
  3701.  
  3702. if [ "$1" == "GetRemoteUser" ];then
  3703. USER="$2"
  3704. rm -rf /tmp/userRemote 2>/dev/null
  3705. mkdir /tmp/userRemote
  3706. cd /tmp/userRemote
  3707. wget http://$C_CP_REMOTE_IP:8088/user.sec
  3708. /usr/local/ssl/bin/openssl smime -decrypt -in /tmp/userRemote/user.sec -binary -inform DEM -inkey $C_ZT_CONF_DIR/RemoteKey/privatekey.pem -out /tmp/userRemote/user.tgz
  3709. /bin/tar zxvf user.tgz
  3710. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "uid=$USER,ou=People,$C_LDAPBASE" 2>/dev/null >/dev/null
  3711. /usr/local/bin/ldapdelete -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT "cn=$USER,ou=Radius,$C_LDAPBASE" 2>/dev/null >/dev/null
  3712. $C_ZT_BIN_DIR/zt "Cancella" "$C_ACCT_DIR/credits/$USER" 2>/dev/null >/dev/null
  3713. $C_ZT_BIN_DIR/zt "DelK5" "$USER" 2>/dev/null >/dev/null
  3714. /usr/local/bin/ldapadd -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT -f ldap.people.user > /dev/null
  3715. /usr/local/bin/ldapadd -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT -f ldap.radius.user > /dev/null
  3716. if [ -f ./credit ];then
  3717. cp ./credit $C_ACCT_DIR/credits/$USER
  3718. fi
  3719. cd ..
  3720. rm -rf /tmp/userRemote 2>/dev/null
  3721. #/etc/init.d/ldap restart
  3722. fi
  3723.  
  3724. if [ "$1" == "TgzCredits" ];then
  3725. rm -rf /tmp/credits 2>/dev/null
  3726. mkdir /tmp/credits
  3727. cd $C_ACCT_DIR/credits
  3728. tar -czvf /tmp/credits/credits.tgz * >/dev/null
  3729. /usr/local/ssl/bin/openssl smime -encrypt -aes256 -in /tmp/credits/credits.tgz -binary -outform DEM -out /tmp/credits/credits.sec $C_ZT_CONF_DIR/RemoteKey/publickey.pem
  3730. mv -f /tmp/credits/credits.sec $C_HTDOCS_ZT_DIR/credits.sec
  3731. rm -rf /tmp/credits 2>/dev/null
  3732. fi
  3733.  
  3734. if [ "$1" == "GetRemoteCredits" ];then
  3735. cd /tmp
  3736. rm -rf credits.sec 2>/dev/null
  3737. rm -rf credits.tgz 2>/dev/null
  3738. wget http://$C_CP_REMOTE_IP:8088/credits.sec
  3739. /usr/local/ssl/bin/openssl smime -decrypt -in /tmp/credits.sec -binary -inform DEM -inkey $C_ZT_CONF_DIR/RemoteKey/privatekey.pem -out /tmp/credits.tgz
  3740. rm -rf $C_ACCT_DIR/credits/*
  3741. /bin/tar zxvf /tmp/credits.tgz -C $C_ACCT_DIR/credits/
  3742. rm -rf credits.sec 2>/dev/null
  3743. rm -rf credits.tgz 2>/dev/null
  3744. fi
  3745.  
  3746. if [ "$1" == "LoginRemote" ];then
  3747. USERNAME="$4"
  3748. if [ "$C_CP_LOCAL_TYPE" == "Client" ];then
  3749. CONNECT="$2"
  3750. IP="$3"
  3751. sleep 2
  3752. if [ -z "$USERNAME" ];then
  3753. USERNAME=$(cat $C_CP_DIR/Connected/$IP/User | cut -d'@' -f1)
  3754. fi
  3755. if [ -n "$USERNAME" ];then
  3756. /usr/local/bin/curl -G -d "CLIENT=$C_CP_LOCAL_NAME&PASS=$C_CP_REMOTE_PASSWORD&ACTION=ConnectUser&USERNAME=$USERNAME&IP=$IP&CONNECT=$CONNECT" http://$C_CP_REMOTE_IP:8088/cgi-bin/remotecp.sh >/dev/null
  3757. fi
  3758. else
  3759. if [ -n "$USERNAME" ];then
  3760. LR=$(/usr/local/bin/ldapsearch -xLLL -b "ou=People,$C_LDAPBASE" uid=$USERNAME loginRemote | grep '^loginRemote:' | awk '{print $2}')
  3761. if [ "$LR" != "?" ];then
  3762. NAS=$(echo "$LR" | cut -d'-' -f1)
  3763. IP=$(echo "$LR" | cut -d'-' -f2)
  3764. IP_REMOTE=$(cat $C_ZT_CONF_DIR/RemoteClients/$NAS/IP)
  3765. PASSWORD=$(cat $C_ZT_CONF_DIR/RemoteClients/$NAS/PASSWORD)
  3766. /usr/local/bin/curl -G -d "CLIENT=$NAS&PASS=$PASSWORD&ACTION=DisconnectUser&USERNAME=$USERNAME&IP=$IP" http://$IP_REMOTE:8088/cgi-bin/remotecp.sh >/dev/null
  3767. DATA="dn: uid=$USERNAME,ou=People,$C_LDAPBASE\nloginRemote: ?"
  3768. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3769. fi
  3770. fi
  3771. fi
  3772. fi
  3773.  
  3774. if [ "$1" == "LockUserClient" ];then
  3775. USER="$2"
  3776. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USER sn)
  3777. PASS=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g' | cut -d'-' -f1)
  3778. PASSLOCK="$PASS-$RANDOM"
  3779. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASSLOCK"
  3780. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3781. DATA="dn: uid=$USER,ou=PEOPLE,$C_LDAPBASE\nlocked: yes"
  3782. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3783. fi
  3784.  
  3785. if [ "$1" == "UnlockUserClient" ];then
  3786. USER="$2"
  3787. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USER sn)
  3788. PASS=$(echo "$QUERY" | grep -e '^sn: ' | sed 's/^sn: //g' | cut -d'-' -f1)
  3789. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS"
  3790. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3791. DATA="dn: uid=$USER,ou=PEOPLE,$C_LDAPBASE\nlocked: no"
  3792. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3793. fi
  3794.  
  3795. if [ "$1" == "LockAllClient" ];then
  3796. USERLOCK=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" '(!(sn=*-*))' cn | sed -n '/cn:/p' | awk '{ print $2 }')
  3797. for USER in $USERLOCK;do
  3798. if [ "$USER" != "admin" ];then
  3799. RADIUS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USER sn)
  3800. PASS=$( echo $RADIUS | awk '{print $NF}')
  3801. PASS="$PASS-$RANDOM"
  3802. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS"
  3803. echo -e "$DATA" | ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3804. DATA="dn: uid=$USER,ou=PEOPLE,$C_LDAPBASE\nlocked: yes"
  3805. echo -e "$DATA" | ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3806. fi
  3807. done
  3808. fi
  3809.  
  3810. if [ "$1" == "UnlockAllClient" ];then
  3811. USERLOCK=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" '(&(sn=*-*))' cn | sed -n '/cn:/p' | awk '{ print $2 }')
  3812. for USER in $USERLOCK;do
  3813. RADIUS=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USER sn)
  3814. PASS=$( echo $RADIUS | awk '{print $NF}' | cut -d'-' -f1)
  3815. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS"
  3816. echo -e "$DATA" | ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3817. DATA="dn: uid=$USER,ou=PEOPLE,$C_LDAPBASE\nlocked: no"
  3818. echo -e "$DATA" | ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3819. done
  3820. fi
  3821.  
  3822. if [ "$1" == "ControlLimits" ];then
  3823. USER="$2"
  3824. QUERY=$(/usr/local/bin/ldapsearch -xLLL -b "ou=Radius,$C_LDAPBASE" cn=$USER sn radiusUserCategory)
  3825. CLASS=$(echo "$QUERY" | grep -e '^radiusUserCategory: ' | awk '{print $2}')
  3826. PASS=$(echo "$QUERY" | grep -e '^sn: ' | awk '{print $2}')
  3827. if [ "$CLASS" != "DEFAULT" ];then
  3828. LIMIT_HOURS_DAY=$(cat $C_CLASSES_DIR/$CLASS/HoursDay)
  3829. LIMIT_HOURS_MONTH=$(cat $C_CLASSES_DIR/$CLASS/HoursMonth)
  3830. LIMIT_MB_DAY=$(cat $C_CLASSES_DIR/$CLASS/MBDay)
  3831. LIMIT_MB_MONTH=$(cat $C_CLASSES_DIR/$CLASS/MBMonth)
  3832. LIMIT_DAYS=$(cat $C_CLASSES_DIR/$CLASS/Days)
  3833. LIMIT_HOUR_START="$(cat $C_CLASSES_DIR/$CLASS/Range1 | cut -d':' -f1)$(cat $C_CLASSES_DIR/$CLASS/Range1 | cut -d':' -f2 | cut -d'-' -f1)"
  3834. LIMIT_HOUR_START="$(echo "$LIMIT_HOUR_START" | $C_ZT_BIN_DIR/bc)"
  3835. LIMIT_HOUR_STOP="$(cat $C_CLASSES_DIR/$CLASS/Range1 | cut -d'-' -f2 | cut -d':' -f1)$(cat $C_CLASSES_DIR/$CLASS/Range1 | cut -d':' -f3)"
  3836. LIMIT_HOUR_STOP="$(echo "$LIMIT_HOUR_STOP" | $C_ZT_BIN_DIR/bc)"
  3837. LIMIT_HOUR_START_SEC="$(cat $C_CLASSES_DIR/$CLASS/Range2 | cut -d':' -f1)$(cat $C_CLASSES_DIR/$CLASS/Range2 | cut -d':' -f2 | cut -d'-' -f1)"
  3838. LIMIT_HOUR_START_SEC="$(echo "$LIMIT_HOUR_START_SEC" | $C_ZT_BIN_DIR/bc)"
  3839. LIMIT_HOUR_STOP_SEC="$(cat $C_CLASSES_DIR/$CLASS/Range2 | cut -d'-' -f2 | cut -d':' -f1)$(cat $C_CLASSES_DIR/$CLASS/Range2 | cut -d':' -f3)"
  3840. LIMIT_HOUR_STOP_SEC="$(echo "$LIMIT_HOUR_STOP_SEC" | $C_ZT_BIN_DIR/bc)"
  3841. NTODAY="$(date +%w)"
  3842. HOURNOW="$(echo "$(date +%H%M)" | $C_ZT_BIN_DIR/bc)"
  3843. if [ "$CLASS" == "MUDC" ];then
  3844. PASS="$(echo "$PASS" | cut -d'-' -f1)"
  3845. PASS="$PASS-$RANDOM"
  3846. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS"
  3847. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3848. exit
  3849. fi
  3850. if [ -n "$LIMIT_DAYS" ];then
  3851. NTODAY="$(date +%w)"
  3852. [ -z "$(echo "$LIMIT_DAYS" | grep "$NTODAY")" ] && OUTRANGE="yes"
  3853. fi
  3854. if [[ -z "$OUTRANGE" && -n "$LIMIT_HOUR_START" && -n "$LIMIT_HOUR_STOP" ]];then
  3855. if [ -n "$LIMIT_HOUR_START_SEC" ];then
  3856. [[ "$HOURNOW" -lt "$LIMIT_HOUR_START" || "$HOURNOW" -gt "$LIMIT_HOUR_STOP" ]] && [[ "$HOURNOW" -lt "$LIMIT_HOUR_START_SEC" || "$HOURNOW" -gt "$LIMIT_HOUR_STOP_SEC" ]] && OUTRANGE="yes"
  3857. else
  3858. [[ "$HOURNOW" -lt "$LIMIT_HOUR_START" || "$HOURNOW" -gt "$LIMIT_HOUR_STOP" ]] && OUTRANGE="yes"
  3859. fi
  3860. fi
  3861. if [[ -n "$OUTRANGE" && -z "$(echo "$PASS" | grep '-')" ]];then
  3862. PASS="$PASS-$RANDOM"
  3863. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS"
  3864. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3865. fi
  3866. if [[ -z "$OUTRANGE" && -n "$(echo "$PASS" | grep '-')" ]];then
  3867. PASS="$(echo "$PASS" | cut -d'-' -f1)"
  3868. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS"
  3869. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3870. fi
  3871. else
  3872. if [ -n "$(echo "$PASS" | grep '-')" ];then
  3873. PASS="$(echo "$PASS" | cut -d'-' -f1)"
  3874. DATA="dn: cn=$USER,ou=Radius,$C_LDAPBASE\nsn: $PASS"
  3875. echo -e "$DATA" | /usr/local/bin/ldapmodify -c -x -D "$C_LDAPMANAGER,$C_LDAPBASE" -w $C_LDAPROOT > /dev/null
  3876. fi
  3877. fi
  3878. fi
  3879.  
  3880. if [ "$1" == "CreateKeyScp" ];then
  3881. if [ ! -f /root/.ssh/id_rsa.pub ];then
  3882. cd /root
  3883. ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa 2>/dev/null >/dev/null
  3884.  
  3885. #cat /root/.ssh/id_rsa.pub | ssh $C_USER_SCP_REMOTE@$C_IP_SCP_REMOTE "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  3886. fi
  3887. fi
  3888.  
  3889. if [ "$1" == "RemoveKeyScp" ];then
  3890. if [ -f /root/.ssh/id_rsa ];then
  3891. rm -rf /root/.ssh/id_rsa 2>/dev/null
  3892. rm -rf /root/.ssh/id_rsa.pub 2>/dev/null
  3893. rm -rf /root/.ssh/known_hosts 2>/dev/null
  3894. fi
  3895. fi
  3896.  
  3897. if [ "$1" == "ViewKeySCP" ];then
  3898. echo "$(cat /root/.ssh/id_rsa.pub)"
  3899.  
  3900. fi
  3901.  
  3902. if [ "$1" == "Checkidrsa" ];then
  3903. if [ -f /root/.ssh/id_rsa.pub ];then
  3904. echo "yes"
  3905. fi
  3906. fi
  3907.  
  3908. if [ "$1" == "StatusSSC" ];then
  3909. echo "control connected" > /tmp/control_scp
  3910. scp /tmp/control_scp $C_USER_SCP_REMOTE@$C_IP_SCP_REMOTE:$C_DIR_SCP_REMOTE || CONTROL="no"
  3911. if [ -z "$CONTROL" ];then
  3912. echo "yes"
  3913. else
  3914. echo ""
  3915. fi
  3916. fi
  3917.  
  3918. if [ "$1" == "RemoteBackup" ];then
  3919. NAS=$(echo "$C_HOTSPOT_NAME" | sed '/ /s//_/g')
  3920. CBKR=`ssh $C_USER_SCP_REMOTE@$C_IP_SCP_REMOTE "ls -lht ./$C_DIR_SCP_REMOTE $NAS-SCP*" || echo "no"`
  3921. if [ "$CBKR" != "no" ];then
  3922. echo "$CBKR" | awk '{n=split ($0, a, " ");print a[5]" "a[9]'} | sed 's/ /+/g' | sed '/^+$/d'
  3923. else
  3924. echo "no"
  3925. fi
  3926. fi
  3927.  
  3928. if [ "$1" == "DeleteBackupScp" ];then
  3929. BACKUP="$2"
  3930. ssh $C_USER_SCP_REMOTE@$C_IP_SCP_REMOTE "rm -f ./$C_DIR_SCP_REMOTE/$BACKUP" 2>/dev/null
  3931. fi
  3932.  
  3933. if [ "$1" == "DownloadBackupScp" ];then
  3934. BACKUP="$2"
  3935. if [ -z "$3" ];then
  3936. rm -rf $C_ZT_DIR/tmp/restorebk 2>/dev/null
  3937. mkdir $C_ZT_DIR/tmp/restorebk
  3938. chmod a+w $C_ZT_DIR/tmp/restorebk
  3939. scp $C_USER_SCP_REMOTE@$C_IP_SCP_REMOTE:$C_DIR_SCP_REMOTE/$BACKUP $C_ZT_DIR/tmp/restorebk
  3940. else
  3941. mkdir $C_HTDOCS_DIR/$4
  3942. scp $C_USER_SCP_REMOTE@$C_IP_SCP_REMOTE:$C_DIR_SCP_REMOTE/$BACKUP $C_HTDOCS_DIR/$4
  3943. $C_ZT_SCRIPTS_DIR/RemoveTgz.sh "$C_HTDOCS_DIR/$4" &
  3944. fi
  3945. fi
  3946.  
  3947. if [ "$1" == "SaveClientctrl" ];then
  3948. rm -f /root/kerbynet.cgi/template/cp_clientctrl
  3949. rm -f /root/kerbynet.cgi/template/cp_clientctrl_renew
  3950. if [ -n "$C_ZT_POPUP" ];then
  3951. ln -s -f $C_HTDOCS_TEMPLATE_DIR/cp_ztclientctrl /root/kerbynet.cgi/template/cp_clientctrl
  3952. ln -s -f $C_HTDOCS_TEMPLATE_DIR/cp_ztclientctrl_renew /root/kerbynet.cgi/template/cp_clientctrl_renew
  3953. else
  3954. ln -s -f $C_HTDOCS_TEMPLATE_DIR/cp_clientctrl /root/kerbynet.cgi/template/cp_clientctrl
  3955. ln -s -f $C_HTDOCS_TEMPLATE_DIR/cp_clientctrl_renew /root/kerbynet.cgi/template/cp_clientctrl_renew
  3956. fi
  3957. fi
  3958.  
  3959. if [ "$1" == "RuleCB" ];then
  3960. INTERFACEWAN="$(route -n | grep '^0.0.0.0' | awk '{print $NF}')"
  3961. INTERFACESCP="$(cat $C_SYSTEM/cp/Interface | sed 's/\./_/g')"
  3962. if [ -n "$3" ];then
  3963. for INTCP in $INTERFACESCP;do
  3964. iptables -D FORWARD -i $INTCP -o $INTERFACEWAN -m connlimit --connlimit-above $2 --connlimit-mask 32 --connlimit-saddr -j DROP
  3965. done
  3966. exit
  3967. else
  3968. for INTCP in $INTERFACESCP;do
  3969. iptables -I FORWARD -i $INTCP -o $INTERFACEWAN -m connlimit --connlimit-above $2 --connlimit-mask 32 --connlimit-saddr -j DROP
  3970. done
  3971. fi
  3972. fi
  3973.  
  3974. if [ "$1" == "ZtPopup" ];then
  3975. rm -f /root/kerbynet.cgi/template/cp_clientctrl
  3976. rm -f /root/kerbynet.cgi/template/cp_clientctrl_renew
  3977. if [ -n "$2" ];then
  3978. ln -s -f $C_HTDOCS_TEMPLATE_DIR/cp_ztclientctrl /root/kerbynet.cgi/template/cp_clientctrl
  3979. ln -s -f $C_HTDOCS_TEMPLATE_DIR/cp_ztclientctrl_renew /root/kerbynet.cgi/template/cp_clientctrl_renew
  3980. else
  3981. ln -s -f $C_HTDOCS_TEMPLATE_DIR/cp_clientctrl /root/kerbynet.cgi/template/cp_clientctrl
  3982. ln -s -f $C_HTDOCS_TEMPLATE_DIR/cp_clientctrl_renew /root/kerbynet.cgi/template/cp_clientctrl_renew
  3983. fi
  3984. fi
  3985.  
  3986.  
  3987. if [ "$1" == "ConfigTemplate" ];then
  3988. TEMPLATE="$2"
  3989. rm -rf $C_HTDOCS_TEMPLATE_DIR
  3990. ln -s $C_HTDOCS_ZT_DIR/templates/$TEMPLATE $C_HTDOCS_TEMPLATE_DIR
  3991. rm -f $C_HTDOCS_ZT_DIR/images/template
  3992. ln -s $C_HTDOCS_ZT_DIR/templates/$TEMPLATE/images $C_HTDOCS_ZT_DIR/images/template
  3993. rm -f $C_HTDOCS_DIR/images/template
  3994. ln -s $C_HTDOCS_ZT_DIR/templates/$TEMPLATE/images $C_HTDOCS_DIR/images/template
  3995. rm $C_HTDOCS_ZT_DIR/cgi-bin/template
  3996. ln -s $C_HTDOCS_ZT_DIR/templates/$TEMPLATE/cgi-bin $C_HTDOCS_ZT_DIR/cgi-bin/template
  3997. rm -f $C_HTDOCS_ZT_DIR/css/template
  3998. ln -s $C_HTDOCS_ZT_DIR/templates/$TEMPLATE/css $C_HTDOCS_ZT_DIR/css/template
  3999. fi
  4000.  
  4001. if [ "$1" == "CreateCpSsl" ];then
  4002. cat $C_HTDOCS_CONF_DIR/listenPort > $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl
  4003. for ICP in $(cat $C_CP_DIR/Interface);do
  4004. cat $C_HTDOCS_CONF_DIR/virtualPort > $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4005. IPCP="$(cat $C_SYSTEM/net/interfaces/$ICP/IP/00/IP)"
  4006. URLR="$(cat $C_CP_DIR/Auth/URLrid_$ICP 2>/dev/null)"
  4007. sed -i "s/IPCP/$IPCP/g" $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4008. if [ -n "$URLR" ];then
  4009. sed -i "s/%{SERVER_ADDR}/$URLR/g" $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4010. fi
  4011. cat $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp >> $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl
  4012. done
  4013. cat $C_HTDOCS_CONF_DIR/listenPortSSL >> $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl
  4014. for ICP in $(cat $C_CP_DIR/Interface);do
  4015. cat $C_HTDOCS_CONF_DIR/virtualPortSSL > $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4016. IPCP="$(cat $C_SYSTEM/net/interfaces/$ICP/IP/00/IP)"
  4017. URLR="$(cat $C_CP_DIR/Auth/URLrid_$ICP 2>/dev/null)"
  4018. sed -i "s/IPCP/$IPCP/g" $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4019. if [ -n "$URLR" ];then
  4020. sed -i "s/%{SERVER_ADDR}/$URLR/g" $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4021. fi
  4022. cat $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp >> $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl
  4023. done
  4024. cat $C_HTDOCS_CONF_DIR/listenGWPort >> $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl
  4025. for ICP in $(cat $C_CP_DIR/Interface);do
  4026. cat $C_HTDOCS_CONF_DIR/virtualGWPort > $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4027. IPCP="$(cat $C_SYSTEM/net/interfaces/$ICP/IP/00/IP)"
  4028. URLR="$(cat $C_CP_DIR/Auth/URLrid_$ICP 2>/dev/null)"
  4029. sed -i "s/IPCP/$IPCP/g" $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4030. if [ -n "$URLR" ];then
  4031. sed -i "s/%{SERVER_ADDR}/$URLR/g" $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4032. fi
  4033. cat $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp >> $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl
  4034. done
  4035. rm -rf $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl-temp
  4036. ln -sf $C_HTDOCS_CONF_DIR/cp_as_URL-httpd.ssl /root/kerbynet.cgi/template/cp_as_URL-httpd.ssl
  4037. fi
  4038.  
  4039. if [ "$1" == "ConfLibAsterisk" ];then
  4040. echo "/opt/libxml2/lib" >> /etc/ld.so.conf
  4041. echo "/opt/jansson/lib" >> /etc/ld.so.conf
  4042. echo "/opt/sqlite/lib" >> /etc/ld.so.conf
  4043. ldconfig >/dev/null 2>/dev/null
  4044. fi
  4045.  
  4046. if [ "$1" == "StatusPeer" ];then
  4047. cd /opt/libxml2/lib/
  4048. STATUS="$(/opt/asterisk/sbin/asterisk -r -x "sip show peer $2" | grep 'Status' | awk '{print $3}')"
  4049. if [ "$STATUS" == "OK" ];then
  4050. echo "<img src=\"/images/abilita.png\"></td>"
  4051. else
  4052. echo "<img src=\"/images/disabilita.png\"></td>"
  4053. fi
  4054. fi
  4055.  
  4056. if [ "$1" == "AsteriskStop" ];then
  4057. /opt/asterisk/sbin/asterisk -r -x "core stop now"
  4058. fi
  4059.  
  4060. if [ "$1" == "AsteriskStart" ];then
  4061. /opt/asterisk/sbin/asterisk
  4062. sleep 5
  4063. fi
  4064.  
  4065. if [ "$1" == "AsteriskRestart" ];then
  4066. /opt/asterisk/sbin/asterisk -r -x "core restart now"
  4067. sleep 5
  4068. fi
  4069.  
  4070. if [ "$1" == "KillProg" ]; then
  4071. PROCESSNAME="$2"
  4072. RETRY="$3"
  4073. [ -z "$PROCESSNAME" ] && exit 1
  4074. [ -z "$RETRY" ] && RETRY=10
  4075. I=0
  4076. while [ $I -lt $RETRY -a -n "`pidof $PROCESSNAME`" ] ; do
  4077. killall $PROCESSNAME 2>/dev/null
  4078. sleep 0.5
  4079. I=$((I+1))
  4080. done
  4081. I=0
  4082. while [ $I -lt $RETRY -a -n "`pidof $PROCESSNAME`" ] ; do
  4083. killall -9 $PROCESSNAME 2>/dev/null
  4084. sleep 0.5
  4085. I=$((I+1))
  4086. done
  4087. if [ -z "`pidof $PROCESSNAME`" ] ; then
  4088. exit 0
  4089. else
  4090. exit 2
  4091. fi
  4092. fi
  4093.  
  4094.  
  4095. if [ "$1" == "mudc" ];then
  4096. /DB/apache2/cgi-bin/zerotruth/mudc/scripts/mudc.sh "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
  4097. fi
  4098.  
  4099. if [ "$1" == "installMUDC" ];then
  4100. cd /DB/apache2/cgi-bin/zerotruth/
  4101. wget http://www.zerotruth.net/controldl.php?file=mudc-1.0.tar.gz
  4102. if [ -f ./mudc-1.0.tar.gz ];then
  4103. tar -zxvf mudc-1.0.tar.gz >/dev/null
  4104. rm -f mudc-1.0.tar.gz
  4105. ln -f -s $C_ZT_DIR/mudc/images /DB/apache2/htdocs/images/mudc
  4106. ln -f -s $C_ZT_DIR/mudc/conf/keys.conf /DB/apache2/cgi-bin/zerotruth/conf/keys.conf
  4107. ln -f -s $C_ZT_DIR/mudc/conf/dev.conf /DB/apache2/cgi-bin/zerotruth/conf/dev.conf
  4108. ln -f -s $C_ZT_DIR/mudc/motion/video1 /DB/apache2/htdocs/video1
  4109. ln -f -s /$C_ZT_DIR/mudc/motion/video2 /DB/apache2/htdocs/video2
  4110. ln -f -s $C_ZT_DIR/mudc/motion/snapshot /DB/apache2/htdocs/images/snapshot
  4111. ln -f -s $C_ZT_DIR/mudc/snapshot.sh /DB/apache2/htdocs/zerotruth/cgi-bin/snapshot.sh
  4112. ln -f -s /DB/apache2/htdocs/images/action_x.png /DB/apache2/htdocs/zerotruth/template/images/action_x.png
  4113. if [ -z "$(cat $C_ZT_CONF_DIR/zt.config | grep '^C_DIFFGMT' )" ];then
  4114. DATEUTC="$(date -u | awk '{print $4}' | cut -d':' -f1)"
  4115. DATECET="$(date | awk '{print $4}' | cut -d':' -f1)"
  4116. DIFFSEC="$(echo $(($DATECET-$DATEUTC))*3600 | $C_ZT_DIR/bin/bc)"
  4117. echo "" >> $C_ZT_CONF_DIR/zt.config
  4118. echo "# DIFFSEC" >> $C_ZT_CONF_DIR/zt.config
  4119. echo "C_DIFFGMT=\"$DIFFSEC\"" >> $C_ZT_CONF_DIR/zt.config
  4120. fi
  4121. $C_ZT_BIN_DIR/zt "SalvaConfig" "C_REBOOT" "on"
  4122. fi
  4123. fi
  4124.  
  4125. if [ "$1" == "deleteMUDC" ];then
  4126. cd /DB/apache2/cgi-bin/zerotruth/
  4127. if [ -d /DB/apache2/cgi-bin/zerotruth/mudc ];then
  4128. rm -f -r /DB/apache2/cgi-bin/zerotruth/mudc
  4129. fi
  4130. rm -f /DB/apache2/htdocs/images/mudc
  4131. rm -f $C_ZT_DIR/conf/keys.conf
  4132. rm -f $C_ZT_DIRh/conf/dev.conf
  4133. rm -f /DB/apache2/htdocs/video1
  4134. rm -f /DB/apache2/htdocs/video2
  4135. rm -f /DB/apache2/htdocs/images/snapshot
  4136. rm -f $C_ZT_DIR/cgi-bin/snapshot.sh
  4137. rm -f /DB/apache2/htdocs/zerotruth/template/images/action_x.png
  4138. rm -f -r $C_CRON_SCRIPTS_DIR/MUDCcontrol-Cron
  4139. $C_ZT_BIN_DIR/zt "KillProg" "cron"
  4140. rm -f /var/run/cron.pid
  4141. /etc/init.d/crond start > /dev/null
  4142.  
  4143. fi
  4144.  
  4145.  
  4146. if [ "$1" == "KillF2B" ];then
  4147. PIDF2B="$(ps ax | grep fail2ban | grep -v grep | awk '{print $1}')"
  4148. I=0
  4149. while [ $I -lt 10 -a -n "$(ps ax | grep fail2ban)" ] ; do
  4150. killall fail2ban-server 2>/dev/null
  4151. sleep 0.5
  4152. I=$((I+1))
  4153. done
  4154. rm -rf /var/run/fail2ban.pid 2>/dev/null
  4155. rm -rf /var/run/fail2ban.sock 2>/dev/null
  4156. fi
  4157.  
  4158. if [ "$1" == "ControlF2B" ];then
  4159. [ -n "$(ps -A | grep fail2ban)" ] && echo "YES"
  4160. fi
  4161.  
  4162. if [ "$1" == "StatusF2B" ];then
  4163. cd $C_ZT_DIR/bin/fail2ban
  4164. echo "$(PYTHONPATH=. bin/fail2ban-client status 2>/dev/null | grep 'Jail list')"
  4165. fi
  4166. if [ "$1" == "StatusF2BP" ];then
  4167. cd $C_ZT_DIR/bin/fail2ban
  4168. STATUS="$(PYTHONPATH=. bin/fail2ban-client status $2 2>/dev/null)"
  4169. CF="$(echo "$STATUS" | grep 'Currently failed' | awk '{print $NF}')"
  4170. TF="$(echo "$STATUS" | grep 'Total failed' | awk '{print $NF}')"
  4171. CB="$(echo "$STATUS" | grep 'Currently banned' | awk '{print $NF}')"
  4172. TB="$(echo "$STATUS" | grep 'Total banned' | awk '{print $NF}')"
  4173. echo "$CF-$TF-$CB-$TB"
  4174. fi
  4175.  
  4176. if [ "$1" == "ActiveF2B" ];then
  4177. $C_ZT_BIN_DIR/zt "KillF2B" 2>/dev/null
  4178. if [ -n "$2" ];then
  4179. HOST=$(echo $HOSTNAME | cut -d'.' -f1)
  4180. for LOG in "sshd" "ZT.LoginError";do
  4181. [ ! -f /Database/LOG/$(date +%Y)/$(date +%b)/$(date +%d)/$HOST/$LOG ] && echo "" > /Database/LOG/$(date +%Y)/$(date +%b)/$(date +%d)/$HOST/$LOG
  4182. ln -sf /Database/LOG/$(date +%Y)/$(date +%b)/$(date +%d)/$HOST/$LOG $C_ZT_DIR/log/$LOG
  4183. done
  4184. cd $C_ZT_DIR/bin/fail2ban
  4185. sleep 1
  4186. PYTHONPATH=. bin/fail2ban-client start >/dev/null 2>/dev/null
  4187. fi
  4188. fi
  4189.  
  4190. if [ "$1" == "ConfigF2B" ];then
  4191. NRME="$( nl $C_ZT_DIR/bin/fail2ban/config/jail.conf | grep '^maxretry' | awk '{print $1}' | sed -n '1p')"
  4192. sed -i "${NRME}s/^maxretry.*/maxretry = $(echo $2 | cut -d'-' -f1)/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4193. NRBT="$( nl $C_ZT_DIR/bin/fail2ban/config/jail.conf | grep '^bantime' | awk '{print $1}' | sed -n '1p')"
  4194. sed -i "${NRBT}s/^bantime.*/bantime = $(echo $2 | cut -d'-' -f2)/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4195. NRFT="$( nl $C_ZT_DIR/bin/fail2ban/config/jail.conf | grep '^f'ndtime | awk '{print $1}' | sed -n '1p')"
  4196. sed -i "${NRFT}s/^findtime.*/findtime = $(echo $2 | cut -d'-' -f3)/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4197. NRSSHD="$( nl $C_ZT_DIR/bin/fail2ban/config/jail.conf | grep '\[sshd\]' | awk '{print $1}')"
  4198. NRSSHD=$(($NRSSHD+1))
  4199. NRZTLOGIN="$( nl $C_ZT_DIR/bin/fail2ban/config/jail.conf | grep '\[Zerotruth-login\]' | awk '{print $1}')"
  4200. NRZTLOGIN=$(($NRZTLOGIN+1))
  4201. NRASTERISK="$( nl $C_ZT_DIR/bin/fail2ban/config/jail.conf | grep '\[asterisk\]' | awk '{print $1}')"
  4202. NRASTERISK=$(($NRASTERISK+1))
  4203. if [ -n "$(echo $2 | cut -d'-' -f4)" ];then
  4204. sed -i "${NRSSHD}s/^enabled.*/enabled = true/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4205. else
  4206. sed -i "${NRSSHD}s/^enabled.*/enabled = false/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4207. fi
  4208. if [ -n "$(echo $2 | cut -d'-' -f5)" ];then
  4209. sed -i "${NRASTERISK}s/^enabled.*/enabled = true/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4210. else
  4211. sed -i "${NRASTERISK}s/^enabled.*/enabled = false/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4212. fi
  4213. if [ -n "$(echo $2 | cut -d'-' -f6)" ];then
  4214. sed -i "${NRZTLOGIN}s/^enabled.*/enabled = true/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4215. else
  4216. sed -i "${NRZTLOGIN}s/^enabled.*/enabled = false/g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4217. fi
  4218. $C_ZT_BIN_DIR/zt "ActiveF2B" "ON"
  4219. fi
  4220.  
  4221. if [ "$1" == "DEL_IPF2B" ];then
  4222. $C_ZT_BIN_DIR/zt "KillF2B" 2>/dev/null
  4223. IPF="$(echo $2 | sed 's|/|\\/|g')"
  4224. FREEIPF2B="$(cat $C_ZT_DIR/bin/fail2ban/config/jail.conf | grep '^ignoreip' | cut -d'=' -f2 | sed 's/ //g' )"
  4225. FREEIPF2B="$(echo "$FREEIPF2B" | sed "s|$IPF||g" | sed 's/,,/,/g' | sed "s/,$//g")"
  4226. sed -i "s|^ignoreip.*|ignoreip = $FREEIPF2B|g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4227. $C_ZT_BIN_DIR/zt "ActiveF2B" "ON" 2>/dev/null
  4228. fi
  4229.  
  4230. if [ "$1" == "ADD_IPF2B" ];then
  4231. $C_ZT_BIN_DIR/zt "KillF2B" 2>/dev/null
  4232. IPF="$(echo $2 | sed 's|%2F|/|g')"
  4233. FREEIPF2B="$(cat $C_ZT_DIR/bin/fail2ban/config/jail.conf | grep '^ignoreip' | cut -d'=' -f2 | sed 's/ //g' )"
  4234. FREEIPF2B="$FREEIPF2B,$IPF"
  4235. sed -i "s|^ignoreip.*|ignoreip = $FREEIPF2B|g" $C_ZT_DIR/bin/fail2ban/config/jail.conf
  4236. $C_ZT_BIN_DIR/zt "ActiveF2B" "ON" 2>/dev/null
  4237. fi
  4238.  
  4239. if [ "$1" == "SecNow" ];then
  4240. DATEUTC="$(date -u | awk '{print $4}' | cut -d':' -f1)"
  4241. DATECET="$(date | awk '{print $4}' | cut -d':' -f1)"
  4242. DIFFSEC="$(echo $(($DATECET-$DATEUTC))*3600 | $C_ZT_DIR/bin/bc)"
  4243. echo "$(($(date +%s)+$DIFFSEC))"
  4244. fi
  4245.  
  4246. if [ "$1" == "SecDiff" ];then
  4247. DATEUTC="$(date -u | awk '{print $4}' | cut -d':' -f1)"
  4248. DATECET="$(date | awk '{print $4}' | cut -d':' -f1)"
  4249. DIFFSEC="$(echo $(($DATECET-$DATEUTC))*3600 | $C_ZT_DIR/bin/bc)"
  4250. echo "$(($2+DIFFSEC))"
  4251. fi
Add Comment
Please, Sign In to add comment