mirror of
				https://github.com/billz/raspap-webgui.git
				synced 2025-03-01 10:31:47 +00:00 
			
		
		
		
	Merge pull request #969 from fareg/master
DHCP static leases w/ optional comment
This commit is contained in:
		| @@ -54,16 +54,19 @@ $(document).on("click", ".js-add-dhcp-static-lease", function(e) { | ||||
|     var container = $(".js-new-dhcp-static-lease"); | ||||
|     var mac = $("input[name=mac]", container).val().trim(); | ||||
|     var ip  = $("input[name=ip]", container).val().trim(); | ||||
|     var comment = $("input[name=comment]", container).val().trim(); | ||||
|     if (mac == "" || ip == "") { | ||||
|         return; | ||||
|     } | ||||
|     var row = $("#js-dhcp-static-lease-row").html() | ||||
|         .replace("{{ mac }}", mac) | ||||
|         .replace("{{ ip }}", ip); | ||||
|         .replace("{{ ip }}", ip) | ||||
|         .replace("{{ comment }}", comment); | ||||
|     $(".js-dhcp-static-lease-container").append(row); | ||||
|  | ||||
|     $("input[name=mac]", container).val(""); | ||||
|     $("input[name=ip]", container).val(""); | ||||
|     $("input[name=comment]", container).val(""); | ||||
| }); | ||||
|  | ||||
| $(document).on("click", ".js-remove-dhcp-static-lease", function(e) { | ||||
|   | ||||
| @@ -154,6 +154,20 @@ function validateDHCPInput() | ||||
|     return $errors; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Compares to string IPs | ||||
|  * | ||||
|  * @param string $ip1 | ||||
|  * @param string $ip2 | ||||
|  * @return boolean $result | ||||
|  */ | ||||
| function compareIPs($ip1, $ip2) | ||||
| { | ||||
|     $ipu1 = sprintf('%u', ip2long($ip1["ip"])) + 0; | ||||
|     $ipu2 = sprintf('%u', ip2long($ip2["ip"])) + 0; | ||||
|     return $ipu1 > $ipu2; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Updates a dnsmasq configuration | ||||
|  * | ||||
| @@ -171,13 +185,25 @@ function updateDnsmasqConfig($iface,$status) | ||||
|         $config .= $_POST['RangeLeaseTime']; | ||||
|     } | ||||
|     $config .= $_POST['RangeLeaseTimeUnits'].PHP_EOL; | ||||
|     //  Static leases | ||||
|     $staticLeases = array(); | ||||
|     for ($i=0; $i < count($_POST["static_leases"]["mac"]); $i++) { | ||||
|         $mac = trim($_POST["static_leases"]["mac"][$i]); | ||||
|         $ip  = trim($_POST["static_leases"]["ip"][$i]); | ||||
|         $comment  = trim($_POST["static_leases"]["comment"][$i]); | ||||
|         if ($mac != "" && $ip != "") { | ||||
|             $config .= "dhcp-host=$mac,$ip".PHP_EOL; | ||||
|             $staticLeases[] = array('mac' => $mac, 'ip' => $ip, 'comment' => $comment); | ||||
|         } | ||||
|     } | ||||
|     //  Sort ascending by IPs | ||||
|     usort($staticLeases, "compareIPs"); | ||||
|     //  Update config | ||||
|     for ($i = 0; $i < count($staticLeases); $i++) { | ||||
|         $mac = $staticLeases[$i]['mac']; | ||||
|         $ip = $staticLeases[$i]['ip']; | ||||
|         $comment = $staticLeases[$i]['comment']; | ||||
|         $config .= "dhcp-host=$mac,$ip # $comment".PHP_EOL; | ||||
|     }  | ||||
|     if ($_POST['no-resolv'] == "1") { | ||||
|         $config .= "no-resolv".PHP_EOL; | ||||
|     } | ||||
|   | ||||
| @@ -4,14 +4,18 @@ | ||||
|  | ||||
|   <div class="dhcp-static-leases js-dhcp-static-lease-container"> | ||||
|     <?php foreach ($hosts as $host) : ?> | ||||
|       <?php list($host, $comment) = array_map("trim", explode("#", $host)); ?> | ||||
|       <?php list($mac, $ip) = array_map("trim", explode(",", $host)); ?> | ||||
|       <div class="row dhcp-static-lease-row js-dhcp-static-lease-row"> | ||||
|         <div class="col-md-5 col-xs-5"> | ||||
|         <div class="col-md-4 col-xs-3"> | ||||
|           <input type="text" name="static_leases[mac][]" value="<?php echo htmlspecialchars($mac, ENT_QUOTES) ?>" placeholder="<?php echo _("MAC address") ?>" class="form-control"> | ||||
|         </div> | ||||
|         <div class="col-md-5 col-xs-4"> | ||||
|         <div class="col-md-3 col-xs-3"> | ||||
|           <input type="text" name="static_leases[ip][]" value="<?php echo htmlspecialchars($ip, ENT_QUOTES) ?>" placeholder="<?php echo _("IP address") ?>" class="form-control"> | ||||
|         </div> | ||||
|         <div class="col-md-3 col-xs-3"> | ||||
|           <input type="text" name="static_leases[comment][]" value="<?php echo htmlspecialchars($comment, ENT_QUOTES) ?>" placeholder="<?php echo _("Optional Comment") ?>" class="form-control"> | ||||
|         </div> | ||||
|         <div class="col-md-2 col-xs-3"> | ||||
|           <button type="button" class="btn btn-danger js-remove-dhcp-static-lease"><?php echo _("Remove") ?></button> | ||||
|         </div> | ||||
| @@ -21,12 +25,15 @@ | ||||
|  | ||||
|   <h5 class="mt-3 mb-3"><?php echo _("Add static DHCP lease") ?></h5> | ||||
|   <div class="row dhcp-static-lease-row js-new-dhcp-static-lease"> | ||||
|     <div class="col-md-5 col-xs-5"> | ||||
|     <div class="col-md-4 col-xs-3"> | ||||
|       <input type="text" name="mac" value="" placeholder="<?php echo _("MAC address") ?>" class="form-control" autofocus="autofocus"> | ||||
|     </div> | ||||
|     <div class="col-md-5 col-xs-4"> | ||||
|     <div class="col-md-3 col-xs-3"> | ||||
|       <input type="text" name="ip" value="" placeholder="<?php echo _("IP address") ?>" class="form-control"> | ||||
|     </div> | ||||
|     <div class="col-md-3 col-xs-3"> | ||||
|       <input type="text" name="comment" value="" placeholder="<?php echo _("Optional Comment") ?>" class="form-control"> | ||||
|     </div> | ||||
|     <div class="col-md-2 col-xs-3"> | ||||
|       <button type="button" class="btn btn-success js-add-dhcp-static-lease"><?php echo _("Add") ?></button> | ||||
|     </div> | ||||
| @@ -34,12 +41,15 @@ | ||||
|  | ||||
|   <template id="js-dhcp-static-lease-row"> | ||||
|     <div class="row dhcp-static-lease-row js-dhcp-static-lease-row"> | ||||
|       <div class="col-md-5 col-xs-5"> | ||||
|       <div class="col-md-4 col-xs-3"> | ||||
|         <input type="text" name="static_leases[mac][]" value="{{ mac }}" placeholder="<?php echo _("MAC address") ?>" class="form-control"> | ||||
|       </div> | ||||
|       <div class="col-md-5 col-xs-4"> | ||||
|       <div class="col-md-3 col-xs-3"> | ||||
|         <input type="text" name="static_leases[ip][]" value="{{ ip }}" placeholder="<?php echo _("IP address") ?>" class="form-control"> | ||||
|       </div> | ||||
|       <div class="col-md-3 col-xs-3"> | ||||
|         <input type="text" name="static_leases[comment][]" value="{{ comment }}" placeholder="<?php echo _("Optional Comment") ?>" class="form-control"> | ||||
|       </div> | ||||
|       <div class="col-md-2 col-xs-3"> | ||||
|         <button type="button" class="btn btn-warning js-remove-dhcp-static-lease"><?php echo _("Remove") ?></button> | ||||
|       </div> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user