Community discussions

MikroTik App
 
mwm1x
just joined
Topic Author
Posts: 1
Joined: Wed Jul 05, 2023 2:09 am

problems with update 7.10+ script does not work

Mon Oct 30, 2023 10:02 pm

Hello everyone on the forum, I'm racking my brain to make this script work on routers 7.10+, could you please help me?

#

# Test:       RouterOS version 6.34.3
# Descripci?n:  Scan Hotspot Users To Remove Them From Running Or Paused Time According To Their Expiration Time!
# Version:        6.0
#
   :local AF [/system clock get date]
   :local AH [/system clock get time]
   :local AD [ :pick $AF 4 6 ]
   :local AM [:pick $AF 0 3]
   :local AY [:pick $AF 7 11]
   :local OTB false
        : local SMD (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
   :local SDT 0
        : local SM ("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")
        : local SBY (2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096)
   :if ( [:len [:find $SBY $AY] ] > 0 ) do {
      :set $SMD ( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 )
  }\
   else {
      :set $SMD ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 )
   }
   :local SMNO ([:find $SM $AM])
   :local SDNO ([:pick $SMD $SMNO])
   :for i from=0 to=11 do={
      :set SDT ( $SDT + [ :pick $SMD $i ] )
   }
   :foreach u in=[/ip hotspot user find where disabled=no ] do={
      :local OU [/ip hotspot user get $u name]
      :local LP [/ip hotspot user get $u profile]
      :local EUL [/ip hotspot user get $u limit-uptime]
      :local EU [/ip hotspot user get $u uptime]
      :local TMC [/ip hotspot user get $u comment]
      :local EULT [:len $EUL]
      :local TMCT [:len $TMC]
      :local d 0
      :local w 0
      :local h ""
      :local TT 0
      :if ([:len [:find $TMC "Tt:"]] !=0 ) do {
         :set $TT [:pick $TMC ([:find $TMC "Tt:"] + 3)  (([:find $TMC "Tt:"] + 3) + 1) ]
         :if ($TT = 1) do {
         }
         :if ($TT = 2) do {
            :set $EUL [:pick $TMC ( [:find $TMC "Tf:"] + 3)  [:find $TMC ":fT"]  ]
            :set $EULT [:len $EUL]
         }
      }
      :if ([:len [:find $TMC "Fc:"]]!=0 && $TT!=0 && $EULT!=0 && $TMCT!=0 && [:len [:find $TMC "Fl:"]]!=0) do {
         :local OIF [:pick [:pick $TMC ([:find $TMC "Fl:"] + 3)  (([:find $TMC "Fl:"] + 3) + 20) ] 0 11]
         :local OIH [:pick [:pick $TMC ([:find $TMC "Fl:"] + 3)  (([:find $TMC "Fl:"] + 3) + 20) ] 12 20]
         :local OID [ :pick $OIF 4 6 ]
         :local OIM [:pick $OIF 0 3]
         :local OIY [:pick $OIF 7 11]
         :local OIMNO ([:find $SM $OIM])
         :local OIMDNO ([:pick $SMD $OIMNO])
         :local SHS ($OIH+$EUL)
         :if ([:len $SHS]=8) do {
           :set $d 0
           :set $h $SHS
         }
         :if ( [:len $SHS] = 10 || [:len $SHS] = 11 ) do {
            :if ([:len [:find $SHS "w"]]!=0) do {
               :set $w [:pick $SHS 0 [:find $SHS "w"]]
               :set $d ($w*7)
               :set $h [:pick $SHS ([:find $SHS "w"] + 1) 10]
            }
            :if ([:len [:find $SHS "d"]]!=0) do {
               :set $d [:pick $SHS 0 [:find $SHS "d"]]
               :set $h [:pick $SHS ([:find $SHS "d"] + 1) 10]
            }
         }
         :if ([:len $SHS]=12) do {
            :if ([:len [:find $SHS "w"]]!=0) do {
               :set $w [:pick $SHS 0 [:find $SHS "w"]]
               :set $d ($w*7)
            }
            :if ([:len [:find $SHS "d"]]!=0) do {
               :set $d ($d + [:pick $SHS 2  [:find $SHS "d"]])
            }
            :set $h [:pick $SHS ([:find $SHS "d"] + 1) 12]
         }
         :if ([:len $SHS]=13) do {
            :if ([:len [:find $SHS "w"]]!=0) do {
               :set $w [:pick $SHS 0 [:find $SHS "w"]]
               :set $d ($w*7)
            }
            :if ([:len [:find $SHS "d"]]!=0) do {
               :set $d ($d + [:pick $SHS 3 [:find $SHS "d"]])
            }
            :set $h [:pick $SHS ([:find $SHS "d"]+1) 13]
         }
         :local OIFHDT 0
         :local ELCDT 0
         :if ( $OIMNO = 0 ) do {
              :set $OIFHDT ( $OIFHDT + $OID )
          }\
          else {
              :set $OIMNO ($OIMNO - 1)
              :for i from=0 to=$OIMNO do {
                   :set $OIFHDT ($OIFHDT  +  [ :pick $SMD $i ])
               }
              :set $OIFHDT ( $OIFHDT + $OID )
         }
         :set $ELCDT ($OIFHDT + $d)
         :local OVMNO 0
         :local OVM ""
         :local OVD 0
         :local OVY 0
        : local OVF
        : local OVH
         :local AS 0
         :local i 0
         :if ($d>0) do {
            :if ($ELCDT>$SDT) do {
               :set $AS 0
               :set $i 0
               :local SRD ($ELCDT-$SDT)
               :set $OVY ($OIY+1)
               :if ( [:len [:find $SBY $OVY] ] > 0 ) do {
                  :set $SMD ( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 )
               }\
               else {
                  :set $SMD ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 )
               }
               :do {
                  :set $AS ($AS + [:pick $SMD $i])
                  :set $i ($i+1)
               } while ($AS<$SRD)
               :set $OVMNO ($i-1)
               :set $OVD (  [:pick $SMD $OVMNO] - ( $AS - $SRD ) )
               :set $OVM [:pick $SM $OVMNO]
               :if ( [:len $OVD]=1 ) do {
                  :set $OVD ("0"."$OVD")
               }
               :set $OVF ("$OVM"."/"."$OVD"."/"."$OVY")
               :set $OVH ($h)
            }\
            else {
               do {
                  :set $AS ($AS +  [:pick $SMD $i])
                  :set $i ($i+1)
               } while ($AS<$ELCDT)
               :set $OVMNO ($i-1)
               :set $OVD (  [:pick $SMD $OVMNO] - ( $AS - $ELCDT ) )
               :set $OVM [:pick $SM $OVMNO]
               :set $OVY ($OIY)
               :if ( [:len $OVD]=1 ) do {
                  :set $OVD ("0"."$OVD")
               }
               :set $OVF ("$OVM"."/"."$OVD"."/"."$OVY")
               :set $OVH ($h)
            }
         }\
         else {
            :set $OVF ($OIF)
            :set $OVH ($h)
         }
         :if ([:len [:find $TMC "Fe:"]]=0) do {
            :set $TMC [/ip hotspot user get $u comment]
            :set $TMC ( $TMC."Fe:".$OVF." ".$OVH."|" )
            [/ip hotspot user set $u comment=$TMC ]
         }
         :local DEL false
         :if ( [:pick $AF 7 11] > [:pick $OVF 7 11] ) do {
            :set $DEL (true)
         }\
         else {
            :if ( [:pick $AF 7 11] = [:pick $OVF 7 11] ) do {
               :if ( [:find $SM [:pick $AF 0 3]] > [:find $SM [:pick $OVF 0 3]] ) do {
                  :set $DEL (true)
               }\
               else {
                  :if ( [:find $SM [:pick $AF 0 3]] = [:find $SM [:pick $OVF 0 3]] ) do {
                     :if ( [ :pick $AF 4 6 ] > [ :pick $OVF 4 6 ] ) do {
                        :set $DEL (true)
                     }\
                     else {
                        :if ( [ :pick $AF 4 6 ] = [ :pick $OVF 4 6 ] ) do {
                           :if ($AH>=$OVH) do {
                              :set $DEL (true)
                           }
                        }
                     }
                  }
               }
            }
         }
         :if ( $DEL = true ) do {
            :log info "Ficha Agotada: Removiendo Voucher: $OU"
            [ /ip hotspot user disable $u ]
            [ /ip hotspot active remove [find where user=$OU] ]
            [ /ip hotspot cookie remove [find where user=$OU] ]
         }
     }
   }
 
tdw
Forum Guru
Forum Guru
Posts: 1855
Joined: Sat May 05, 2018 11:55 am

Re: problems with update 7.10+ script does not work

Tue Oct 31, 2023 2:21 am

See viewtopic.php?t=196072 and modify the script accordingly
 
User avatar
rextended
Forum Guru
Forum Guru
Posts: 12014
Joined: Tue Feb 25, 2014 12:49 pm
Location: Italy
Contact:

Re: problems with update 7.10+ script does not work

Tue Oct 31, 2023 10:28 am

Ask the original author whose script you take?


Image


But what way is to program with all those abbreviations???

First you must explain what the script should do, is not clearly understandable at all. Just the twisted mind of the author (maybe) could fix it...

Who is online

Users browsing this forum: No registered users and 8 guests