Esempio n. 1
0
 public function test_validate_template()
 {
     $data = array("identifier" => "test_template", "description" => "Test Description", "entries" => array(array("name" => "[ZONE].example.toolongtld", "type" => "A", "content" => "127.0.0.2"), array("name" => "test.[ZONE].example.com", "type" => "MX", "content" => "mx.example.com"), array("name" => "example.com.[ZONE]", "type" => "CNAME", "content" => "example.com")));
     // Entry 1 invalid TLD, Entry 2 missing priority
     // [ZONE] may only be used as record suffix
     $validator = new TemplateValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     $data['entries'][0]['name'] = "example.[ZONE]";
     $data['entries'][1]['name'] = "example.[ZONE]";
     $data['entries'][1]['priority'] = 123;
     // Entry 1 and 2 fixed
     $validator = new TemplateValidator($data);
     $this->assertTrue($validator->validates());
     $this->assertEmpty($validator->getErrors());
     // Entry 3 name too long
     $data['entries'][2]['name'] = str_repeat(str_repeat("a", 60) . ".", 10) . "com";
     $validator = new TemplateValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     $data['entries'] = null;
     // Empty templates not allowed
     $validator = new TemplateValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
 }
Esempio n. 2
0
 public function check_templates($templates)
 {
     if (!is_array($templates)) {
         return "Zone templates are not valid. Must be specified as an (empty) array.";
     }
     $errors = array();
     foreach ($templates as $entry) {
         $template = new TemplateValidator();
         if ($entry instanceof stdClass) {
             if (!isset($entry->identifier)) {
                 $errors[] = "Zone template identifier was not set.";
                 continue;
             }
             $template->identifier = $entry->identifier;
         } else {
             $template->identifier = $entry;
         }
         if (!$template->validates()) {
             $errors[] = $template->getFormattedErrors(true);
         }
     }
     if (!empty($errors)) {
         array_unshift($errors, "Zone templates are not valid. The following errors occurred: ");
         return implode("\n", $errors);
     } else {
         return true;
     }
 }
 /**
  * Once we have a folder with some template files, we make sure that what's
  * inside is fine (no forbidden files, etc)
  *
  * @param templateName
  * @param templateFolder
  * @return 
  */
 function checkTemplateFolder($templateName, $templateFolder)
 {
     if ($templateFolder[strlen($templateFolder) - 1] != '/') {
         $templateFolder .= '/';
     }
     $tv = new TemplateValidator($templateName, $templateFolder);
     if (($errorCode = $tv->validate()) < 0) {
         return $errorCode;
     }
     // check if there isn't any file with a forbidden extension
     if (!$this->checkForbiddenFiles($templateFolder . $templateName)) {
         return TEMPLATE_SANDBOX_ERROR_FORBIDDEN_EXTENSIONS;
     }
     return true;
 }
 /**
  * Validates the properties of a template.
  *
  * To validator Template records, use the RecordResource.
  *
  * ### Request: ###
  *
  * ~~~
  * {
  *     "identifier": <string>,
  *     "description": <string>
  * }
  * ~~~
  *
  * ### Response: ###
  *
  * ~~~
  * true
  * ~~~
  *
  * ### Errors: ###
  *
  * * 508 - Invalid request, missing required parameters or input validation failed.
  *
  * @access public
  * @param mixed $request Request parameters
  * @return Response True if record is valid, error message with parse errors otherwise.
  */
 public function validate($request)
 {
     $response = new FormattedResponse($request);
     $data = $request->parseData();
     if (empty($data) || !isset($data->identifier) || !isset($data->description)) {
         $response->code = Response::BADREQUEST;
         $response->error = "Request body was malformed. Ensure that all mandatory properties have been set.";
         $response->error_detail = "BODY_MALFORMED";
         return $response;
     }
     $validator = new TemplateValidator($data);
     if ($validator->validates()) {
         $response->code = Response::OK;
         $response->body = true;
         $response->log_message = "Template was successfully validated.";
     } else {
         $response->code = Response::BADREQUEST;
         $response->error = $validator->getFormattedErrors();
         $response->error_detail = $validator->getErrorDetails();
     }
     return $response;
 }