salam kenal,

ane sedikit share script mikrotik yg ane buat barusan. 

kasusnya mungkin hampir sama terjadi dengan member2 lain, proxy server mati (down) atau crash. dengan script ini (misal) mikrotik dapat menyesuaikan NAT agar dialihkan ke proxy server atau tidak, atau dengan tujuan lainnya.

langsung aja Click here to enlarge

script name: checkproxy-run
Code:
### script name: checkproxy-run
### gunakan script untuk di-run pada scheduler anda

:global checkproxy "";
:global isfetched false;
:global loopcount 0;
:global stoploop false;

# jalankan script 'checkproxy-fetch' secara bersamaan untuk sinkronisasi
# tehnik ini sebagai error-handling pada perintah fetch, jika proxy server tidak dapat diakses (down)
:execute script=checkproxy-fetch

:while ( !stoploop ) do={
 # increment
 :set loopcount ($loopcount+1);
 
 # jika fetch sukses, maka hentikan loop
 if ( $isfetched ) do={
  :set stoploop true;
 }
 
 # jika loopcount mencapai maksimum, maka hentikan loop
 # ini pertanda bahwa fetch gagal dalam kurun waktu 10 detik
 if ( $loopcount > 10 ) do={
  :set stoploop true;
 }

 # beri loop jeda 1 detik
 :delay 1
 
}

# jika fetch sukses
:if ( $isfetched ) do={
 :if ( [:len $checkproxy] = 0 ) do={
  /log info "(proxy UP)"
  # silakan tambahkan rule-rule/script lain di sini jika proxy up
  # contoh: enable NAT ke proxy
 } else={
  /log info "(port open but unknown len)"
  # belum pernah menemui kasus pada kondisi ini :P
 }
} else={
 /log info "(proxy DOWN)"
 # silakan tambahkan rule-rule/script lain di sini jika proxy down
 # contoh: disable NAT ke proxy
}

script name: checkproxy-fetch
Code:
### script name: checkproxy-fetch
### sebagai script pendukung

:global checkproxy;
:global isfetched;

:set isfetched false;

# mikrotik: 192.168.50.1
# proxy server: 192.168.50.2
# fetch akan request file 'mikrotik_logo.png' pada web router mikrotik anda (http://192.168.50.1/mikrotik_logo.png) melalui proxy server
# jika 'mikrotik_logo.png' berhasil di-fetch, pertanda proxy server up
:set checkproxy [ /tool fetch address=192.168.50.2 port=3128 host=192.168.50.1 src-path=/mikrotik_logo.png mode=http keep-result=no ];

# jika fetch sukses, perintah di bawah ini akan di akses 
# sebaliknya jika gagal (proxy down/unreachable), perintah di bawah ini tidak akan diakses karena fetch error (menyatakan 'isfetched' akan selalu bernilai false)
:set isfetched true;
jadi untuk di-run secara periodik gunakan scheduler pada script checkproxy-run.

semoga dapat bermanfaat, silakan reply jika ada saran/kritik/pertanyaan.