WEB_DOMAIN.class.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. <?php
  2. /**
  3. * DOMAIN
  4. *
  5. * @author vesta, http://vestacp.com/
  6. * @author Dmitry Malishev <dima.malishev@gmail.com>
  7. * @author Dmitry Naumov-Socolov <naumov.socolov@gmail.com>
  8. * @copyright vesta 2010-2011
  9. */
  10. class WEB_DOMAIN extends AjaxHandler {
  11. function getListExecute($request)
  12. {
  13. $_user = 'vesta';
  14. $reply = array();
  15. $result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array($_user, Config::get('response_type')));
  16. // echo '<pre>';
  17. // print_r($result);
  18. foreach($result['data'] as $web_domain => $data)
  19. {
  20. $reply[$web_domain] = array(
  21. 'IP' => $record['IP'],
  22. 'U_DISK' => $record['U_DISK'],
  23. 'U_BANDWIDTH' => $record['U_BANDWIDTH'],
  24. 'TPL' => $record['TPL'],
  25. 'ALIAS' => $record['ALIAS'],
  26. 'PHP' => $record['PHP'],
  27. 'CGI' => $record['CGI'],
  28. 'ELOG' => $record['ELOG'],
  29. 'STATS' => $record['STATS'],
  30. 'STATS_AUTH' => $record['STATS_AUTH'],
  31. 'SSL' => $record['SSL'],
  32. 'SSL_HOME' => $record['SSL_HOME'],
  33. 'SSL_CERT' => $record['SSL_CERT'],
  34. 'NGINX' => $record['NGINX'],
  35. 'NGINX_EXT' => $record['NGINX_EXT'],
  36. 'SUSPEND' => $record['SUSPEND'],
  37. 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
  38. );
  39. }
  40. if(!$result['status'])
  41. $this->errors[] = array($result['error_code'] => $result['error_message']);
  42. return $this->reply($result['status'], $reply);
  43. }
  44. function addExecute($request)
  45. {
  46. $r = new Request();
  47. $_s = $r->getSpell();
  48. $_user = 'vesta';
  49. $params = array(
  50. 'USER' => $_user,
  51. 'DOMAIN' => $_s['DOMAIN'],
  52. 'IP' => $_s['IP']
  53. );
  54. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN, $params);
  55. if(!$result['status'])
  56. $this->errors[] = array($result['error_code'] => $result['error_message']);
  57. // if(0)
  58. if($_s['TPL'])
  59. {
  60. $params = array('USER' => $_user,
  61. 'DOMAIN' => $_s['DOMAIN'],
  62. 'TPL' => $_s['TPL']);
  63. $result = 0;
  64. $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, $params);
  65. if(!$result['status'])
  66. $this->errors['CHANGE_TPL'] = array($result['error_code'] => $result['error_message']);
  67. }
  68. // if(0)
  69. if($_s['ALIAS'])
  70. {
  71. $alias_arr = explode(',', $_s['ALIAS']);
  72. foreach($alias_arr as $alias)
  73. {
  74. $params = array('USER' => $_user,
  75. 'DOMAIN' => $_s['DOMAIN'],
  76. 'ALIAS' => trim($alias));
  77. $result = 0;
  78. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, $params);
  79. if(!$result['status'])
  80. $this->errors['ALIAS'] = array($result['error_code'] => $result['error_message']);
  81. }
  82. }
  83. // if(0)
  84. if($_s['STAT'])
  85. {
  86. $params = array('USER' => $_user,
  87. 'DOMAIN' => $_s['DOMAIN'],
  88. 'STAT' => $_s['STAT']);
  89. $result = 0;
  90. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, $params);
  91. if(!$result['status'])
  92. $this->errors['STATS'] = array($result['error_code'] => $result['error_message']);
  93. }
  94. // if(0)
  95. if($_s['STAT_AUTH'])
  96. {
  97. $params = array('USER' => $_user,
  98. 'DOMAIN' => $_s['DOMAIN'],
  99. 'STAT_USER' => $_s['STAT_USER'],
  100. 'STAT_PASSWORS' => $_s['STAT_PASSWORD']);
  101. $result = 0;
  102. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT_AUTH, $params);
  103. if(!$result['status'])
  104. $this->errors['STAT_AUTH'] = array($result['error_code'] => $result['error_message']);
  105. }
  106. if(0)
  107. if($_s['SSL'])
  108. {
  109. $params = array('USER' => $_user,
  110. 'DOMAIN' => $_s['DOMAIN'],
  111. 'SSL_CERT' => $_s['SSL_CERT']);
  112. if($_s['SSL_HOME'])
  113. $params['SSL_HOME'] = $_s['SSL_HOME'];
  114. if($_s['SSL_TEXT'])
  115. {}
  116. // if($_FILES['SSL_CERT'])
  117. // $ssl_text = file_get_contents($_FILES...);
  118. $result = 0;
  119. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
  120. if(!$result['status'])
  121. $this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
  122. }
  123. // if(0)
  124. if($_s['CREATE_DNS_DOMAIN'])
  125. {
  126. $params = array('USER' => $_user,
  127. 'DNS_DOMAIN' => $_s['DOMAIN'],
  128. 'IP' => $_s['IP']);
  129. require_once V_ROOT_DIR . 'api/DNS.class.php';
  130. $dns = new DNS();
  131. $result = 0;
  132. $result = $dns->addExecute($params);
  133. if(!$result['status'])
  134. $this->errors['DNS_DOMAIN'] = array($result['error_code'] => $result['error_message']);
  135. }
  136. if(0)
  137. if($_s['CREATE_MAIL_DOMAIN'])
  138. {
  139. $params = array('USER' => $_user,
  140. 'MAIL_DOMAIN' => $_s['DOMAIN'],
  141. 'IP' => $_s['IP']);
  142. require_once V_ROOT_DIR . 'api/MAIL.class.php';
  143. $mail = new MAIL();
  144. $result = 0;
  145. $result = $mail->addExecute($params);
  146. if(!$result['status'])
  147. $this->errors['MAIL_DOMAIN'] = array($result['error_code'] => $result['error_message']);
  148. }
  149. return $this->reply($result['status'], $result['data']);
  150. }
  151. function delExecute($request)
  152. {
  153. $r = new Request();
  154. $_s = $r->getSpell();
  155. $_user = 'vesta';
  156. $params = array(
  157. 'USER' => $_user,
  158. 'DOMAIN' => $_s['DOMAIN']
  159. );
  160. $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, $params);
  161. if(!$result['status'])
  162. $this->errors[] = array($result['error_code'] => $result['error_message']);
  163. $params = array(
  164. 'USER' => $_user,
  165. 'DNS_DOMAIN' => $_s['DOMAIN']
  166. );
  167. require_once V_ROOT_DIR . 'api/DNS.class.php';
  168. $dns = new DNS();
  169. $result = $dns->delExecute($params);
  170. if(!$result['status'] && $result['error_code'] != 31) // domain not found
  171. $this->errors['DNS'] = array($result['error_code'] => $result['error_message']);
  172. require_once V_ROOT_DIR . 'api/DNS.class.php';
  173. $params = array(
  174. 'USER' => $_user,
  175. 'MAIL_DOMAIN' => $_s['DOMAIN']
  176. );
  177. /*
  178. require_once V_ROOT_DIR . 'api/MAIL.class.php';
  179. $mail = new MAIL();
  180. $result = $mail->delExecute($params);
  181. if(!$result['status'] && $result['error_code'] != 31) // domain not found
  182. $this->errors['MAIL'] = array($result['error_code'] => $result['error_message']);
  183. */
  184. return $this->reply($result['status'], $result['data']);
  185. }
  186. function changeExecute($request)
  187. {
  188. $r = new Request();
  189. $_s = $r->getSpell();
  190. $_old = $_s['old'];
  191. $_new = $_s['new'];
  192. $_user = 'vesta';
  193. $_DOMAIN = $_new['DOMAIN'];
  194. if($_old['IP'] != $_new['IP'])
  195. {
  196. $result = array();
  197. $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_IP, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'IP' => $_new['IP']));
  198. if(!$result['status'])
  199. {
  200. $this->status = FALSE;
  201. $this->errors['IP_ADDRESS'] = array($result['error_code'] => $result['error_message']);
  202. }
  203. }
  204. if($_old['TPL'] != $_new['TPL'])
  205. {
  206. $result = array();
  207. $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'TPL' => $_new['TPL']));
  208. if(!$result['status'])
  209. {
  210. $this->status = FALSE;
  211. $this->errors['TPL'] = array($result['error_code'] => $result['error_message']);
  212. }
  213. }
  214. if($_old['ALIAS'] != $_new['ALIAS'])
  215. {
  216. $result = array();
  217. $old_arr = explode(',', $_old['ALIAS']);
  218. $new_arr = explode(',', $_new['ALIAS']);
  219. $added = array_diff($new_arr, $old_arr);
  220. $deleted = array_diff($old_arr, $new_arr);
  221. foreach($added as $alias)
  222. {
  223. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'ALIAS' => $alias));
  224. if(!$result['status'])
  225. {
  226. $this->status = FALSE;
  227. $this->errors['ADD_ALIAS'] = array($result['error_code'] => $result['error_message']);
  228. }
  229. }
  230. foreach($deleted as $alias)
  231. {
  232. $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ALIAS, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'ALIAS' => $alias));
  233. if(!$result['status'])
  234. {
  235. $this->status = FALSE;
  236. $this->errors['DEL_ALIAS'] = array($result['error_code'] => $result['error_message']);
  237. }
  238. }
  239. }
  240. if($_old['STAT'] != $_new['STAT'])
  241. {
  242. if($_new['STAT'] == true)
  243. {
  244. $result = array();
  245. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'STAT' => $_new['STAT']));
  246. if(!$result['status'])
  247. {
  248. $this->status = FALSE;
  249. $this->errors['ADD_STAT'] = array($result['error_code'] => $result['error_message']);
  250. }
  251. }
  252. if($_new['STAT'] == false)
  253. {
  254. $result = array();
  255. $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
  256. if(!$result['status'])
  257. {
  258. $this->status = FALSE;
  259. $this->errors['DEL_STAT'] = array($result['error_code'] => $result['error_message']);
  260. }
  261. $result = array();
  262. $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT_AUTH, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'STAT_USER' => $_new['STAT_USER']));
  263. if(!$result['status'])
  264. {
  265. $this->status = FALSE;
  266. $this->errors['DEL_STAT_AUTH'] = array($result['error_code'] => $result['error_message']);
  267. }
  268. }
  269. }
  270. if(0)
  271. // ssl
  272. if($_old['SSL'] != $_new['SSL'])
  273. {
  274. if($_new['SSL'] == true)
  275. {
  276. }
  277. if($_new['SSL'] == false)
  278. {
  279. }
  280. }
  281. else
  282. {
  283. if($_old['SSL_CERT'] != $_new['SSL_CERT'])
  284. {
  285. $result = array();
  286. $_SSL_CERT = $_new['SSL_CERT'];
  287. // or read uploaded tmp file
  288. $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_CERT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'SSL_CERT' => $_SSL_CERT ));
  289. if(!$result['status'])
  290. {
  291. $this->status = FALSE;
  292. $this->errors['SSL_CERT'] = array($result['error_code'] => $result['error_message']);
  293. }
  294. }
  295. if($_old['SSL_HOME'] != $_new['SSL_HOME'])
  296. {
  297. $result = array();
  298. $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSLHOME, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'SSL_HOME' => $_new['SSL_HOME']));
  299. if(!$result['status'])
  300. {
  301. $this->status = FALSE;
  302. $this->errors['SSL_HOME'] = array($result['error_code'] => $result['error_message']);
  303. }
  304. }
  305. }
  306. if($_old['CGI'] != $_new['CGI'])
  307. {
  308. if($_new['CGI'] == true)
  309. {
  310. $result = array();
  311. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
  312. if(!$result['status'])
  313. {
  314. $this->status = FALSE;
  315. $this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']);
  316. }
  317. }
  318. if($_new['CGI'] == false)
  319. {
  320. $result = array();
  321. $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
  322. if(!$result['status'])
  323. {
  324. $this->status = FALSE;
  325. $this->errors['DEL_CGI'] = array($result['error_code'] => $result['error_message']);
  326. }
  327. }
  328. }
  329. if($_old['ELOG'] != $_new['ELOG'])
  330. {
  331. if($_new['ELOG'] == true)
  332. {
  333. $result = array();
  334. $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
  335. if(!$result['status'])
  336. {
  337. $this->status = FALSE;
  338. $this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']);
  339. }
  340. }
  341. if($_new['ELOG'] == false)
  342. {
  343. $result = array();
  344. $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ELOG, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
  345. if(!$result['status'])
  346. {
  347. $this->status = FALSE;
  348. $this->errors['DEL_ELOG'] = array($result['error_code'] => $result['error_message']);
  349. }
  350. }
  351. }
  352. return $this->reply($result['status'], $result['data']);
  353. }
  354. function suspendExecute($request)
  355. {
  356. $r = new Request();
  357. $_s = $r->getSpell();
  358. $_user = 'vesta';
  359. $params = array(
  360. 'USER' => $_user,
  361. 'DOMAIN' => $_s['DOMAIN']
  362. );
  363. $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, $params);
  364. if(!$result['status'])
  365. $this->errors[] = array($result['error_code'] => $result['error_message']);
  366. return $this->reply($result['status'], $result['data']);
  367. }
  368. function unsuspendExecute($request)
  369. {
  370. $r = new Request();
  371. $_s = $r->getSpell();
  372. $_user = 'vesta';
  373. $params = array(
  374. 'USER' => $_user,
  375. 'DOMAIN' => $_s['DOMAIN']
  376. );
  377. $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, $params);
  378. if(!$result['status'])
  379. $this->errors[] = array($result['error_code'] => $result['error_message']);
  380. return $this->reply($result['status'], $result['data']);
  381. }
  382. function suspendAllExecute($request)
  383. {
  384. $r = new Request();
  385. $_s = $r->getSpell();
  386. $_user = 'vesta';
  387. $params = array(
  388. 'USER' => $_user
  389. );
  390. $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAINS, $params);
  391. if(!$result['status'])
  392. $this->errors[] = array($result['error_code'] => $result['error_message']);
  393. return $this->reply($result['status'], $result['data']);
  394. }
  395. function unsuspendAllExecute($request)
  396. {
  397. $r = new Request();
  398. $_s = $r->getSpell();
  399. $_user = 'vesta';
  400. $params = array(
  401. 'USER' => $_user
  402. );
  403. $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAINS, $params);
  404. if(!$result['status'])
  405. $this->errors[] = array($result['error_code'] => $result['error_message']);
  406. return $this->reply($result['status'], $result['data']);
  407. }
  408. }