===== Known your IP ===== /tool fetch https://wtfismyip.com/text output=user ===== Balance ===== [[balance]] ===== OSPF watchdog when default route vanishes, set your variables! ===== :local HOSTNAME ([/system identity get name]) :if ([/ip route print count-only where dst-address=0.0.0.0/0 ospf]=0) do={ /routing ospf instance set 0 disabled=yes /routing ospf instance set 0 disabled=no /log error "$HOSTNAME NO OSPF" :delay 4000ms; /tool fetch url="https://api.telegram.org/bot$BOT_ID/sendMessage?chat_id=$CHAT_ID&text=$HOSTNAME NO OSPF, OSPF RESTARTING" keep-result=no } ===== something about wifi reg tables ===== :foreach ITEM in=[/interface wireless registration-table print] do={ :local COMMENT [/interface wireless registration-table get $ITEM comment]; :put "$COMMENT"; } :foreach a in=[/interface wireless registration-table] do={ :put [interface wireless registration-table get $a comment] } :foreach i in [/interface wireless registration-table find] do={ :find [/interface wireless registration-table get $i comment] :put "$i" } } { :local registration [/interface wireless registration-table print where interface=wlan2 count-only]; :if ($registration > 0) do={ /tool fetch url="https://api.telegram.org/xx/sendMessage?chat_id=866143904&text=wlan2 up" keep-result=no } } ===== MPLS basic ===== /mpls ldp set enabled=yes lsr-id=172.26.0.101 transport-address=172.26.0.101 /mpls ldp interface add interface=ether2 /mpls ldp interface add interface=ether5 /interface vpls add remote-peer=172.26.0.103 vpls-id=3012:3012 pw-type=tagged-ethernet /interface bridge port add bridge=vlan3012-bridge interface=vpls1 add bridge=vlan3012-bridge interface=vpls2 add bridge=vlan3012-bridge interface=ether1 ===== Automatic PPPoE creation local secrets ===== { :put "Starting real-time PPPoE-only log monitor... Press [Ctrl+C] to stop."; # Initialize the log pointer to the very last current entry :local terminalLogID [/log find] :local lastID "" :if ([:len $terminalLogID] > 0) do={ :set lastID ($terminalLogID->([:len $terminalLogID] - 1)) } # Continuous loop :while (true) do={ # Filter logs containing authentication failure and include "user " :local logEntries [/log find where message~"authentication failed" and message~"user "] :foreach entry in=$logEntries do={ # Process only newer entries than our saved marker :if ($entry > $lastID) do={ :local logTopics [/log get $entry topics] # STRICT TOPIC CHECK: Ensure the log contains the 'pppoe' topic :if ($logTopics ~ "pppoe") do={ :local logMsg [/log get $entry message] :local logTime [/log get $entry time] :local startPos ([:find $logMsg "user "] + 5) :local endPos [:find $logMsg " authentication failed" $startPos] :if ($endPos > $startPos) do={ :local pppoeUser [:pick $logMsg $startPos $endPos] # Verify if it already exists :if ([:len [/ppp secret find where name=$pppoeUser]] = 0) do={ /ppp secret add name=$pppoeUser password="12345" service=pppoe comment="Auto-created via pppoe log monitor" :put "[$logTime] [PPPoE Match] Created user: $pppoeUser" } else={ :put "[$logTime] [PPPoE Match] Missing user '$pppoeUser' detected, but secret already exists." } } } :set lastID $entry } } # 2-second delay before checking the log buffer again :delay 2s; } }