if (!$bUploadError) { // get ZIP folder and MD5 has to store in hidden form fields // these are used if the form is resubmitted (options changed) to prevent the // need to re-upload the ZIP file $oTemplate->Set('zipFolder', $oCssSpriteGen->GetZipFolder()); $oTemplate->Set('zipFolderHash', $oCssSpriteGen->GetZipFolderHash()); } // if no form or upload errors then get parameters for sprite image if (!$bFormError && !$bUploadError) { $oCssSpriteGen->CreateSprite($sFolderMD5); $oTemplate->Set('filename', $oCssSpriteGen->GetSpriteFilename()); $oTemplate->Set('hash', $oCssSpriteGen->GetSpriteHash()); $oTemplate->Set('css', $oCssSpriteGen->GetCss()); $oTemplate->Set('validImages', $oCssSpriteGen->ValidImages()); } else { $oTemplate->Set('validImages', false); } // pass error flags to template $oTemplate->Set('formError', $bFormError); $oTemplate->Set('uploadError', $bUploadError); } // get all errors $aFormErrors = $oCssSpriteGen->GetAllErrors(); // pass data to template $oTemplate->Set('title', $oTranslations->Get('page.title.home')); $oTemplate->Set('maxFileSize', (int) ConfigHelper::Get('/upload/max_file_size')); $oTemplate->Set('imageTypes', TemplateFunctions::ConvertArrayToMulti($oCssSpriteGen->GetImageTypes())); $oTemplate->Set('formPosted', $bFormPosted); $oTemplate->Set('formErrors', $aFormErrors); $oTemplate->Set('useApi', !empty($_GET['use-api'])); $oTemplate->Set('functions', new TemplateFunctions($bFormPosted, $aFormErrors));
define('DATABASE_USER', $database_config['username']); define('DATABASE_PASS', $database_config['password']); define('DATABASE_SERVER', $database_config['host']); // register apps $GLOBALS['APPS'] = $config['apps']; // define production secret key define('SECRET', $config['secret']); session_start(); if (isset($_SESSION['CSRF']) !== true) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < 32; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } $_SESSION['CSRF'] = hash('sha512', time() . '' . $randomString); } define('CSRF', $_SESSION['CSRF']); if ($_SERVER['REQUEST_METHOD'] !== 'GET') { if (!isset($_REQUEST['csrf_token']) || $_REQUEST['csrf_token'] !== $_SESSION['CSRF']) { header('HTTP/1.1 403 Forbidden'); exit; } } // include template require_once 'includes/TemplateFunctions.php'; $tmpl = new TemplateFunctions(); define('TEMPLATE_PATH', $tmpl->get_current_template_path()); define('STATIC_PATH', $tmpl->get_static_path()); define('THEME', $tmpl->get_current_theme()); $tmpl->run();
public function create_zone($response, $data, &$out = null) { ZoneFunctions::get_zone($response, $data->name, $o, false); if (!empty($o)) { $response->code = Response::CONFLICT; $response->error = "Resource already exists"; $response->error_detail = "ZONE_ALREADY_EXISTS"; $out = false; return $response; } unset($o); $records = array(); if (isset($data->templates) && !empty($data->templates)) { foreach ($data->templates as $template) { $response = TemplateFunctions::get_template($response, $template->identifier, $p); if (empty($p)) { continue; } else { foreach ($p['entries'] as $entry) { $e = new stdClass(); $e->name = str_replace(array("[ZONE]"), array($data->name), $entry['name']); $e->content = str_replace(array("[ZONE]"), array($data->name), $entry['content']); $e->type = $entry['type']; $e->ttl = $entry['ttl']; $e->priority = $entry['priority']; $records[] = $e; } } unset($p); } } if (isset($data->records) && !empty($data->records)) { $records = array_merge($records, $data->records); } try { $connection = Database::getConnection(); } catch (PDOException $e) { $response->code = Response::INTERNALSERVERERROR; $response->error = "Could not connect to PowerDNS server."; $response->error_detail = "INTERNAL_SERVER_ERROR"; return $response; } $connection->beginTransaction(); $zone = $connection->prepare(sprintf("INSERT INTO `%s` (name, type, master) VALUES (:name, :type, :master);", PowerDNSConfig::DB_ZONE_TABLE)); $zone->bindValue(":name", $data->name); $zone->bindValue(":type", strtoupper($data->type)); if (isset($data->master) && !empty($data->master)) { $zone->bindValue(":master", $data->master); } else { $zone->bindValue(":master", null, PDO::PARAM_NULL); } if ($zone->execute() === false) { $response->code = Response::INTERNALSERVERERROR; $response->error = "Rolling back transaction, failed to insert zone."; $response->error_detail = "INTERNAL_SERVER_ERROR"; $connection->rollback(); $out = false; return $response; } if (!empty($records)) { $object = new stdClass(); $object->records = $records; $response = ZoneFunctions::create_records($response, $connection->lastInsertId(), $object, $r, true, $connection); if ($r === false) { $connection->rollback(); $out = false; return $response; } } $connection->commit(); $response->code = Response::OK; $response->body = true; $response->log_message = sprintf("Zone %s was created with %d records.", $data->name, count($records)); $out = true; return $response; }
/** * {@inheritDoc} */ public function add_lang(array $lang) { $this->functions->add_language_maps($lang); }
public static function delete_template($response, $identifier, &$out = null) { $response = TemplateFunctions::get_template($response, $identifier, $o); if (empty($o)) { $out = false; return $response; } try { $connection = Database::getConnection(); } catch (PDOException $e) { $response->code = Response::INTERNALSERVERERROR; $response->error = "Could not connect to PowerDNS server."; $response->error_detail = "INTERNAL_SERVER_ERROR"; $out = false; return $response; } $connection->beginTransaction(); $delete = $connection->prepare(sprintf("DELETE FROM `%s` WHERE %s.name = :name;", PowerDNSConfig::DB_TEMPLATE_TABLE, PowerDNSConfig::DB_TEMPLATE_TABLE)); if ($delete->execute(array(":name" => $identifier)) === false) { $response->code = Response::INTERNALSERVERERROR; $response->error = "Rolling back transaction, failed to delete template."; $response->error_detail = "TEMPLATE_DELETE_FAILED"; $connection->rollback(); $out = false; return $response; } $connection->commit(); $response->code = Response::OK; $response->body = true; $response->log_message = sprintf("Template %s was deleted.", $identifier); $out = true; return $response; }
/** * Delete an existing DNS template. * * ### Response: ### * * ~~~ * true * ~~~ * * ### Errors: ### * * * 508 - Invalid request, missing required parameters or input validation failed. * * 500 - Failed to connect to database or query execution error. * * 404 - Could not find template. * * @access public * @param mixed $request Request parameters * @param string $identifier Template identifier * @return Response True if template was deleted, error message otherwise. */ public function delete($request, $identifier = null) { $response = new FormattedResponse($request); $data = $request->parseData(); if (empty($identifier)) { $response->code = Response::BADREQUEST; $response->error = "Identifier and/or entries were missing or invalid. Ensure that the body is in valid format and all required parameters are present."; $response->error_detail = "BODY_MALFORMED"; return $response; } $validator = new TemplateValidator(); $validator->identifier = $identifier; if (!$validator->validates()) { $response->code = Response::BADREQUEST; $response->error = $validator->getFormattedErrors(); $response->error_detail = $validator->getErrorDetails(); return $response; } return TemplateFunctions::delete_template($response, $identifier); }