|
|
@ -17,76 +17,78 @@ if (isset($_POST['interface'])) { |
|
|
|
$file = $int.".ini"; |
|
|
|
$cfgfile="/etc/wvdial.conf"; |
|
|
|
if ( $int == "mobiledata") { |
|
|
|
$cfg['pin'] = $_POST["pin-mobile"]; |
|
|
|
$cfg['apn'] = $_POST["apn-mobile"]; |
|
|
|
$cfg['apn_user'] = $_POST["apn-user-mobile"]; |
|
|
|
$cfg['apn_pw'] = $_POST["apn-pw-mobile"]; |
|
|
|
if (file_exists($cfgfile)) { |
|
|
|
if($cfg["pin"] !== "") exec('sudo /bin/sed -i "s/CPIN=\".*\"/CPIN=\"'.$cfg["pin"].'\"/gi" '.$cfgfile); |
|
|
|
if($cfg["apn"] !== "") exec('sudo /bin/sed -i "s/\"IP\"\,\".*\"/\"IP\"\,\"'.$cfg["apn"].'\"/gi" '.$cfgfile); |
|
|
|
if($cfg["apn_user"] !== "") exec('sudo /bin/sed -i "s/^username = .*$/Username = '.$cfg["apn_user"].'/gi" '.$cfgfile); |
|
|
|
if($cfg["apn_pw"] !== "") exec('sudo /bin/sed -i "s/^password = .*$/Password = '.$cfg["apn_pw"].'/gi" '.$cfgfile); |
|
|
|
} |
|
|
|
$cfg['pin'] = $_POST["pin-mobile"]; |
|
|
|
$cfg['apn'] = $_POST["apn-mobile"]; |
|
|
|
$cfg['apn_user'] = $_POST["apn-user-mobile"]; |
|
|
|
$cfg['apn_pw'] = $_POST["apn-pw-mobile"]; |
|
|
|
if (file_exists($cfgfile)) { |
|
|
|
if($cfg["pin"] !== "") exec('sudo /bin/sed -i "s/CPIN=\".*\"/CPIN=\"'.$cfg["pin"].'\"/gi" '.$cfgfile); |
|
|
|
if($cfg["apn"] !== "") exec('sudo /bin/sed -i "s/\"IP\"\,\".*\"/\"IP\"\,\"'.$cfg["apn"].'\"/gi" '.$cfgfile); |
|
|
|
if($cfg["apn_user"] !== "") exec('sudo /bin/sed -i "s/^username = .*$/Username = '.$cfg["apn_user"].'/gi" '.$cfgfile); |
|
|
|
if($cfg["apn_pw"] !== "") exec('sudo /bin/sed -i "s/^password = .*$/Password = '.$cfg["apn_pw"].'/gi" '.$cfgfile); |
|
|
|
} |
|
|
|
} else if ( preg_match("/netdevices/",$int)) { |
|
|
|
if(!isset($_POST['opts']) ) { |
|
|
|
$jsonData = ['return'=>0,'output'=>['No valid data to add/delete udev rule ']]; |
|
|
|
echo json_encode($jsonData); |
|
|
|
return; |
|
|
|
$jsonData = ['return'=>0,'output'=>['No valid data to add/delete udev rule ']]; |
|
|
|
echo json_encode($jsonData); |
|
|
|
return; |
|
|
|
} else { |
|
|
|
$opts=explode(" ",$_POST['opts'] ); |
|
|
|
$dev=$opts[0]; |
|
|
|
$vid=$_POST["int-vid-".$dev]; |
|
|
|
$pid=$_POST["int-pid-".$dev]; |
|
|
|
$mac=$_POST["int-mac-".$dev]; |
|
|
|
$name=trim($_POST["int-name-".$dev]); |
|
|
|
$type=$_POST["int-type-".$dev]; |
|
|
|
$newtype=$_POST["int-new-type-".$dev]; |
|
|
|
$udevfile=$_SESSION["udevrules"]["udev_rules_file"]; |
|
|
|
// $udevfile="/etc/udev/rules.d/80-net-devices.rules";
|
|
|
|
$opts=explode(" ",$_POST['opts'] ); |
|
|
|
$dev=$opts[0]; |
|
|
|
$vid=$_POST["int-vid-".$dev]; |
|
|
|
$pid=$_POST["int-pid-".$dev]; |
|
|
|
$mac=$_POST["int-mac-".$dev]; |
|
|
|
$name=trim($_POST["int-name-".$dev]); |
|
|
|
$name=preg_replace("/[^a-z0-9]/", "", strtolower($name)); |
|
|
|
$type=$_POST["int-type-".$dev]; |
|
|
|
$newtype=$_POST["int-new-type-".$dev]; |
|
|
|
$udevfile=$_SESSION["udevrules"]["udev_rules_file"]; // default file /etc/udev/rules.d/80-net-devices.rules";
|
|
|
|
|
|
|
|
// find the rule prototype and prefix
|
|
|
|
$rule = ""; |
|
|
|
foreach($_SESSION["udevrules"]["network_devices"] as $devt) { |
|
|
|
if($devt["type"]==$newtype) { |
|
|
|
$rulenew = $devt["udev_rule"]; |
|
|
|
$prefix = $devt["name_prefix"]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// find the rule prototype and prefix
|
|
|
|
$rule = ""; |
|
|
|
foreach($_SESSION["udevrules"]["network_devices"] as $devt) { |
|
|
|
if($devt["type"]==$newtype) { |
|
|
|
$rule = $devt["udev_rule"]; |
|
|
|
$prefix = $devt["name_prefix"]; |
|
|
|
} |
|
|
|
} |
|
|
|
if(!empty($mac)) $rule = preg_replace("/\\\$MAC\\\$/i",$mac,$rule); |
|
|
|
if(!empty($vid)) $rule = preg_replace("/\\\$IDVENDOR\\\$/i",$vid,$rule); |
|
|
|
if(!empty($pid)) $rule = preg_replace("/\\\$IDPRODUCT\\\$/i",$pid,$rule); |
|
|
|
// check for existing rule
|
|
|
|
$pre=""; |
|
|
|
if(preg_match("/^(\w+)[0-9]$/",$dev,$match)=== 1) $pre=$match[1]; |
|
|
|
$ruleold = preg_replace("/\\\$DEVNAME\\\$/i",$pre.".",$rule); |
|
|
|
exec("grep -oP '".$ruleold."' $udevfile",$ret); |
|
|
|
$newRule = empty($ret) || !empty($name); |
|
|
|
// delete current entry
|
|
|
|
if(!empty($ret)) exec("sudo sed -i '/^".$ruleold."$/d' ".$udevfile); |
|
|
|
exec('sudo sed -i "/^.*'.$mac.'.*$/d" '.$udevfile); |
|
|
|
if($newRule) { |
|
|
|
// check for an existing rule and delete lines with same MAC or same VID/PID
|
|
|
|
if (!empty($vid) && !empty($pid)) { |
|
|
|
$rule = '^.*ATTRS{idVendor}==\"' . $vid . '\".*ATTRS{idProduct}==\"' . $pid . '\".*$'; |
|
|
|
exec('sudo sed -i "/'.$rule.'/Id" '.$udevfile); // clear all entries with this VID/PID
|
|
|
|
$rule = '^.*ATTRS{idProduct}==\"' . $pid . '\".*ATTRS{idVendor}==\"' . $vid . '\".*$'; |
|
|
|
exec('sudo sed -i "/'.$rule.'/Id" '.$udevfile); // clear all entries with this VID/PID
|
|
|
|
} |
|
|
|
if (!empty($mac)) { |
|
|
|
exec('sudo sed -i "/^.*'.$mac.'.*$/d" '.$udevfile); // clear all entries with same MAC
|
|
|
|
} |
|
|
|
// create new entry
|
|
|
|
if(empty($name)) $name = $prefix."0"; |
|
|
|
if(!empty($name)) $rule = preg_replace("/\\\$DEVNAME\\\$/i",$name,$rule); |
|
|
|
if (!empty($rule) ) exec('echo \''.$rule.'\' | sudo /usr/bin/tee -a '.$udevfile); |
|
|
|
} |
|
|
|
$ret=print_r($ret,true); |
|
|
|
$jsonData = ['return'=>0,'output'=>['Settings changed for device '.$dev ] ]; |
|
|
|
echo json_encode($jsonData); |
|
|
|
return; |
|
|
|
if ( ($type != $newtype) || !empty($name) ) { // new device type or new name
|
|
|
|
if (empty($name)) $name = $prefix."*"; |
|
|
|
if (!empty($mac)) $rule = preg_replace("/\\\$MAC\\\$/i", $mac, $rulenew); |
|
|
|
if (!empty($vid)) $rule = preg_replace("/\\\$IDVENDOR\\\$/i", $vid, $rule); |
|
|
|
if (!empty($pid)) $rule = preg_replace("/\\\$IDPRODUCT\\\$/i", $pid, $rule); |
|
|
|
if (!empty($name)) $rule = preg_replace("/\\\$DEVNAME\\\$/i",$name,$rule); |
|
|
|
if (!empty($rule)) exec('echo \''.$rule.'\' | sudo /usr/bin/tee -a '.$udevfile); |
|
|
|
} |
|
|
|
$ret=print_r($ret,true); |
|
|
|
$jsonData = ['return'=>0,'output'=>['Settings changed for device '.$dev. '<br>Changes will only be in effect after reconnecting the device' ] ]; |
|
|
|
echo json_encode($jsonData); |
|
|
|
return; |
|
|
|
} |
|
|
|
} else { |
|
|
|
$ip = $_POST[$int.'-ipaddress']; |
|
|
|
$netmask = mask2cidr($_POST[$int.'-netmask']); |
|
|
|
$dns1 = $_POST[$int.'-dnssvr']; |
|
|
|
$dns2 = $_POST[$int.'-dnssvralt']; |
|
|
|
$ip = $_POST[$int.'-ipaddress']; |
|
|
|
$netmask = mask2cidr($_POST[$int.'-netmask']); |
|
|
|
$dns1 = $_POST[$int.'-dnssvr']; |
|
|
|
$dns2 = $_POST[$int.'-dnssvralt']; |
|
|
|
|
|
|
|
$cfg['interface'] = $int; |
|
|
|
$cfg['routers'] = $_POST[$int.'-gateway']; |
|
|
|
$cfg['ip_address'] = $ip."/".$netmask; |
|
|
|
$cfg['domain_name_server'] = $dns1." ".$dns2; |
|
|
|
$cfg['static'] = $_POST[$int.'-static']; |
|
|
|
$cfg['failover'] = $_POST[$int.'-failover']; |
|
|
|
$cfg['interface'] = $int; |
|
|
|
$cfg['routers'] = $_POST[$int.'-gateway']; |
|
|
|
$cfg['ip_address'] = $ip."/".$netmask; |
|
|
|
$cfg['domain_name_server'] = $dns1." ".$dns2; |
|
|
|
$cfg['static'] = $_POST[$int.'-static']; |
|
|
|
$cfg['failover'] = $_POST[$int.'-failover']; |
|
|
|
} |
|
|
|
if (write_php_ini($cfg, RASPI_CONFIG.'/networking/'.$file)) { |
|
|
|
$jsonData = ['return'=>0,'output'=>['Successfully Updated Network Configuration']]; |
|
|
|