function getRecordValueDescription($zone, $type, $value) { $typeToLoad = in_array(strtoupper($type), supportedRecordsTypes()) ? strtolower($type) : "custom"; $RecordClass = $typeToLoad . "Record"; require_once "../../../modules/network/network/dnsrecords/" . $typeToLoad . ".php"; $r = new $RecordClass(array("zone" => $zone)); $r->initValuesFromString($value); return $r->valuesToDescription(); }
function createUiContainers() { $recordTypes = supportedRecordsTypes("all"); $typeIndex = array_search(strtoupper($this->values["type"]), $recordTypes); if ($typeIndex === false) { $typeIndex = count($recordTypes) - 1; $customType = $this->values["type"]; } else { $customType = ""; //$typeIndex = 0; } $isCustomType = $typeIndex == count($recordTypes) - 1 ? "checked" : ""; $algorithmsMap = $this->algorithms(); $algorithms = array_values($algorithmsMap); if (isset($algorithmsMap[$this->values["algorithm"]])) { $algorithmIndex = array_search($algorithmsMap[$this->values["algorithm"]], $algorithms); $customAlgorithm = ""; } else { $algorithmIndex = count($algorithms) - 1; $customAlgorithm = $this->values["algorithm"]; } $isCustomAlgorithm = $algorithmIndex == count($algorithms) - 1 ? "checked" : ""; $typeComboBox = new ExtendedSelectItem($this->pn("type")); $typeComboBox->setAdditionalParams("onkeyup=\"this.blur();this.focus();\" onchange=\"var state = (this.selectedIndex == this.length - 1) ? 'inline' : 'none'; changeObjectDisplay('" . $this->pn("typediv") . "',state);\""); $typeComboBox->setElements(array_values($recordTypes)); $typeComboBox->setElementsVal(array_keys($recordTypes)); $algorithmComboBox = new ExtendedSelectItem($this->pn("algorithm")); $algorithmComboBox->setAdditionalParams("onkeyup=\"this.blur();this.focus();\" onchange=\"var state = (this.selectedIndex == this.length - 1) ? 'inline' : 'none'; changeObjectDisplay('" . $this->pn("algorithmdiv") . "',state);\""); $algorithmComboBox->setElements(array_values($algorithms)); $algorithmComboBox->setElementsVal(array_keys($algorithms)); $signatureTextarea = new TextareaTpl($this->pn("signature")); $signatureTextarea->setCols(43); $t1 = new Table(); $t1->add($this->_createNameElement(_T("Domain name")), array("value" => $this->hostname, "required" => True)); $t1->add(new TrFormElement(_T("Domain name of the signer, generating this SIG"), new InputTpl($this->pn("signer")), $this->_dnRulesTooltip()), array("value" => $this->values["signer"], "required" => True)); $t1->add(new TrFormElement(_T("Record type covered by this SIG"), $typeComboBox), array("value" => $typeIndex)); $typeDiv = new Div(array("id" => $this->pn("typediv"))); $typeDiv->setVisibility($isCustomType); $t2 = new Table(); $t2->add(new TrFormElement(_T("Custom record type"), new InputTpl($this->pn("customtype"), '/\\w+/')), array("value" => $customType)); $t3 = new Table(); $t3->add(new TrFormElement(_T("Algorithm"), $algorithmComboBox), array("value" => $algorithmIndex)); $algorithmDiv = new Div(array("id" => $this->pn("algorithmdiv"))); $algorithmDiv->setVisibility($isCustomAlgorithm); $t4 = new Table(); $t4->add(new TrFormElement(_T("Custom algorithm"), new InputTpl($this->pn("customalgorithm"), '/^([01]?\\d?\\d|2[0-4]\\d|25[0-5])$/'), array("tooltip" => _T("Algorithm ranges from 0 to 255"))), array("value" => $customAlgorithm)); $t5 = new Table(); $t5->add(new TrFormElement(_T("Labels"), new InputTpl($this->pn("labels"), '/^([01]?\\d?\\d|2[0-4]\\d|25[0-5])$/'), array("tooltip" => _T("Define an unsigned count of how many labels there are in the original SIG record owner name not counting the null label for root and not counting any initial \"*\" for a wildcard.") . "<br>" . _T("Labels count ranges from 0 to 255"))), array("value" => $this->values["labels"], "required" => True)); $t5->add(new TrFormElement(_T("Original TTL"), new BindRemainingTimeTpl($this->pn("ttl"))), array("value" => BindRemainingTimeTpl::valueFromBindTimeString($this->values["ttl"]))); $t5->add(new TrFormElement(_T("Signature inception time"), new ExtendedDateTpl($this->pn("inception"))), array("value" => $this->bindTimeToDateTplTime($this->values["inception"]))); $t5->add(new TrFormElement(_T("Signature expiration time"), new ExtendedDateTpl($this->pn("expiration"))), array("value" => $this->bindTimeToDateTplTime($this->values["expiration"]))); $t5->add(new TrFormElement(_T("Key tag"), new InputTpl($this->pn("keytag"), '/^([0-5]?\\d?\\d?\\d?\\d|6[0-4]\\d\\d\\d|65[0-4]\\d\\d|655[0-2]\\d|6553[0-5])$/'), array("tooltip" => _T("Key tag is a decimal number that ranges from 0 to 65535"))), array("value" => $this->values["keytag"], "required" => True)); $t5->add(new TrFormElement(_T("Signature"), $signatureTextarea), array("value" => $this->values["signature"])); return array($this->stackedUi($t1), $this->stackedUi($typeDiv, 0), $this->stackedUi($t2, 2), $this->stackedUi($t3), $this->stackedUi($algorithmDiv, 0), $this->stackedUi($t4, 2), $this->stackedUi($t5)); }
} } $title = ""; if ($reverse) { $title = $_GET["action"] == "addrecord" ? sprintf(_T("Add record to reverse zone for zone %s"), $zone) : sprintf(_T("Edit record of reverse zone for zone %s"), $zone); } else { $title = $_GET["action"] == "addrecord" ? sprintf(_T("Add record to zone %s"), $zone) : sprintf(_T("Edit record of zone %s"), $zone); } $p = new PageGenerator($title); $sidemenu->forceActiveItem("index"); $p->setSideMenu($sidemenu); $p->display(); if ($_GET["action"] == "addrecord") { $recordTypes = supportedRecordsTypes($reverse ? "reverse" : "direct"); } else { $recordTypes = supportedRecordsTypes("all"); } $typeIndex = isset($_POST["recordtype"]) ? $_POST["recordtype"] : "0"; global $error; $recordUiContainers = NULL; /* Adding a new record */ if (isset($_POST["badd"])) { $typeIndex = $_POST["recordtype"]; $type = strtolower($recordTypes[$typeIndex]); if ($type == _T("custom")) { $type = "custom"; } $typeToLoad = in_array(strtoupper($type), $recordTypes) ? strtolower($type) : "custom"; require_once "dnsrecords/" . $typeToLoad . ".php"; $RecordClass = $typeToLoad . "Record"; $record = new $RecordClass(array("zone" => $zone, "type" => $type));