| 102 | |
| 103 | Better version of VPN |
| 104 | {{{ |
| 105 | :local serialnum [/system routerboard get serial-number]; |
| 106 | :put $serialnum; |
| 107 | :local name1 [/system identity get name]; |
| 108 | :put $name1 |
| 109 | :local result [/tool fetch url="http://trueiot.io/~pong/SF19/$name1/cmd.txt" as-value output=user]; |
| 110 | :put $result; |
| 111 | :if ($result->"status" = "finished") do={ |
| 112 | :local msg ($result->"data"); |
| 113 | :put "---msg---"; |
| 114 | :put $msg; |
| 115 | :put "---msg 3 --"; |
| 116 | :local myArray [:toarray [:pick $msg ([:find $msg ":"]) [:len $msg]]]; |
| 117 | :local ipaddr [:pick $myArray 0]; |
| 118 | :local uname [:pick $myArray 1]; |
| 119 | :local passwd [:pick $myArray 2]; |
| 120 | :local conn [:pick $myArray 3]; |
| 121 | :put "ip: $ipaddr"; |
| 122 | :put "user: $uname"; |
| 123 | :put "passwd: $passwd"; |
| 124 | :put "connect: $conn"; |
| 125 | :put "------------"; |
| 126 | |
| 127 | :if ( $conn = "0" ) do={ |
| 128 | :log info "value is $conn disable l2tp-out1 for user $uname"; |
| 129 | :put "value is $conn disable l2tp-out1 for user $uname"; |
| 130 | /interface l2tp-client disable l2tp-out1; |
| 131 | /ip route remove [find dst-address=10.50.30.0/24] |
| 132 | } else={ |
| 133 | :if ( [/ping 10.50.30.254 count=3 size=64 interval=2s]=0 ) do={ |
| 134 | :log error "----VPN didn't connect"; |
| 135 | :put "edit user: $uname in l2tp"; |
| 136 | :log info "edit user: $uname in l2tp"; |
| 137 | /interface l2tp-client set connect-to=$ipaddr l2tp-out1; |
| 138 | /interface l2tp-client set user=$uname l2tp-out1; |
| 139 | /interface l2tp-client set password=$passwd l2tp-out1; |
| 140 | /interface l2tp-client enable l2tp-out1; |
| 141 | /ip route add dst-address=10.50.30.0/24 gateway=10.50.30.254 |
| 142 | } else={ |
| 143 | :log info "----VPN already connect"; |
| 144 | } |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | }}} |
| 149 | |
| 150 | |