'error', 'message' => 'Check your DNS Manager license'); return ; } //error_reporting( E_ALL ); //ini_set( 'display_errors', 1 ); $data = $_REQUEST; if(empty($data['dnsaction'])) { $apiresults = array('result' => 'error', 'message' => 'DNS Action is required'); return ; } try { $found = false; $method = $data['dnsaction']; $apiNamespace = '\MGModule\DNSManager2\mgLibs\ModuleAPI\\'; $apiReflection = new ReflectionClass($apiNamespace . 'Api'); foreach ($apiReflection->getMethods() as $methodObj) { $apiMethod = $methodObj->getName(); if( strpos( $method, $apiMethod ) !== false ) { try { # "try" construction is inside of "foreach", to prevent error and continue search $objName = preg_replace('/'.$apiMethod.'/', '', $method); $fullClassName = $apiNamespace . $objName; $apiObject = new $fullClassName($data); $apiResult = $apiObject->$apiMethod(); $errors = $apiObject->getErrors(); if(!empty($errors)) { $apiresults = array('result' => 'error', 'message' => $errors[0]); return; } $found = true; } catch (\Exception $ex) { $trace = $ex->getTrace(); if(!strpos($trace[0]['class'], '\loader')) { if( function_exists( 'logModuleCall' )) { \logModuleCall('DNS Manager', 'API('.$method.')', $data, $ex->getTrace()); } $apiresults = array('result' => 'error', 'message' => $ex->getMessage()); return ; } } } } if($found) { $apiresults = array('result' => 'success', 'data' => $apiResult); }else { $apiresults = array('result' => 'error', 'message' => 'DNS API Method is not found'); } return; /* * UNUSED (not removed now, in case of neccesity) */ switch ($action) { case 'getServerList': $out = array(); $servers = Repository2::factory()->get(); foreach($servers as $server) { $out[] = array( 'id' => $server->id, 'name' => $server->name, 'module' => $server->module, 'status' => $server->status, ); } $apiresults = array('result' => 'success', 'servers' => json_encode($out)); break; case 'saveRDNS': $reverse = Repository::factory() ->byServerID($data['params']['serverid']) ->byIP($data['params']['ip']) ->one(); if($reverse == false) { $helper = new ReverseDNS(); $helper->setClientID($data['params']['clientid']?:'0'); $helper->setIP($data['params']['ip']); $helper->setServer($data['params']['serverid']); $helper->setTTL($data['params']['ttl']); $helper->setDomain($data['params']['rdata']); $helper->create(); } else { $helper = new ReverseDNS($reverse); $helper->update(); } $apiresults = array('result' => 'success'); break; case 'removeRDNS': $reverse = Repository::factory() ->byServerID($data['params']['serverid']) ->byIP($data['params']['ip']) ->one(); if($reverse != false) { $helper = new ReverseDNS($reverse); $helper->remove(); $apiresults = array('result' => 'success'); } else { $apiresults = array('result' => 'error', 'message' => 'Reverse not found in database'); } break; default : $apiresults = array('result' => 'error', 'message' => 'Unknown action'); break; } } catch(Whoops\Exception\ErrorException $e) { $apiresults = array('result' => 'error', 'message' => $e->getMessage()); } catch(Exception $e) { $apiresults = array('result' => 'error', 'message' => $e->getMessage()); }