Server.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace MGModule\DNSManager2\models\custom\server;
  3. use MGModule\DNSManager2 as main;
  4. use MGModule\DNSManager2\mgLibs\MySQL as mysql;
  5. use MGModule\DNSManager2\mgLibs\custom\dns;
  6. use MGModule\DNSManager2\mgLibs\custom\SubmoduleCap;
  7. /**
  8. * Log class
  9. *
  10. * @Table(name=server)
  11. */
  12. class Server extends main\mgLibs\models\orm{
  13. /**
  14. * ID field
  15. *
  16. * @Column(id)
  17. * @var int
  18. */
  19. public $id;
  20. /**
  21. *
  22. * @Column(varchar)
  23. * @var string
  24. */
  25. public $name;
  26. /**
  27. *
  28. * @Column(varchar)
  29. * @var string
  30. */
  31. public $module;
  32. /**
  33. *
  34. * @Column(varchar)
  35. * @var string
  36. */
  37. public $status;
  38. public function getSettings($key = false) {
  39. return $key === false?setting\Repository::factory()->byServerID($this->id)->getWithKeys()
  40. : setting\ServerSetting::byServerAndKey($this->id, $key);
  41. }
  42. public function setSetting($key, $value) {
  43. if(!$setting = $this->getSettings($key)) {
  44. $setting = new setting\ServerSetting();
  45. $setting->serverid = $this->id;
  46. $setting->key = $key;
  47. }
  48. $setting->value = $value;
  49. $setting->save();
  50. return $setting;
  51. }
  52. public function getNameservers($index = false) {
  53. return $index === false? nameserver\Repository::factory()->byServerID($this->id)->get()
  54. : nameserver\Repository::factory()->byServerID($this->id)->byIndex(intval($index))->one();
  55. }
  56. public function setNameserver($index, $address, $ip) {
  57. if((int)$index > 5) return;
  58. if(!$ns = $this->getNameservers($index)) {
  59. $ns = new nameserver\ServerNameserver();
  60. $ns->serverid = $this->id;
  61. $ns->index = $index;
  62. }
  63. $ns->name = $address;
  64. $ns->ip = $ip;
  65. $ns->save();
  66. return $ns;
  67. }
  68. public function getModuleConfiguration($key = false) {
  69. $settings = unserialize($this->getSettings(setting\ServerSettingEnum::MODULE_CONFIGURATION));
  70. foreach($settings as &$v) $v = htmlspecialchars_decode($v, ENT_QUOTES);
  71. if($key === false)
  72. return $settings;
  73. else {
  74. return isset($settings[$key])?$settings[$key]:false;
  75. }
  76. }
  77. public function isEnabled() {
  78. return $this->status == 1;
  79. }
  80. /** @return main\mgLibs\custom\dns\SubmoduleAbstract */
  81. public function getModule() {
  82. $module = new SubmoduleCap(dns\Core::getModule($this->module));
  83. $module->setConfiguration($this->getModuleConfiguration());
  84. $module->setServer($this);
  85. //$module->enableDebug();
  86. return $module;
  87. }
  88. public function delete() {
  89. mysql\query::startTransaction();
  90. nameserver\Repository::factory()->byServerID($this->id)->delete();
  91. setting\Repository::factory()->byServerID($this->id)->delete();
  92. parent::delete();
  93. mysql\query::endTransaction();
  94. }
  95. public function turnOn() {
  96. $this->status = 1;
  97. $this->save();
  98. }
  99. public function turnOff() {
  100. $this->status = 0;
  101. $this->save();
  102. }
  103. }