|
@@ -19,14 +19,75 @@ trait DHCPOptionTrait
|
|
|
$this->setOptions(json_encode($this->getDHCPOption()));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* @ORM\PostLoad
|
|
|
*/
|
|
|
public function doDHCPOptionOnPostLoad()
|
|
|
{
|
|
|
- $this->setDHCPOption((array)json_decode($this->getOptions()));
|
|
|
+ $this->setDHCPOption($this->setAltDhcpParsing($this->getOptions()));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Esta función parsea las opciones de flowdat 2 / dhcpd-fd si son seteadas como texto debido a la importación básica.
|
|
|
+ */
|
|
|
+ function setAltDhcpParsing($config){
|
|
|
+ $rtr = json_decode($config, true, 512, JSON_BIGINT_AS_STRING);
|
|
|
+ if(!is_array($rtr)){
|
|
|
+ $rtr = array();
|
|
|
+ foreach(preg_split("|\n|", $config) as $line){
|
|
|
+ $p = preg_split("|\s+|",$line);
|
|
|
+ if($p[0] === "option"){
|
|
|
+ if($p[1] === "routers"){
|
|
|
+ $rtr["routers"] = preg_replace("|;$|", "", $p[2]);
|
|
|
+ }else if ($p[1] === "subnet-mask"){
|
|
|
+ $rtr["subnet_mask"] = preg_replace("|;$|", "", $p[2]);
|
|
|
+ }else if ($p[1] === "broadcast-address"){
|
|
|
+ $rtr["broadcast_address"] = preg_replace("|;$|", "", $p[2]);
|
|
|
+ }else if ($p[1] === "domain-name"){
|
|
|
+ $rtr["domain_name"] = preg_replace("/\"|;$/", "", $p[2]);
|
|
|
+ }else if ($p[1] === "domain-name-servers"){
|
|
|
+ $val = implode("", array_slice($p,2));
|
|
|
+ $rtr["domain_name_servers"] = preg_replace("/;$/", "", $val);
|
|
|
+ }else if ($p[1] === "log-servers"){
|
|
|
+ $val = implode("", array_slice($p,2));
|
|
|
+ $rtr["log_servers"] = preg_replace("/;$/", "", $val);
|
|
|
+ }else if ($p[1] === "time-servers"){
|
|
|
+ $val = implode("", array_slice($p,2));
|
|
|
+ $rtr["time_servers"] = preg_replace("/;$/", "", $val);
|
|
|
+ }else if ($p[1] === "tftp-server-name"){
|
|
|
+ $rtr["tftp_server"] = preg_replace("/\"|;$/", "", $p[2]);
|
|
|
+ }else if ($p[1] === "option122.provisioning-type"){
|
|
|
+ $rtr["option122.provisioning-type"] = preg_replace("/\"|;$/", "", $p[2]);
|
|
|
+ }else if ($p[1] === "option122.provisioning-server"){
|
|
|
+ $rtr["option122.provisioning-server"] = preg_replace("/\"|;$/", "", $p[2]);
|
|
|
+ }else if ($p[1] === "option122.dhcp-server"){
|
|
|
+ $rtr["option122.dhcp-server"] = preg_replace("/;$/", "", $p[2]);
|
|
|
+ }else if ($p[1] === "time-offset"){
|
|
|
+ $rtr["time_offset"] = preg_replace("/;$/", "", $p[2]);
|
|
|
+ }else{
|
|
|
+ throw new \Exception("Option not soported by setAltDhcpParsing ".$line);
|
|
|
+ }
|
|
|
+ }else if ($p[0] === "max-lease-time"){
|
|
|
+ $rtr["max_lease_time"] = preg_replace("/;$/", "", $p[1]);
|
|
|
+ }else if ($p[0] === "filename"){
|
|
|
+ $rtr["filename"] = preg_replace("/;$/", "", $p[1]);
|
|
|
+ }else if ($p[0] === "next-server"){
|
|
|
+ $rtr["next_server"] = preg_replace("/;$/", "", $p[1]);
|
|
|
+ }else if ($p[0] === "default-lease-time"){
|
|
|
+ $rtr["default_lease_time"] = preg_replace("/;$/", "", $p[1]);
|
|
|
+ }else{
|
|
|
+ throw new \Exception("Config not soported by setAltDhcpParsing ".$line);
|
|
|
+ //var_dump($p);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $rtr;
|
|
|
+ }else{
|
|
|
+ return (array)$rtr;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
function getDHCPOption()
|
|
|
{
|
|
|
return $this->json_dhcp_option_config;
|