servers.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. namespace MGModule\DNSManager2\controllers\addon\admin;
  3. use \MGModule\DNSManager2 as main;
  4. use \MGModule\DNSManager2\mgLibs\custom;
  5. use \MGModule\DNSManager2\mgLibs\custom\AjaxResponse;
  6. use \MGModule\DNSManager2\mgLibs\custom\dns\exceptions\DNSException;
  7. use \MGModule\DNSManager2\models\custom\package\server as pserver;
  8. use \MGModule\DNSManager2\models\custom\server;
  9. use \MGModule\DNSManager2\models\custom\zone;
  10. //use MGModule\DNSManager2\models\custom\package;
  11. class servers extends main\mgLibs\process\abstractController {
  12. private $settings_array = array('allow_rdns', 'allow_multiple_ptr', 'enable_cache');
  13. private $form = array(
  14. 'edit' => false,
  15. 'name' => '',
  16. 'module' => '',
  17. );
  18. public function indexJSON($input, $vars = array()) {
  19. return AjaxResponse::I()->refreshPage($this->indexHTML($input, $vars))->toArray();
  20. }
  21. public function indexHTML($input, $vars = array()) {
  22. $vars['available_submodules'] = custom\dns\Core::getAvailableSubmodules();
  23. $path = main\addon::getMainDIR() . DS . 'mgLibs' . DS . 'custom' . DS . 'cache' . DS . 'storage';
  24. if(!is_writable($path) || !is_readable($path)) {
  25. $vars['error'] = str_replace(':path:', $path, main\mgLibs\lang::T('cache_warning'));
  26. }
  27. return array(
  28. 'tpl' => 'main'
  29. ,'vars' => $vars
  30. );
  31. }
  32. public function refreshServersTableJSON($input, $vars = array()) {
  33. $rep = new server\Repository();
  34. $helper = new custom\RepoTableHelper($rep, $input);
  35. $vars = $helper->getDataTableArray();
  36. foreach($helper->get() as $server)
  37. $vars['data'][] = $this->dataTablesParseRow('server-row', array('server' => $server));
  38. return $vars;
  39. }
  40. public function getModuleConfigurationJSON($input, $vars = array()) {
  41. try {
  42. $vars['server']['module'] = $input['server_module'];
  43. $vars['server']['configuration'] = custom\CoreManager::getConfiguration($input['server_module']);
  44. } catch(DNSException $e) {
  45. AjaxResponse::I()->addError("Module {$input['server_module']} is unsupported");
  46. }
  47. AjaxResponse::I()->html = main\mgLibs\smarty::I()->view('module-configuration', $vars, main\addon::getModuleTemplatesDir().DS.'pages' . DS . 'servers' . DS . 'modal');
  48. return AjaxResponse::I()->toArray();
  49. }
  50. public function testConnectionJSON($input, $vars = array()) {
  51. try {
  52. custom\CoreManager::testConnection($input['server_module_test'], $input['conf']);
  53. AjaxResponse::I()->addInfo("connection_success");
  54. } catch(custom\dns\exceptions\DNSSubmoduleException $e) {
  55. AjaxResponse::I()->addRawError($e->getMessage());
  56. } catch(custom\dns\exceptions\DNSException $e) {
  57. AjaxResponse::I()->addError('module_is_unsupported', array(':module:' => $input['server_module']));
  58. }
  59. return AjaxResponse::I()->toArray();
  60. }
  61. public function addServerJSON($input, $vars = array()) {
  62. $vars['server'] = $this->form;
  63. $vars['available_submodules'] = custom\dns\Core::getAvailableSubmodules();
  64. AjaxResponse::I()->modal('server', $vars);
  65. return AjaxResponse::I()->toArray();
  66. }
  67. public function editServerJSON($input, $vars = array()) {
  68. $server = new server\Server($input['id']);
  69. $form = $this->form;
  70. $form['edit'] = true;
  71. $form['id'] = $server->id;
  72. $form['name'] = $server->name;
  73. $form['module'] = $server->module;
  74. $form['configuration'] = custom\CoreManager::getConfiguration($server->module);
  75. foreach($form['configuration'] as $key => &$arr) {
  76. $arr['value'] = $server->getModuleConfiguration($key);
  77. }
  78. foreach($server->getNameservers() as $nameserver) {
  79. $form['nameserver'][$nameserver->index] = $nameserver->toArray(false);
  80. }
  81. $form['setting'] = array();
  82. foreach($server->getSettings() as $k => $v)
  83. {
  84. $form['setting'][$k] = $v->value;
  85. }
  86. $vars['server'] = $form;
  87. $vars['available_submodules'] = custom\dns\Core::getAvailableSubmodules();
  88. $vars['configuration_html'] = main\mgLibs\smarty::I()->view('module-configuration',
  89. $vars,
  90. main\addon::getModuleTemplatesDir().DS.'pages' . DS . main\addon::I()->page . DS . 'modal');
  91. AjaxResponse::I()->modal('server', $vars);
  92. return AjaxResponse::I()->toArray();
  93. }
  94. public function serverSaveJSON($input, $vars = array()) {
  95. if(empty($input['server_module'])) {
  96. AjaxResponse::I()->addError('server_module_cannot_be_empty');
  97. return AjaxResponse::I()->toArray();
  98. }
  99. $server = new server\Server($input['id']?:false);
  100. $input['id']? '' : $server->status = 0;
  101. $server->module = $input['server_module'];
  102. $server->name = $input['name'];
  103. $server->save();
  104. foreach($input['ns'] as $k => $v) {
  105. $server->setNameserver($k, $v['name'], $v['ip']);
  106. }
  107. $server->setSetting(server\setting\ServerSettingEnum::MODULE_CONFIGURATION, serialize($input['conf']));
  108. foreach($input['setting'] as $k => $v) {
  109. $server->setSetting($k, $v);
  110. }
  111. AjaxResponse::I()->refreshPage($this->indexHTML($input, $vars));
  112. if($input['id']) {
  113. AjaxResponse::I()->addInfo('changes_saved');
  114. } else {
  115. AjaxResponse::I()->addInfo('new_server_added');
  116. }
  117. return AjaxResponse::I()->toArray();
  118. }
  119. public function deleteServerJSON($input, $vars = array()) {
  120. $server = new server\Server($input['id']);
  121. if(pserver\Repository::factory()->byServerID($server->id)->count() > 0) {
  122. return AjaxResponse::I()->addError('this_server_is_already_in_use_by_some_packages')->toArray();
  123. }
  124. if(zone\Repository::factory()->byServerID($server->id)->count() > 0) {
  125. return AjaxResponse::I()->addError('there_are_zones_on_this_server')->toArray();
  126. }
  127. $server->delete();
  128. AjaxResponse::I()->addInfo('server_removed');
  129. return AjaxResponse::I()->toArray();
  130. }
  131. public function turnOnServerJSON($input, $vars = array()) {
  132. server\Server::factory($input['id'])->turnOn();
  133. AjaxResponse::I()->addInfo('server_turned_on');
  134. return AjaxResponse::I()->toArray();
  135. }
  136. public function turnOffServerJSON($input, $vars = array()) {
  137. server\Server::factory($input['id'])->turnOff();
  138. AjaxResponse::I()->addInfo('server_turned_off');
  139. return AjaxResponse::I()->toArray();
  140. }
  141. }