Advertisement
Guest User

/nova/lib/defconf/get-custom-defconf

a guest
Aug 30th, 2021
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 25.58 KB | None | 0 0
  1. --- routeros-arm-6.48.4/nova/lib/defconf/get-custom-defconf     2021-08-17 08:57:34.000000000 -0300
  2. +++ routeros-7.1rc1-arm/nova/lib/defconf/get-custom-defconf     2021-08-13 04:30:32.000000000 -0300
  3. @@ -137,15 +137,11 @@
  4.    :local matched 0;
  5.    :local break 0;
  6.    :do {
  7. -    :local tmpPos 0;
  8.      :set oldPos $pos
  9.      :set pos [$findNextSection $boardStr $oldPos]
  10. -    #special case if section ends with +, assuming that there can be only one +
  11. -    :if ([:pick $boardStr ($pos-1)] = "+") do={
  12. -      :set $tmpPos ($pos-1)
  13. -      :set pos [$findNextSection $boardStr $tmpPos]
  14. -    }
  15.      :set tmp [:pick $boardStr $oldPos ($pos-1)]
  16. +    #special case if section ends with +, assuming that there can be only one +
  17. +    :if ([:pick $tmp ([:len $tmp]-1)] = "+") do={:set $pos ($pos-1)}
  18.  
  19.      # break parser for now if board has LTE iface
  20.      :if ($tmp~"LTE") do={
  21. @@ -175,7 +171,7 @@
  22.        }
  23.      } else={
  24.        # wireless
  25. -      :if ($tmp~"^[0-9SHPacndyDTQ]*\$") do={
  26. +      :if ($tmp~"^[0-9SHPacndyxDTQO]*\$") do={
  27.          :set matched 1
  28.          :set wireless "$wireless $[:pick $boardStr $oldPos $pos]"
  29.        }
  30. @@ -212,6 +208,7 @@
  31.    :local isAc 0
  32.    :local isAd 0
  33.    :local isAy 0
  34. +  :local isAx 0
  35.    :local chains "0"
  36.  
  37.    :local band;
  38. @@ -237,6 +234,7 @@
  39.            "isN"=$isN;
  40.            "isAd"=$isAd;
  41.            "isAy"=$isAy;
  42. +          "isAx"=$isAx;
  43.            "frequencyMode"=$frequency
  44.          }
  45.        }
  46. @@ -246,6 +244,7 @@
  47.        :set isAc 0
  48.        :set isAd 0
  49.        :set isAy 0
  50. +      :set isAx 0
  51.        :set chains "0"
  52.      }
  53.      # ignore card power
  54. @@ -262,7 +261,11 @@
  55.            :if ($tmp = "ay") do={
  56.              :set isAy 1; :set pos ($pos+1)
  57.            } else={
  58. -            :log warning "DefConf gen: Invalid 802.11 protocol, expected 'ac'";
  59. +            :if ($tmp = "ax") do={
  60. +              :set isAx 1; :set pos ($pos+1)
  61. +            } else={
  62. +              :log warning "DefConf gen: Invalid 802.11 protocol, expected 'ac'";
  63. +            }
  64.            }
  65.          }
  66.        }
  67. @@ -271,8 +274,13 @@
  68.      :if ($tmp = "D") do={ :set chains "0,1" }
  69.      :if ($tmp = "T") do={ :set chains "0,1,2" }
  70.      :if ($tmp = "Q") do={
  71. -      :if ($isAc = 1) do={ :set chains "0,1,2,3" } else={
  72. -        :log warning "DefConf gen: quad chains are only for 'ac' boards";
  73. +      :if ($isAc = 1 || $isAx = 1) do={ :set chains "0,1,2,3" } else={
  74. +        :log warning "DefConf gen: quad chains are only for 'ac' or 'ax' boards";
  75. +      }
  76. +    }
  77. +    :if ($tmp = "O") do={
  78. +      :if ($isAx = 1) do={ :set chains "0,1,2,3,4,5,6,7" } else={
  79. +        :log warning "DefConf gen: octa chains are only for 'ax' boards";
  80.        }
  81.      }
  82.      :set pos ($pos+1)
  83. @@ -284,6 +292,7 @@
  84.      "isN"=$isN;
  85.      "isAd"=$isAd;
  86.      "isAy"=$isAy;
  87. +    "isAx"=$isAx;
  88.      "frequencyMode"=$frequency
  89.    }
  90.    :return $outArray
  91. @@ -308,128 +317,200 @@
  92.    :local ifcId "";
  93.    :local currentName;
  94.  
  95. +  :local tmpChPos 0;
  96. +  :local tmpChEndPos 0;
  97. +
  98. +  :local tmpChArr [:toarray ""];
  99. +
  100. +  :local tmpChArrPos 0;
  101. +  :local bestChannel "";
  102. +
  103.    :if ($wirelessEnabled = 1) do={
  104. -    #:set ifcId [/interface wireless find where default-name=$ifc]
  105. -    # find interface by default name and run info (interfaces could be renamed in user config). Hw-info can not be fetched by interface ID
  106. -    #:set currentName [/interface wireless get $ifcId name]
  107. -    :local infoCall [:parse ":local ifcId [/interface wireless find where default-name=$ifc]; :local currentName [/interface wireless get \$ifcId name]; :return [/interface wireless info hw-info [/interface wireless get \$ifcId name] as-value]"]
  108. -    :set wlanInfo [$infoCall]; #[/interface wireless info hw-info $currentName as-value];
  109. -    # FIXME: converts from array with ;
  110. -    :set rxChains [:tostr ($wlanInfo->"rx-chains")];
  111. -    :set txChains [:tostr ($wlanInfo->"tx-chains")];
  112. -
  113. -    :foreach i in=($wlanInfo->"ranges") do={
  114. -      :local chr "";
  115. -      :local len 0;
  116. -      :set len [:len $i];
  117. -      :set chr [:pick $i 0];
  118. -      # if is number TODO: use isNum
  119. -      :if ( (0 <= [:tonum $chr]) && ([:tonum $chr] <= 9) ) do={
  120. -        :set numBands ($numBands+1)
  121. -
  122. -        :set ($bands->"b$numBands") {
  123. -          "freq"=$chr;
  124. -          "isN"=0;
  125. -          "isAc"=0;
  126. -          "chMaxWidth"=0
  127. -        }
  128. -      } else={
  129. -        :if ($len > 1) do={
  130. -          :set chr [:pick $i 1];
  131. -          :if ($chr = "n") do={
  132. -            :set (($bands->"b$numBands")->"isN") 1
  133. -          }
  134. -          :if ($chr = "c") do={
  135. -            :set (($bands->"b$numBands")->"isAc") 1
  136. -          }
  137. -        }
  138. -        :if ([:tonum (($bands->"b$numBands")->"chMaxWidth")] <  [:tonum [:pick $i 2 $len]] ) do={
  139. -          :set (($bands->"b$numBands")->"chMaxWidth") [:pick $i 2 $len];
  140. +    :if ([:len [/system package find name="wifiwave2" !disabled]] != 0) do={
  141. +      :local infoCall [:parse ":local macAdd [/interface get [/interface find where default-name=$ifc] mac-address]; :return [/interface wifiwave2 radio get [find where radio-mac=\$macAdd]]"]
  142. +      :set wlanInfo [$infoCall]
  143. +      :set rxChains [:tostr ($wlanInfo->"rx-chains")];
  144. +      :set txChains [:tostr ($wlanInfo->"tx-chains")];
  145. +
  146. +      :set bands [($wlanInfo->"bands")]
  147. +      :local banLen [:len $bands]
  148. +      :local bestBand [($bands->($banLen - 1))]
  149. +
  150. +      $addCL ("  /interface wifiwave2 {")
  151. +
  152. +      #pick always first supported band
  153. +      :set band [:pick $bestBand 0 [:find $bestBand ":"]]
  154. +      :local tmpChW [:pick $bestBand ([:find $bestBand ":"] + 1) [:len $bestBand]]
  155. +
  156. +      :while ($tmpChPos <= [:len $tmpChW] && [:typeof $tmpChPos] != "nil") do={
  157. +        :local pos [:find $tmpChW "," from=$tmpChPos];
  158. +        :if ($tmpChPos!=0) do={:set tmpChPos ($tmpChPos+1)};
  159. +        :set tmpChEndPos $pos;
  160. +        :if ([:typeof $tmpChEndPos] = "nil") do={:set tmpChEndPos [:len $tmpChW]};
  161. +        :local tmp [:pick $tmpChW $tmpChPos $tmpChEndPos]
  162. +        :set ($tmpChArr -> "$tmpChArrPos") $tmp
  163. +        :set tmpChPos $pos
  164. +        :set tmpChArrPos ($tmpChArrPos + 1)
  165. +      }
  166. +
  167. +      :set bestChannel [($tmpChArr -> ([:len $tmpChArr] - 1))]
  168. +
  169. +      $addCL (":local ifcId [/interface wifiwave2 find where default-name=$ifc]")
  170. +      $addDL ("#| $ifc Configuration:")
  171. +      $addDL ("#|     mode:                $mode;")
  172. +      $addDCL ("start wireless $ifc")
  173. +
  174. +      :if ($mode = "disabled") do={
  175. +        $addCL ("  disable \$ifcId")
  176. +      } else={
  177. +        $addDL ("#|     band:                $band;")
  178. +        $addDL ("#|     tx-chains:           $txChains;")
  179. +        $addDL ("#|     rx-chains:           $rxChains;")
  180. +        $addDL ("#|     installation:        $installation;")
  181. +
  182. +        # do not set chains (should be set by default)
  183. +        $addCL ("    set \$ifcId configuration.mode=$mode channel.band=$band disabled=no")
  184. +        $addDL ("#|     ht-extension:        $bestChannel;")
  185. +        $addCL ("    set \$ifcId channel.width=$bestChannel;")
  186. +        :if ($frequency != "auto") do={
  187. +          $addCL ("    set \$ifcId channel.frequency=$frequency")
  188.          }
  189. +        $addCL ("    set \$ifcId channel.skip-dfs-channels=10min-cac;")
  190.        }
  191. -    }
  192. -
  193. -    $addCL ("  /interface wireless {")
  194. -
  195. -    #pick always first supported band
  196. -    :if (($bands->"b1")->"freq" = 2) do={
  197. -      :if (($bands->"b1")->"isN" = 1) do={
  198. -        :set band "2ghz-b/g/n"
  199. +      :if (!($ssid = "" || $ssid = nil)) do={
  200. +        $addCL ("    set \$ifcId configuration.ssid=$ssid")
  201.        } else={
  202. -        :set band "2ghz-b/g"
  203. +        :if ($mode = "ap") do={
  204. +          $addDCL ("set ap ssid")
  205. +          $addCL ("    :local wlanMac  [/interface get [/interface find where default-name=$ifc] mac-address];")
  206. +          $addCL ("    :set ssid \"MikroTik-\$[:pick \$wlanMac 9 11]\$[:pick \$wlanMac 12 14]\$[:pick \$wlanMac 15 17]\"")
  207. +          $addCL ("    set \$ifcId configuration.ssid=\$ssid")
  208. +        }
  209.        }
  210. +
  211. +      $addCL ("  }")
  212.      } else={
  213. -      :if (($bands->"b1")->"isAc" = 1) do={
  214. -        :set band "5ghz-a/n/ac"
  215. -      } else={
  216. -        :if (($bands->"b1")->"isN" = 1) do={
  217. -          :set band "5ghz-a/n"
  218. +      #:set ifcId [/interface wireless find where default-name=$ifc]
  219. +      # find interface by default name and run info (interfaces could be renamed in user config). Hw-info can not be fetched by interface ID
  220. +      #:set currentName [/interface wireless get $ifcId name]
  221. +      :local infoCall [:parse ":local ifcId [/interface wireless find where default-name=$ifc]; :local currentName [/interface wireless get \$ifcId name]; :return [/interface wireless info hw-info [/interface wireless get \$ifcId name] as-value]"]
  222. +      :set wlanInfo [$infoCall]; #[/interface wireless info hw-info $currentName as-value];
  223. +      # FIXME: converts from array with ;
  224. +      :set rxChains [:tostr ($wlanInfo->"rx-chains")];
  225. +      :set txChains [:tostr ($wlanInfo->"tx-chains")];
  226. +
  227. +      :foreach i in=($wlanInfo->"ranges") do={
  228. +        :local chr "";
  229. +        :local len 0;
  230. +        :set len [:len $i];
  231. +        :set chr [:pick $i 0];
  232. +        # if is number TODO: use isNum
  233. +        :if ( (0 <= [:tonum $chr]) && ([:tonum $chr] <= 9) ) do={
  234. +          :set numBands ($numBands+1)
  235. +
  236. +          :set ($bands->"b$numBands") {
  237. +            "freq"=$chr;
  238. +            "isN"=0;
  239. +            "isAc"=0;
  240. +            "chMaxWidth"=0
  241. +          }
  242.          } else={
  243. -          :set band "5ghz-a"
  244. +          :if ($len > 1) do={
  245. +            :set chr [:pick $i 1];
  246. +            :if ($chr = "n") do={
  247. +              :set (($bands->"b$numBands")->"isN") 1
  248. +            }
  249. +            :if ($chr = "c") do={
  250. +              :set (($bands->"b$numBands")->"isAc") 1
  251. +            }
  252. +          }
  253. +          :if ([:tonum (($bands->"b$numBands")->"chMaxWidth")] <  [:tonum [:pick $i 2 $len]] ) do={
  254. +            :set (($bands->"b$numBands")->"chMaxWidth") [:pick $i 2 $len];
  255. +          }
  256.          }
  257.        }
  258. -    }
  259. -
  260. -    $addCL (":local ifcId [/interface wireless find where default-name=$ifc]")
  261. -    $addCL (":local currentName [/interface wireless get \$ifcId name]")
  262. -    $addDL ("#| $ifc Configuration:")
  263. -    $addDL ("#|     mode:                $mode;")
  264. -    $addDCL ("start wireless $ifc")
  265.  
  266. -    :if ($mode = "disabled") do={
  267. -      $addCL ("  disable \$ifcId")
  268. -    } else={
  269. -      $addDL ("#|     band:                $band;")
  270. -      $addDL ("#|     tx-chains:           $txChains;")
  271. -      $addDL ("#|     rx-chains:           $rxChains;")
  272. -      $addDL ("#|     installation:        $installation;")
  273. +      $addCL ("  /interface wireless {")
  274.  
  275. -      :if (!($pass = "" || $pass = nil)) do={
  276. -        $addDL ("#|     wpa2:          yes;")
  277. -        $addCL ("   security-profile set default mode=dynamic-keys group-ciphers=aes-ccm unicast-ciphers=aes-ccm \\")
  278. -        $addCL ("      authentication-types=wpa2-psk disable-pmkid=yes wpa2-pre-shared-key=\$defconfPassword comment=defconf ")
  279. +      #pick always first supported band
  280. +      :if (($bands->"b1")->"freq" = 2) do={
  281. +        :if (($bands->"b1")->"isN" = 1) do={
  282. +          :set band "2ghz-b/g/n"
  283. +        } else={
  284. +          :set band "2ghz-b/g"
  285. +        }
  286.        } else={
  287. -        $addDL ("#|     wpa2:      no;")
  288. +        :if (($bands->"b1")->"isAc" = 1) do={
  289. +          :set band "5ghz-a/n/ac"
  290. +        } else={
  291. +          :if (($bands->"b1")->"isN" = 1) do={
  292. +            :set band "5ghz-a/n"
  293. +          } else={
  294. +            :set band "5ghz-a"
  295. +          }
  296. +        }
  297.        }
  298.  
  299. -      # do not set chains (should be set by default)
  300. -      $addCL ("    set \$ifcId mode=$mode band=$band disabled=no wireless-protocol=$wProto \\")
  301. -      $addCL ("       distance=$distance installation=$installation")
  302. -
  303. -      if (($bands->"b1")->"chMaxWidth" >= 80) do={
  304. -        $addDL ("#|     ht-extension:        20/40/80mhz-XXXX;")
  305. -        $addCL ("    set \$ifcId channel-width=20/40/80mhz-XXXX;")
  306. -        # secondary channel only for AC and 80mhz
  307. -        :if ($secChannel=1 && band="5ghz-a/n/ac") do={
  308. -          $addDL ("#|     secondary-channel:   auto;")
  309. -          $addCL ("    set \$ifcId secondary-channel=auto")
  310. +      $addCL (":local ifcId [/interface wireless find where default-name=$ifc]")
  311. +      $addCL (":local currentName [/interface wireless get \$ifcId name]")
  312. +      $addDL ("#| $ifc Configuration:")
  313. +      $addDL ("#|     mode:                $mode;")
  314. +      $addDCL ("start wireless $ifc")
  315. +
  316. +      :if ($mode = "disabled") do={
  317. +        $addCL ("  disable \$ifcId")
  318. +      } else={
  319. +        $addDL ("#|     band:                $band;")
  320. +        $addDL ("#|     tx-chains:           $txChains;")
  321. +        $addDL ("#|     rx-chains:           $rxChains;")
  322. +        $addDL ("#|     installation:        $installation;")
  323. +
  324. +        :if (!($pass = "" || $pass = nil)) do={
  325. +          $addDL ("#|     wpa2:          yes;")
  326. +          $addCL ("   security-profile set default mode=dynamic-keys group-ciphers=aes-ccm unicast-ciphers=aes-ccm \\")
  327. +          $addCL ("      authentication-types=wpa2-psk disable-pmkid=yes wpa2-pre-shared-key=\$defconfPassword comment=defconf ")
  328. +        } else={
  329. +          $addDL ("#|     wpa2:      no;")
  330.          }
  331. -      } else={
  332. -        :if (($bands->"b1")->"chMaxWidth" = 40) do={
  333. -          $addDL ("#|     ht-extension:        20/40mhz-XX;")
  334. -          $addCL ("    set \$ifcId channel-width=20/40mhz-XX;")
  335. +
  336. +        # do not set chains (should be set by default)
  337. +        $addCL ("    set \$ifcId mode=$mode band=$band disabled=no wireless-protocol=$wProto \\")
  338. +        $addCL ("       distance=$distance installation=$installation")
  339. +
  340. +        if (($bands->"b1")->"chMaxWidth" >= 80) do={
  341. +          $addDL ("#|     ht-extension:        20/40/80mhz-XXXX;")
  342. +          $addCL ("    set \$ifcId channel-width=20/40/80mhz-XXXX;")
  343. +          # secondary channel only for AC and 80mhz
  344. +          :if ($secChannel=1 && band="5ghz-a/n/ac") do={
  345. +            $addDL ("#|     secondary-channel:   auto;")
  346. +            $addCL ("    set \$ifcId secondary-channel=auto")
  347. +          }
  348.          } else={
  349. -          $addDL ("#|     ht-extension:        20mhz;")
  350. -          $addCL ("    set \$ifcId channel-width=20mhz;")
  351. +          :if (($bands->"b1")->"chMaxWidth" = 40) do={
  352. +            $addDL ("#|     ht-extension:        20/40mhz-XX;")
  353. +            $addCL ("    set \$ifcId channel-width=20/40mhz-XX;")
  354. +          } else={
  355. +            $addDL ("#|     ht-extension:        20mhz;")
  356. +            $addCL ("    set \$ifcId channel-width=20mhz;")
  357. +          }
  358. +        }
  359. +        :if ($frequency != "") do={
  360. +          $addCL ("    set \$ifcId frequency=$frequency")
  361.          }
  362.        }
  363. -      :if ($frequency != "") do={
  364. -        $addCL ("    set \$ifcId frequency=$frequency")
  365. -      }
  366. -    }
  367.  
  368. -    :if (!($ssid = "" || $ssid = nil)) do={
  369. -       $addCL ("    set \$ifcId ssid=$ssid")
  370. -    } else={
  371. -      :if ($mode = "ap-bridge" || $mode = "bridge") do={
  372. -        $addDCL ("set ap_bridge ssid")
  373. -        $addCL ("    :local wlanMac  [/interface wireless get \$ifcId mac-address];")
  374. -        $addCL ("    :set ssid \"MikroTik-\$[:pick \$wlanMac 9 11]\$[:pick \$wlanMac 12 14]\$[:pick \$wlanMac 15 17]\"")
  375. -        $addCL ("    set \$ifcId ssid=\$ssid")
  376. +      :if (!($ssid = "" || $ssid = nil)) do={
  377. +        $addCL ("    set \$ifcId ssid=$ssid")
  378. +      } else={
  379. +        :if ($mode = "ap-bridge" || $mode = "bridge") do={
  380. +          $addDCL ("set ap_bridge ssid")
  381. +          $addCL ("    :local wlanMac  [/interface wireless get \$ifcId mac-address];")
  382. +          $addCL ("    :set ssid \"MikroTik-\$[:pick \$wlanMac 9 11]\$[:pick \$wlanMac 12 14]\$[:pick \$wlanMac 15 17]\"")
  383. +          $addCL ("    set \$ifcId ssid=\$ssid")
  384. +        }
  385.        }
  386. +      $addCL ("  }")
  387.      }
  388. -
  389. -    $addCL ("  }")
  390.    }
  391.  }
  392.  
  393. @@ -513,7 +594,7 @@
  394.            $addCL ("   /ip dhcp-server")
  395.            $addCL ("     add name=defconf address-pool=\"default-dhcp\" interface=$lanPort lease-time=10m disabled=no;")
  396.            $addCL ("   /ip dhcp-server network")
  397. -          $addCL ("     add address=192.168.88.0/24 gateway=192.168.88.1 comment=\"defconf\";")
  398. +          $addCL ("     add address=192.168.88.0/24 gateway=192.168.88.1 dns-server=192.168.88.1 comment=\"defconf\";")
  399.            $addCL ("  /ip address add address=192.168.88.1/24 interface=$lanPort comment=\"defconf\";")
  400.          } else={
  401.            $addCL ("  /ip address add address=192.168.88.1/24 interface=$lanPort comment=\"defconf\";")
  402. @@ -637,10 +718,6 @@
  403.      $addCL ("   address-list add list=bad_ipv6 address=2001:db8::/32 comment=\"defconf: documentation\"")
  404.      $addCL ("   address-list add list=bad_ipv6 address=2001:10::/28 comment=\"defconf: ORCHID\"")
  405.      $addCL ("   address-list add list=bad_ipv6 address=3ffe::/16 comment=\"defconf: 6bone\"")
  406. -    $addCL ("   address-list add list=bad_ipv6 address=::224.0.0.0/100 comment=\"defconf: other\"")
  407. -    $addCL ("   address-list add list=bad_ipv6 address=::127.0.0.0/104 comment=\"defconf: other\"")
  408. -    $addCL ("   address-list add list=bad_ipv6 address=::/104 comment=\"defconf: other\"")
  409. -    $addCL ("   address-list add list=bad_ipv6 address=::255.0.0.0/104 comment=\"defconf: other\"")
  410.  
  411.      # fw input
  412.      # can cause problems, different OSes originate packet with different ttls
  413. @@ -1038,6 +1115,10 @@
  414.  :local ssidPrefix "MikroTik"
  415.  :local backupLink 0;
  416.  
  417. +:local usingWifiwave 0;
  418. +:local wlanPrefix "wlan";
  419. +:local wlanMode "ap-bridge";
  420. +
  421.  #Perform additional checks on installed packages
  422.  :if ([:len [/system package find name="ipv6" !disabled]] != 0) do={
  423.    :set ipv6Enabled 1;
  424. @@ -1048,6 +1129,11 @@
  425.  :if ([:len [/system package find name="wireless" !disabled]] != 0) do={
  426.    :set wirelessEnabled 1;
  427.  }
  428. +:if ([:len [/system package find name="wifiwave2" !disabled]] != 0) do={
  429. +  :set usingWifiwave 1;
  430. +  :set wlanPrefix "wifi";
  431. +  :set wlanMode "ap";
  432. +}
  433.  :if ([:pick [/system resource get version ] 0 1] = 7) do={
  434.    :set ipv6Enabled 1;
  435.    :set dhcpEnabled 1;
  436. @@ -1096,10 +1182,10 @@
  437.        }
  438.      };
  439.    }
  440. -  if ($numWlans > 0) do={
  441. +  if ($numWlans > 0 && $usingWifiwave = 1) do={
  442.      # ignore virtual interfaces when script is generated after upgrade
  443.      # on non-empty router (with custom user config).
  444. -    :local cmd ":global nTemp [:len [/interface wireless find where interface-type!=\"virtual\"]]"
  445. +    :local cmd ":global nTemp [:len [/interface wifiwave2 find]]"
  446.      :execute script=$cmd
  447.      :delay 1s;
  448.      :while ($nTemp < $numWlans && $bFail = 0) do={
  449. @@ -1108,10 +1194,28 @@
  450.        :set count ($count +1);
  451.        :if ($count = 40) do={
  452.          :set bFail 1;
  453. -        :log warning "DefConf gen: Unable to find wireless interface(s)";
  454. +        :log warning "DefConf gen: Unable to find wifiwave2 interface(s)";
  455.          :quit
  456.        }
  457.      };
  458. +  } else={
  459. +    if ($numWlans > 0) do={
  460. +      # ignore virtual interfaces when script is generated after upgrade
  461. +      # on non-empty router (with custom user config).
  462. +      :local cmd ":global nTemp [:len [/interface wireless find where interface-type!=\"virtual\"]]"
  463. +      :execute script=$cmd
  464. +      :delay 1s;
  465. +      :while ($nTemp < $numWlans && $bFail = 0) do={
  466. +        :delay 1s;
  467. +        :execute script=$cmd
  468. +        :set count ($count +1);
  469. +        :if ($count = 40) do={
  470. +          :set bFail 1;
  471. +          :log warning "DefConf gen: Unable to find wireless interface(s)";
  472. +          :quit
  473. +        }
  474. +      };
  475. +    }
  476.    }
  477.  }
  478.  
  479. @@ -1126,7 +1230,7 @@
  480.    :set ssidPrefix "$ssidPrefix$[:pick $SN 6 12]"
  481.  
  482.    #-----HOME AP
  483. -  :if ($board->"model"~"450|750|850|miniROUTER|751|951|941|931|953|960|760|2011|3011|4011|OmniTIK|OmniTik|hAP|952|962|D52|mAP|D24|D25|cAP|D53|924|5009") do={
  484. +  :if ($board->"model"~"450|750|850|miniROUTER|751|951|941|931|953|960|760|2011|3011|4011|OmniTIK|OmniTik|hAP|952|962|D52|mAP|D24|D25|cAP|D53|924|5009|C53|H53|L41") do={
  485.      :if (!($board->"model"~"OmniTIK|OmniTik|953")) do={
  486.        :set installation "indoor"
  487.      }
  488. @@ -1311,7 +1415,7 @@
  489.    }
  490.  
  491.    #-----WISP BRIDGE ..
  492. -  :if ($board->"model"~"LHG|Disc|nRAY") do={
  493. +  :if ($board->"model"~"LHG|Disc|nRAY|ATLGM") do={
  494.      :if ($numWils > 0) do={
  495.        :set configMode "w60g_bridge";
  496.        :set needAdminPass 1;
  497. @@ -1377,7 +1481,17 @@
  498.      :set configMode "switch";
  499.    }
  500.  }
  501. -
  502. +# Special Case CCRs
  503. +:if ($board->"model"~"CCR2116") do={
  504. +  :if ($board->"numGig" = 12 && $board->"numSfpPlus" = 4) do={
  505. +    :set lanPort "ether13";
  506. +  }
  507. +}
  508. +:if ($board->"model"~"CCR2004") do={
  509. +  :if ($board->"numGig" = 16 && $board->"numSfpPlus" = 2) do={
  510. +    :set lanPort "ether15";
  511. +  }
  512. +}
  513.  
  514.  $addDL "#| Welcome to RouterOS!"
  515.  $addDL "#|    1) Set a strong router password in the System > Users menu"
  516. @@ -1435,9 +1549,21 @@
  517.    $addCL ("    :delay 1s;")
  518.    $addCL ("  };")
  519.  }
  520. -if ($numWlans > 0) do={
  521. +if ($numWlans > 0 && $usingWifiwave = 1) do={
  522.    # wait wlans
  523.    $addCL ("  :local count 0;")
  524. +  $addCL ("  :while ([/interface wifiwave2 print count-only] < $numWlans) do={ ")
  525. +  $addCL ("    :set count (\$count +1);")
  526. +  $addCL ("    :if (\$count = 40) do={")
  527. +  $addCL ("      :log warning \"DefConf: Unable to find wireless interface(s)\"; ")
  528. +  $addCL ("      /ip address add address=192.168.88.1/24 interface=ether1 comment=\"defconf\";")
  529. +  $addCL ("      /quit")
  530. +  $addCL ("    }")
  531. +  $addCL ("    :delay 1s;")
  532. +  $addCL ("  };")
  533. +} else={
  534. +    # wait wlans
  535. +  $addCL ("  :local count 0;")
  536.    $addCL ("  :while ([/interface wireless print count-only] < $numWlans) do={ ")
  537.    $addCL ("    :set count (\$count +1);")
  538.    $addCL ("    :if (\$count = 40) do={")
  539. @@ -1487,8 +1613,13 @@
  540.        $addDL "#|     IP on sfp1:    192.168.88.1/24;"
  541.        $addCL ("/ip address add address=192.168.88.1/24 interface=sfp1 comment=\"defconf\";")
  542.      } else={
  543. -      $addDL "#|     IP on ether1:    192.168.88.1/24;"
  544. -      $addCL ("/ip address add address=192.168.88.1/24 interface=ether1 comment=\"defconf\";")
  545. +      if ($lanPort != "bridge") do={
  546. +        $addDL ("#|     IP on $lanPort:    192.168.88.1/24;")
  547. +        $addCL ("/ip address add address=192.168.88.1/24 interface=$lanPort comment=\"defconf\";")
  548. +      } else={
  549. +          $addDL "#|     IP on ether1:    192.168.88.1/24;"
  550. +          $addCL ("/ip address add address=192.168.88.1/24 interface=ether1 comment=\"defconf\";")
  551. +      }
  552.      }
  553.    }
  554.  }
  555. @@ -1525,10 +1656,10 @@
  556.    } else={
  557.      :if ($numWlans > 0) do={
  558.        :if ($numWlans > 1) do={
  559. -        [$setWlan ifc="wlan1" mode="ap-bridge" frequency=$frequency wProto=$wProto distance=$distance installation=$installation]
  560. -        [$setWlan ifc="wlan2" mode="ap-bridge" frequency=$frequency wProto=$wProto distance=$distance installation=$installation]
  561. +        [$setWlan ifc=("$"wlanPrefix"1") mode=$wlanMode frequency=$frequency wProto=$wProto distance=$distance installation=$installation]
  562. +        [$setWlan ifc=("$"wlanPrefix"2") mode=$wlanMode frequency=$frequency wProto=$wProto distance=$distance installation=$installation]
  563.        } else={
  564. -        [$setWlan ifc="wlan1" mode="ap-bridge" frequency=$frequency wProto=$wProto distance=$distance installation=$installation]
  565. +        [$setWlan ifc=("$"wlanPrefix"1") mode=$wlanMode frequency=$frequency wProto=$wProto distance=$distance installation=$installation]
  566.        }
  567.      }
  568.    }
  569. @@ -1668,10 +1799,10 @@
  570.    } else={
  571.      :if ($numWlans > 0) do={
  572.        :if ($numWlans > 1) do={
  573. -        [$setWlan ifc="wlan1" mode="ap-bridge" frequency=$frequency wProto=$wProto distance=$distance secChannel=$secondaryChannel installation=$installation]
  574. -        [$setWlan ifc="wlan2" mode="ap-bridge" frequency=$frequency wProto=$wProto distance=$distance secChannel=$secondaryChannel installation=$installation]
  575. +        [$setWlan ifc=("$"wlanPrefix"1") mode=$wlanMode frequency=$frequency wProto=$wProto distance=$distance secChannel=$secondaryChannel installation=$installation]
  576. +        [$setWlan ifc=("$"wlanPrefix"2") mode=$wlanMode frequency=$frequency wProto=$wProto distance=$distance secChannel=$secondaryChannel installation=$installation]
  577.        } else={
  578. -        [$setWlan ifc="wlan1" mode="ap-bridge" frequency=$frequency wProto=$wProto distance=$distance secChannel=$secondaryChannel installation=$installation]
  579. +        [$setWlan ifc=("$"wlanPrefix"1") mode=$wlanMode frequency=$frequency wProto=$wProto distance=$distance secChannel=$secondaryChannel installation=$installation]
  580.        }
  581.      }
  582.    }
  583. @@ -1840,7 +1971,26 @@
  584.  
  585.  $addCL (" /interface bonding remove [find comment=\"defconf\"]")
  586.  
  587. -:if ($wirelessEnabled = 1) do={
  588. +:if ($wirelessEnabled = 1 && $usingWifiwave = 1) do={
  589. +  # reset wireless
  590. +  :if ($numWlans > 0) do={
  591. +    :for i from=1 to=$numWlans do={
  592. +      $addCL (" /interface wifiwave2 reset wifi$i")
  593. +    }
  594. +
  595. +    :if ($needWpsSync=1) do={
  596. +      $addCL (" /interface wifiwave2 reset wifi3")
  597. +    }
  598. +  }
  599. +  # reset WIL
  600. +  :if ($numWils > 0) do={
  601. +    $addCL (" /interface w60g station remove [find comment=\"defconf\"]")
  602. +    :for i from=1 to=$numWils do={
  603. +      $addCL (" /interface w60g reset-configuration wlan60-$i")
  604. +    }
  605. +  }
  606. +} else={
  607. +  :if ($wirelessEnabled = 1 && $usingWifiwave = 0) do={
  608.    $addCL (" /interface wireless cap set enabled=no interfaces=\"\" caps-man-addresses=\"\"")
  609.    # reset wireless
  610.    :if ($numWlans > 0) do={
  611. @@ -1868,7 +2018,9 @@
  612.    $addCL ("  /caps-man manager interface set [ find default=yes ] forbid=no")
  613.    $addCL ("  /caps-man provisioning remove [find comment=\"defconf\"]")
  614.    $addCL ("  /caps-man configuration remove [find comment=\"defconf\"]")
  615. +  }
  616.  }
  617. +
  618.  $addCL ("}")
  619.  $addCL ":log info Defconf_script_finished;"
  620.  $addCL ":set defconfMode;"
  621. @@ -1916,6 +2068,10 @@
  622.  :set dhcpEnabled;
  623.  :set lteDhcp;
  624.  :set wirelessEnabled;
  625. +:set usingWifiwave;
  626. +:set wlanPrefix;
  627. +:set wlanMode;
  628. +
  629.  :set ipv6Enabled;
  630.  
  631.  :set isPCIneeded;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement