webfig is not an option. console is better. But still, there is situations where a scrollbar is useful. I know you want to have a change in the scanlist menu in 6.x - Put in lists. we use quite big scripts to auto configure units, and was able to change scripts between hw changes earlier. Nowdays, a lot of the "old" features, is changed, and make some trobble to Our system. Scanlist as one thing. Nowdays there are quite a lot change in SW to same HW. We try to have easy scripts, configuring the radioes, but now we have to bemore sure about what HW is used, and what SW is to what HW. Its not that easy to implement without some knowlege anymore.
I miss following:
VAP in nv2
Scrollbar - or the frequency list as a list like old ros.
some old parameterslike ack-timeout
Use of PCI-info
To explane a bit deeper, here are some of the config from script who make trobble:
In 3.x
ros code
## [ myadmin tunnel ]
#
:global mmid 266
:global mmtunpass yyyyyyy
:global mmreadnam yyyyyyyy
:global mmpasswrd Eyyyyyyyyy
:global mmradpass yyyyyyyyy
:global mmtunbrkr xx.xxx.xx.130
## [ provider ]
#
:global pnsdomain xxxxxxxx.no
:global community xxxxxxxx
:global country norway,+01:00,Europe/Oslo
:global ifwepcode xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:global mgnetwerx 10.0.0.0/8,172.16.0.0/12
:global admpasswd xxxxxxxxxxxxx
:global ifwlink 20
:global ifslink 5180,5750,5770,5790,5810,5830,5850,5870,5890
:global ifw5ghz 10
:global ifs5ghz 5390,5410,5430,5450,5470,5490,5510,5530,5550,5570,5590,5610,5630,5650,5670,5690
:global ifw2ghz 10
:global ifs2ghz 2409,2429,2414,2434,2419,2439,2424,2444,2449,2469,2454,2474,2459,2479,2464,2484
:global trustnets [ :toarray "" ]
## [ calculations ]
#
:global mmaddress ( 172.16.2.0 + $mmid )
:global mminsaddr ( 172.24.2.0 + $mmid )
:global mgnetsize ( ( 0.0.0.1 << 8 ) - 0.0.0.0 )
:global mgnetsize 256
:global mynetwork ( ( 10.0.0.0 & ( 255.255.255.255 << 8 ) ) + 65536 * $LID + $UID * 256 )
:global myaddress ( $mynetwork + 1 )
:global ifnames [ :toarray none,Link,Left,Right,Sone4,Link2,Sone6,Sone7 ]
:global ifnetsize ( $mgnetsize / [ :len $ifnames ] )
:global ifbitmask ( 31 - ( 32 / [ :len $ifnames ] ) )
:global ifband 5,5,5,2,5,5,5,5
:global ifpci 00:00.0
:global ifpcialt ""
:global ifchannel "0"
:if ( [ :pick $product 0 ] = "SL" && [ :pick $product 1 ] = "5424" ) do={ :global ifnames none,Link,Left,Right,Link2,Sone5,Sone6,Sone7; :global ifpci 05:0f.0,05:0d.0,05:09.0,05:0b.0; :global ifband 5,5,5,5,5,5,5,5 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "5424-IP54" && ( [ :pick $product 2 ] = "3" || [ :pick $product 2 ] = "4" ) ) do={ :global ifpci 00:05.0,00:0a.0,00:0b.0,00:04.0 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "5424-IP54" && [ :pick $product 2 ] = "2" ) do={ :global ifpci 00:05.0,00:0a.0,00:0b.0 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "5424-IP54" && [ :pick $product 2 ] = "5" ) do={ :global ifpci 00:12.0,00:14.0,00:13.0 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "5424" && [ :pick $product 2 ] = "6" ) do={ :global ifpci 00:12.0,00:14.0,00:13.0 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "5424" && [ :pick $product 2 ] = "7" ) do={ :global ifpci 00:12.0,00:14.0,00:13.0 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "5424-IP24" && [ :pick $product 2 ] = "1" ) do={ :set ifpci 00:04.0,00:0a.0,00:0b.0; :set ifband 5,2,2; :set ifpcialt 00:05.0,00:0a.0,00:0b.0 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "2414-IP24" && [ :pick $product 2 ] = "1" ) do={ :set ifpci 00:11.0,0,0,00:0d.0; :set ifband 2,2,2,2 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "5418-IP54" && [ :pick $product 2 ] = "1" ) do={ :set ifpci 00:11.0,0,0,00:0d.0; :set ifband 5,2,2,2 }
:if ( [ :pick $product 0 ] = "PM" && [ :pick $product 1 ] = "5418-IP24" && [ :pick $product 2 ] = "1" ) do={ :set ifpci 00:11.0,0,0,00:0d.0; :set ifband 5,5,5,5 }
:if ( [ :pick $product 0 ] = "PP" && [ :pick $product 1 ] = "5418" && [ :pick $product 2 ] = "4" ) do={ :set ifpci 00:01.0; :set ifpcialt 00:02.0; :set ifband 5 }
:if ( [ :pick $product 0 ] = "PP" && [ :pick $product 1 ] = "5424" && ( [ :pick $product 2 ] = "1" || [ :pick $product 2 ] = "3" || [ :pick $product 2 ] = "4" ) ) do={ :set ifpci 00:05.0 }
:if ( [ :pick $product 0 ] = "PP" && [ :pick $product 1 ] = "5424" && [ :pick $product 2 ] = "1XR" ) do={ :set ifpci 00:01.0 }
:if ( [ :pick $product 0 ] = "PP" && [ :pick $product 1 ] = "5424" && [ :pick $product 2 ] = "5SR" ) do={ :set ifpci 00:0c.0 }
:if ( [ :pick $product 0 ] = "PP" && [ :pick $product 1 ] = "5424" && [ :pick $product 2 ] = "5" ) do={ :global ifpci 00:12.0 }
:if ( [ :pick $product 0 ] = "PP" && [ :pick $product 1 ] = "5424" && [ :pick $product 2 ] = "6" ) do={ :global ifpci 00:12.0 }
:if ( [ :pick $product 0 ] = "PP" && [ :pick $product 1 ] = "5424" && [ :pick $product 2 ] = "7" ) do={ :global ifpci 00:12.0,0,0,00:14.0; :set ifband 5,2,2,2,2,2,2 }
:if ( [ :pick $product 0 ] = "WL" && [ :pick $product 1 ] = "1000" && [ :pick $product 2 ] = "1" ) do={ :set ifpci 00:0e.0,05:00.0,01:00.0; :set ifband 5,2,2 }
:if ( [ :pick $product 0 ] = "PX" && [ :pick $product 1 ] = "2400" [ :pick $product 2 ] = "1" ) do={ :set ifpci 00:00.0,00:00.0,00:00.0,00:0c.0; :set ifband 2,2,2,2 }
:global pkg [ :toarray "advanced-tools,ppp,routerboard,security,system,wireless" ]
##################
/ interface wireless {
:foreach i in=[ find ] do={ set $i security-profile=default }
:foreach x in=[ find interface-type=virtual-AP ] do={ remove $x }
:foreach i in=[ find ] do={
:local ifn [ :find $ifpci [ info get $i pci-info ] ]
:local ifa ( $mynetwork + ( $ifnetsize * $ifn ) + 1 )
:local ifs $ifslink; :local ifb [ :pick 5ghz-turbo,5ghz,5ghz-10mhz,5ghz-5mhz [ :find 40,20,10,5 $ifwlink ] ];
:if ( [ :tonum [ :pick $ifband $ifn ] ] = 2 ) do={ :set ifs $ifs2ghz; :set ifb [ :pick 2.4ghz-g-turbo,2.4ghz-onlyg,2.4ghz-b/g,2.4ghz-b,2ghz-10mhz,2ghz-5mhz [ :find 40,22,20,21,10,5 $ifw2ghz ] ] }
:if ( $ifn > 1 && [ :tonum [ :pick $ifband $ifn ] ] = 5 ) do={ :set ifs $ifs5ghz; :set ifb [ :pick 5ghz-turbo,5ghz,5ghz-10mhz,5ghz-5mhz [ :find 40,20,10,5 $ifw5ghz ] ] }
set $i name=[ :pick $ifnames $ifn ] frequency-mode=superchannel mode=ap-bridge ssid=$ifa radio-name=$ifa area=$ifa band=$ifb frequency=[ :tonum [ :pick [ :toarray $ifs ] 0 ] ] scan-list=$ifs country=[ :pick $country 0 ] security-profile=default hide-ssid=yes default-forwarding=no default-authentication=yes periodic-calibration=enabled preamble-mode=long proprietary-extensions=pre-2.9.25 rate-set=default ack-timeout=dynamic arp=enabled supported-rates-b="" basic-rates-b="" supported-rates-a/g=18Mbps basic-rates-a/g=18Mbps disabled=no
:if ( $ifn > 1 ) do={ add name=( "u" . [ :pick $ifnames $ifn ] ) master-interface=$i ssid=INSTALL area=$ifa arp=disabled default-forwarding=no proprietary-extensions=pre-2.9.25 hide-ssid=yes security-profile=default disabled=[ get $i disabled ] } else={ set $i disabled=no }
}
wds { :foreach i in=[ find dynamic=no ] do={ set $i arp=enabled disable-running-check=no } }
security-profiles { :foreach x in=[ find ] do={ :if ( $x != "*0" ) do={ remove $x } }; set default mode=[ :pick none,static-keys-required [ :pick 0,1,1,1,1,1 [ :find 0,5,13,32,64 [ :len $ifwepcode ] ] ] ] static-algo-0=[ :pick { "none"; "40bit-wep"; "104bit-wep"; "aes-ccm"; "tkip" } [ :find 0,5,13,32,64 [ :len $ifwepcode ] ] ] static-key-0=$ifwepcode static-sta-private-algo=[ :pick none,40bit-wep,104bit-wep,aes-ccm,tkip [ :find 0,5,13,32,64 [ :len $ifwepcode ] ] ] static-sta-private-key=$ifwepcode static-transmit-key=key-0 group-ciphers="" wpa-pre-shared-key="" wpa2-pre-shared-key="" tls-mode=no-certificates tls-certificate=none static-algo-1=none static-key-1="" authentication-types="" unicast-ciphers="" static-algo-2=none static-key-2="" static-algo-3=none static-key-3="" radius-mac-authentication=no group-key-update=5m; add name=none mode=none }
}
###################################
Just some part of code.
Same unit in 2.9.xx
ros code
## [ unit specific ]
#
:global product PM,5424-IP54,4
:global LID 1
:global UID 3
:global NID 1
:global LOCNAME xxxxxxxxxxxx
:global pppoepass xxxxxxxxxx
:global ipbridge xxx.xxx.xxx.xxx.22
## [ myadmin tunnel ]
#
:global mmid 266
:global mmtunpass yyyyyyy
:global mmreadnam yyyyyyyy
:global mmpasswrd Eyyyyyyyyy
:global mmradpass yyyyyyyyy
:global mmtunbrkr xx.xxx.xx.130
## [ provider ]
#
:global pnsdomain xxxxxxxx.no
:global community xxxxxxxx
:global country norway,+01:00,Europe/Oslo
:global ifwepcode xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:global mgnetwerx 10.0.0.0/8,172.16.0.0/12
:global admpasswd xxxxxxxxxxxxx
:global ifwlink 20
:global ifslink 5180,5750,5770,5790,5810,5830,5850,5870,5890
:global ifw5ghz 10
:global ifs5ghz 5390,5410,5430,5450,5470,5490,5510,5530,5550,5570,5590,5610,5630,5650,5670,5690
:global ifw2ghz 10
:global ifs2ghz 2409,2429,2414,2434,2419,2439,2424,2444,2449,2469,2454,2474,2459,2479,2464,2484
## [ calculations ]
#
:global mmaddress ( 172.16.2.0 + $mmid )
:global mminsaddr ( 172.24.2.0 + $mmid )
:global mgnetsize ( ( 0.0.0.1 << 8 ) - 0.0.0.0 )
:global mynetwork ( ( 10.0.0.0 & ( 255.255.255.255 << 8 ) ) + 65536 * $LID + $UID * 256 )
:global myaddress ( $mynetwork + 1 )
:global ifnames none,Link,Left,Right,Sone4,Link2,Sone6,Sone7
:global ifnetsize ( $mgnetsize / [ :len $ifnames ] )
:global ifbitmask ( 31 - ( 32 / [ :len $ifnames ] ) )
:global ifband 5,5,5,2,5,5,5,5
:global ifpci 00:00.0
:global ifpcialt ""
:if ( [ :pick $product 0 ] = SL && [ :pick $product 1 ] = 5424 ) do={ :global ifnames none,Link,Left,Right,Link2,Sone5,Sone6,Sone7; :global ifpci 05:0f.0,05:0d.0,05:09.0,05:0b.0; :global ifband 5,5,5,5,5,5,5,5 }
:if ( [ :pick $product 0 ] = PM && [ :pick $product 1 ] = 5424\-IP54 && ( [ :pick $product 2 ] = 3 || [ :pick $product 2 ] = 4 ) ) do={ :global ifpci 00:05.0,00:0a.0,00:0b.0,00:04.0 }
:if ( [ :pick $product 0 ] = PM && [ :pick $product 1 ] = 5424\-IP54 && [ :pick $product 2 ] = 2 ) do={ :global ifpci 00:05.0,00:0a.0,00:0b.0 }
:if ( [ :pick $product 0 ] = PM && [ :pick $product 1 ] = 5424\-IP24 && [ :pick $product 2 ] = 1 ) do={ :set ifpci 00:04.0,00:0a.0,00:0b.0; :set ifband 5,2,2; :set ifpcialt 00:05.0,00:0a.0,00:0b.0 }
:if ( [ :pick $product 0 ] = PM && [ :pick $product 1 ] = 2414\-IP24 && [ :pick $product 2 ] = 1 ) do={ :set ifpci 00:11.0,0,0,00:0d.0; :set ifband 2,2,2,2 }
:if ( [ :pick $product 0 ] = PM && [ :pick $product 1 ] = 5418\-IP54 && [ :pick $product 2 ] = 1 ) do={ :set ifpci 00:11.0,0,0,00:0d.0; :set ifband 5,2,2,2 }
:if ( [ :pick $product 0 ] = PM && [ :pick $product 1 ] = 5418\-IP24 && [ :pick $product 2 ] = 1 ) do={ :set ifpci 00:11.0,0,0,00:0d.0; :set ifband 5,5,5,5 }
:if ( [ :pick $product 0 ] = PP && [ :pick $product 1 ] = 5418 && [ :pick $product 2 ] = 4 ) do={ :set ifpci 00:01.0; :set ifpcialt 00:02.0; :set ifband 5 }
:if ( [ :pick $product 0 ] = PP && [ :pick $product 1 ] = 5424 && ( [ :pick $product 2 ] = 1 || [ :pick $product 2 ] = 3 || [ :pick $product 2 ] = 4 ) ) do={ :set ifpci 00:05.0 }
:if ( [ :pick $product 0 ] = PP && [ :pick $product 1 ] = 5424 && [ :pick $product 2 ] = 1XR ) do={ :set ifpci 00:01.0 }
:if ( [ :pick $product 0 ] = PP && [ :pick $product 1 ] = 5424 && [ :pick $product 2 ] = 5SR ) do={ :set ifpci 00:0c.0 }
:if ( [ :pick $product 0 ] = WL && [ :pick $product 1 ] = 1000 && [ :pick $product 2 ] = 1 ) do={ :set ifpci 00:0e.0,05:00.0,01:00.0; :set ifband 5,2,2 }
:global pkg [ :toarray advanced-tools,ntp,ppp,routerboard,security,system,wireless ]
/ system package { :foreach l in=yes do={ :set l [ :toarray "" ]; :foreach p in=[ find ] do={ :set l ( $l . [ get $p name ] ) }; :foreach p in=$pkg do={ :if ( [ :typeof [ :find $l $p ] ] = nothing ) do={ :while yes do={ :put ( required\_package\_missing\_ . $p ); :delay 500ms } } }; :foreach p in=$l do={ :if ( [ :typeof [ :find ( $pkg . routeros\-rb500 . routeros\-x86 ) $p ] ] = num ) do={ enable $p } else={ disable $p } }; :foreach p in=[ find ] do={ :if ( [ :len [ get $p scheduled ] ] > 0 ) do={ :for c from=5 to=0 do={ :put ( package\_scheduled\:\_rebooting\_in\_ . $c ); :delay 1s }; / system reboot } } } } .. ..
/ system license { :if ( [ :typeof [ :find [ get features ] extra-channels ] ] = nothing ) do={ :while ( yes ) do={ :put extra-channels\_license\_required!; :delay 1s } } }
/ interface wireless info { :if ( $ifpci = 00:00.0 || $ifpci = "" ) do={ :foreach m in=unknown\_\$product\_definition do={ :log error $m; :while(yes) do={ :put $m; :delay 250ms } } }; :foreach i in=[ find ] do={ :if ( [ :typeof [ get $i pci-info ] ] != nothing && [ :typeof [ :find $ifpci [ get $i pci-info ] ] ] != num && [ :len $ifpcialt ] != 0 ) do={ :set ifpci $ifpcialt } }; :foreach i in=[ find ] do={ :if ( [ :typeof [ get $i pci-info ] ] != nothing && [ :typeof [ :find $ifpci [ get $i pci-info ] ] ] != num ) do={ :foreach m in=error\_hardware\_does\_not\_match\_\$product do={ :log error $m; :while(yes) do={ :put $m; :delay 250ms } } } }; :foreach p in=$ifpci do={ :if ( $p != 0 && [ :len [ find pci-info=$p ] ] = 0 ) do={ :foreach m in=error\_\$product\_does\_not\_match\_hardware do={ :log error $m; :while(yes) do={ :put $m; :delay 250ms } } } } }
:set ifpci ( [ :toarray 0 ] . $ifpci ); :while( [ :len $ifpci ] < 8 ) do={ :set ifpci ( $ifpci . 0 ) }
:set ifchannel ( [ :toarray 0 ] . $ifchannel ); :while( [ :len $ifchannel ] < 8 ) do={ :set ifchannel ( $ifchannel . 0 ) }
:set ifband ( [ :toarray 0 ] . $ifband ); :while( [ :len $ifband ] < 8 ) do={ :set ifband ( $ifband . 0 ) }
#
If someone actualy read this, you will se a big change in config. Its same change between 3.x and 4.x, 4.x and 5.x and 5.x and 6.x. The change in config is just the 4 og 5 parameter in first list, but script needs so much different config between changes. I cannot have the name the "old way" since a "regular installer" dont know is the -4 or-5 6,7,8,9 etc is 4.x 5.x etc.
There might be some way to do this, but i have almout just stoped to use to much time to change config in script. Install as much as possible in old ros, and Upgrade after scripting. config to 5.x work almoust in 6.x, but the scanlist parameteris a pain. Or just make this simple- Make scrollbar.
(im sure this is so little Programming from Mikrotik needed. But soo much channging in scripts just to change this in 6.x.
Edit : Nice scroll in this post to?