فهرست منبع

add support dhcp hostname for mikrotik

rajven 5 سال پیش
والد
کامیت
1e10570ed4
4فایلهای تغییر یافته به همراه17 افزوده شده و 5 حذف شده
  1. 3 0
      docs/Readme.en.md
  2. 4 1
      docs/Readme.ru.md
  3. 1 1
      html/admin/users/add_dhcp.php
  4. 9 3
      html/inc/common.php

+ 3 - 0
docs/Readme.en.md

@@ -166,4 +166,7 @@ add name=download_root_[LAN_INTERFACE_NAME] parent=[LAN_INTERFACE_NAME] queue=pc
 
 
 run /usr/local/scripts/sync_mikrotik.pl
 run /usr/local/scripts/sync_mikrotik.pl
 
 
+#dhcp script
+/tool fetch mode=http keep-result=no url="http://<STAT_IP_OR_HOSTNAME>/admin/users/add_dhcp.php\?login=<LOGIN>&password=<PASSWORD_HASH>&mac=$leaseActMAC&ip=$leaseActIP&action=$leaseBound&hostname=$"lease-hostname""
+
 #########################################################################################################################
 #########################################################################################################################

+ 4 - 1
docs/Readme.ru.md

@@ -87,7 +87,7 @@ cp docs/logrotate/scripts /etc/logrotate.d/scripts
 
 
 Не забудьте раскомментировать в кроне неоходимые скрипты
 Не забудьте раскомментировать в кроне неоходимые скрипты
 
 
-9. Минимальная настрофка готова! Заходим: http://[ip]/admin/ user: admin password: admin, настраиваем список устройств, используемые сети и т.д.
+9. Минимальная настройка готова! Заходим: http://[ip]/admin/ user: admin password: admin, настраиваем список устройств, используемые сети и т.д.
 
 
 ######################################### DHCP Server at Linux ###############################################################
 ######################################### DHCP Server at Linux ###############################################################
 
 
@@ -172,4 +172,7 @@ add name=download_root_[LAN_INTERFACE_NAME] parent=[LAN_INTERFACE_NAME] queue=pc
 запускаем /usr/local/scripts/sync_mikrotik.pl
 запускаем /usr/local/scripts/sync_mikrotik.pl
 Скрипт создаст правила фильтрации и шейпера
 Скрипт создаст правила фильтрации и шейпера
 
 
+#dhcp script
+/tool fetch mode=http keep-result=no url="http://<STAT_IP_OR_HOSTNAME>/admin/users/add_dhcp.php\?login=<LOGIN>&password=<PASSWORD_HASH>&mac=$leaseActMAC&ip=$leaseActIP&action=$leaseBound&hostname=$"lease-hostname""
+
 #########################################################################################################################
 #########################################################################################################################

+ 1 - 1
html/admin/users/add_dhcp.php

@@ -5,7 +5,7 @@ if (!empty($_GET["ip"]) and !empty($_GET["mac"])) {
     $ip = $_GET["ip"];
     $ip = $_GET["ip"];
     $mac = mac_dotted(trim($_GET["mac"]));
     $mac = mac_dotted(trim($_GET["mac"]));
     $dhcp_hostname = NULL;
     $dhcp_hostname = NULL;
-    if (!empty($_GET["host"])) { $dhcp_hostname = trim($_GET["host"]); }
+    if (!empty($_GET["hostname"])) { $dhcp_hostname = trim($_GET["hostname"]); }
     $faction = $_GET["action"] * 1;
     $faction = $_GET["action"] * 1;
     $action = 'add';
     $action = 'add';
     if ($faction == 1) { $action = 'add'; }
     if ($faction == 1) { $action = 'add'; }

+ 9 - 3
html/inc/common.php

@@ -1330,7 +1330,7 @@ function resurrection_auth($db, $ip, $mac, $action, $dhcp_hostname)
     }
     }
 
 
     // default id
     // default id
-    $new_id = get_new_user_id($db, $ip, $mac);
+    $new_id = get_new_user_id($db, $ip, $mac, $dhcp_hostname);
     $save_traf = get_option($db, 23);
     $save_traf = get_option($db, 23);
     $msg = '';
     $msg = '';
     // search changed mac
     // search changed mac
@@ -3098,7 +3098,7 @@ if ($ip>=ip2long($range[0]) and $ip <=ip2long($range[1])) { return 1; }
 return 0;
 return 0;
 }
 }
 
 
-function get_new_user_id($db, $ip, $mac)
+function get_new_user_id($db, $ip, $mac, $hostname)
 {
 {
     global $hotspot_user_id;
     global $hotspot_user_id;
     global $default_user_id;
     global $default_user_id;
@@ -3118,7 +3118,13 @@ function get_new_user_id($db, $ip, $mac)
             if (!empty($row['rule']) and preg_match($row['rule'], $mac)) { return $row['user_id']; }
             if (!empty($row['rule']) and preg_match($row['rule'], $mac)) { return $row['user_id']; }
             }
             }
         }
         }
-    //the hostname is not processed, because the dhcp-server on the microtic does not return it
+    //hostname
+    if (!empty($hostname)) {
+        $mac_rules=get_records_sql($db,"SELECT * FROM auth_rules WHERE type=3 AND LENGTH(rule)>0");
+        foreach ($mac_rules as $row) {
+            if (!empty($row['rule']) and preg_match($row['rule'], $mac)) { return $row['user_id']; }
+            }
+        }
     return $default_user_id;
     return $default_user_id;
 }
 }