public function setRevision($script, $version = null) { if ($version == null) { $version = $this->getLatestRevision() + 1; } $variables = array(); $builtin = array_keys(Scalr_Scripting_Manager::getScriptingBuiltinVariables()); foreach ((array) $this->getCustomVariables($script) as $var) { if (!in_array($var, $builtin)) { $variables[$var] = ucwords(str_replace("_", " ", $var)); } } $variables = serialize($variables); $this->db->Execute('INSERT INTO `script_revisions` SET scriptid = ?, revision = ?, script = ?, variables = ?, dtcreated = NOW() ON DUPLICATE KEY UPDATE script = ?, variables = ?, dtcreated = NOW() ', array($this->id, $version, $script, $variables, $script, $variables)); }
public function viewAction() { $this->request->restrictAccess('SCRIPTS'); $vars = Scalr_Scripting_Manager::getScriptingBuiltinVariables(); $environments = $this->user->getEnvironments(); $this->response->page('ui/scripts/view.js', array('variables' => "%" . implode("%, %", array_keys($vars)) . "%", 'timeouts' => $this->getContainer()->config->get('scalr.script.timeout'), 'environments' => $environments, 'scope' => $this->request->getScope()), array('codemirror/codemirror.js'), array('codemirror/codemirror.css')); }
public function save() { $this->variables = []; $variables = Script::fetchVariables($this->content); if (!empty($variables)) { $builtin = array_keys(\Scalr_Scripting_Manager::getScriptingBuiltinVariables()); foreach ($variables as $var) { if (!in_array($var, $builtin)) { $this->variables[$var] = ucwords(str_replace("_", " ", $var)); } } } parent::save(); }
public function save() { $this->variables = []; $matches = []; $text = preg_replace('/(\\\\%)/si', '$$scalr$$', $this->content); preg_match_all("/\\%([^\\%\\s]+)\\%/si", $text, $matches); $builtin = array_keys(\Scalr_Scripting_Manager::getScriptingBuiltinVariables()); foreach ($matches[1] as $var) { if (!in_array($var, $builtin)) { $this->variables[$var] = ucwords(str_replace("_", " ", $var)); } } parent::save(); }
public function ScriptGetDetails($ScriptID, $ShowContent = false, $Revision = false) { $this->restrictAccess(Acl::RESOURCE_ADMINISTRATION_SCRIPTS); /* @var $script Script */ $script = Script::findPk($ScriptID); if (!$script) { throw new Exception(sprintf("Script ID: %s not found in our database (1)", $ScriptID)); } if ($script->accountId && $this->user->getAccountId() != $script->accountId) { throw new Exception(sprintf("Script ID: %s not found in our database (2)", $ScriptID)); } $response = $this->CreateInitialResponse(); $response->ScriptID = $ScriptID; $response->ScriptRevisionSet = new stdClass(); $response->ScriptRevisionSet->Item = array(); $response->RevisionsNum = 0; foreach (array_reverse($script->getVersions()->getArrayCopy()) as $rev) { /* @var $rev ScriptVersion */ $response->RevisionsNum++; if ($response->RevisionsNum >= 10) { continue; } if ($Revision && $rev->version != $Revision) { continue; } $itm = new stdClass(); $itm->{"Revision"} = $rev->version; $itm->{"Date"} = $rev->dtCreated->format('Y-m-d H:i:s'); if ($ShowContent) { $itm->{"Content"} = base64_encode($rev->content); } $itm->{"ConfigVariables"} = new stdClass(); $itm->{"ConfigVariables"}->Item = array(); $text = preg_replace('/(\\\\%)/si', '$$scalr$$', $rev->content); preg_match_all("/\\%([^\\%\\s]+)\\%/si", $text, $matches); $vars = $matches[1]; $data = array(); foreach ($vars as $var) { if (!in_array($var, array_keys(Scalr_Scripting_Manager::getScriptingBuiltinVariables()))) { $ditm = new stdClass(); $ditm->Name = $var; $itm->{"ConfigVariables"}->Item[] = $ditm; } } $response->ScriptRevisionSet->Item[] = $itm; } return $response; }
public function createAction() { $this->request->restrictAccess(Acl::RESOURCE_FARMS_SCRIPTS, Acl::PERM_FARMS_SCRIPTS_MANAGE); $vars = Scalr_Scripting_Manager::getScriptingBuiltinVariables(); $this->response->page('ui/scripts/create.js', array('versions' => array(1), 'latestVersion' => 0, 'variables' => "%" . implode("%, %", array_keys($vars)) . "%"), array('codemirror/codemirror.js'), array('codemirror/codemirror.css')); }
public function createAction() { $this->request->restrictAccess(Acl::RESOURCE_ADMINISTRATION_SCRIPTS, Acl::PERM_ADMINISTRATION_SCRIPTS_MANAGE); $vars = Scalr_Scripting_Manager::getScriptingBuiltinVariables(); $environments = $this->user->getEnvironments(); array_unshift($environments, ['id' => '0', 'name' => 'All environments']); $this->response->page('ui/scripts/create.js', array('versions' => array(1), 'variables' => "%" . implode("%, %", array_keys($vars)) . "%", 'timeouts' => $this->getContainer()->config->get('scalr.script.timeout'), 'environments' => $environments), array('codemirror/codemirror.js', 'ux-boxselect.js'), array('codemirror/codemirror.css')); }
public function ScriptGetDetails($ScriptID, $ShowContent = false, $Revision = false) { $this->restrictAccess(Acl::RESOURCE_FARMS_SCRIPTS); $script_info = $this->DB->GetRow("SELECT * FROM scripts WHERE id=?", array($ScriptID)); if (!$script_info) { throw new Exception(sprintf("Script ID: %s not found in our database (1)", $ScriptID)); } if ($script_info['clientid'] != 0 && $this->user->getAccountId() != $script_info['clientid']) { throw new Exception(sprintf("Script ID: %s not found in our database (2)", $ScriptID)); } $response = $this->CreateInitialResponse(); $response->ScriptID = $ScriptID; $response->ScriptRevisionSet = new stdClass(); $response->ScriptRevisionSet->Item = array(); $revisionFilter = ""; if ($Revision) { $Revision = (int) $Revision; $revisionFilter = " AND revision='{$Revision}'"; } $revisions = $this->DB->Execute("SELECT * FROM script_revisions WHERE scriptid=? {$revisionFilter} ORDER BY id DESC", array($ScriptID)); $response->RevisionsNum = $revisions->RecordCount(); $i = 0; while ($revision = $revisions->FetchRow()) { $itm = new stdClass(); $itm->{"Revision"} = $revision['revision']; $itm->{"Date"} = $revision['dtcreated']; if ($ShowContent) { $itm->{"Content"} = base64_encode($revision['script']); } $itm->{"ConfigVariables"} = new stdClass(); $itm->{"ConfigVariables"}->Item = array(); $text = preg_replace('/(\\\\%)/si', '$$scalr$$', $revision['script']); preg_match_all("/\\%([^\\%\\s]+)\\%/si", $text, $matches); $vars = $matches[1]; $data = array(); foreach ($vars as $var) { if (!in_array($var, array_keys(Scalr_Scripting_Manager::getScriptingBuiltinVariables()))) { $ditm = new stdClass(); $ditm->Name = $var; $itm->{"ConfigVariables"}->Item[] = $ditm; } } $response->ScriptRevisionSet->Item[] = $itm; $i++; if ($i >= 10) { break; } } return $response; }