[ zivanicd @ 13.11.2012. 19:03 ] @
Pozdrav,

vidim da mnoge interesuje kako da diskretno podsete korisnike na mikrotiku da duguju ili zele da im puste odredjenu reklamu u odredjenom periodu pa evo jednog lepog tutorijala. :)

Vec sam pisao o redirekcijama raznoraznim na web-proxy ali ta resenja su komplikovana i ne rade kako treba...

Ovo resenje radi kao sat i ne "ubija" CPU na mikrotiku i predvidjeno je za "obavestenje o neplacenom racunu". Slicno moze da se uradi za bilo koju reklamu ili redirekciju. Takodje moze istovremeno da radi za "upozorenje" i "reklamiranje".
Samo treba podesiti redirekciju u razliciti TCP port na web-proxyu.

1. Podesiti web-proxy za "upozorenje"
/ip proxy
set always-from-cache=no cache-administrator="Dejan Zivanic" cache-hit-dscp=4 \
cache-on-disk=no enabled=yes max-cache-size=none max-client-connections=\
2000 max-fresh-time=2m max-server-connections=2000 parent-proxy=0.0.0.0 \
parent-proxy-port=0 port=5555 serialize-connections=\
no src-address=212.200.113.190
/ip proxy access
add action=deny comment="upozorenje za dug" disabled=no local-port=5555 \
redirect-to=http://kerber.kladovonet.com/upozorenjee.html

2. U firewall-u napraviti listu IP adresa koje zele da se upozore (u slucaju reklame, odrediti cele klase)
/ip firewall address-list
add address=172.29.98.2 list=za_opomenu disabled=no
add address=172.29.102.182 list=za_opomenu disabled=no
...

2. Manglovati NOV WEB saobracaj "neupozorenih korisnika" u "stage1", kao i "stage1 neupozorenih korisnika" u "stage2" <-mozda je malo konfuzno ali ukapiracete o cemu se radi
/ip firewall mangle
add action=mark-connection chain=prerouting comment=OPOMENE connection-state=new disabled=no dst-port=80 new-connection-mark=opomena_st1 \
passthrough=yes protocol=tcp src-address-list=za_opomenu
add action=mark-connection chain=prerouting connection-mark=opomena_st1 disabled=no new-connection-mark=opomena_st2 passthrough=no \
src-address-list=!opomenut

3. Natovati "stage2" korisnike u web-proxy
/ip firewall nat
add action=redirect chain=dstnat comment="OPOMENA redirekt u proxy" connection-mark=opomena_st2 disabled=no dst-port=80 protocol=tcp src-address-list=\
!ne_opomena to-ports=5555

4. U INPUT chainu odrediti "vremenski interval" u kome ce korisnik da bude redirektovan u obavestenje (kod mene je na svakih 59 minuta)
/ip firewall input
add action=add-src-to-address-list address-list=opomenut address-list-timeout=59m chain=input comment=OPOMENUT connection-mark=opomena_st2 \
disabled=no

To je to :)

Mali tweak:
U stranici za redirekciju napraviti jednostavan javascript koji ce da uradi back u browseru (korisnik ce biti "obavesten" recimo 5-6 sekundi, a onda ce se automatski vratiti na stranicu gde je bio pre redirekcije").
Ovo je bitno jer mnoge ljude smara da klikcu na obavestenja.
Javascript:

<SCRIPT Language=JavaScript>
window.onload = function(){
window.setTimeout("history.back();", 8000); <------- ovde podesavate duzinu obavestenja.
};
</SCRIPT>

Nadam se da ce vam ovo biti korisno :)

Enjoy :)
[ Nickix9001 @ 13.11.2012. 21:56 ] @
Odlican tutorial, ovo sam trazio vec dugo vreme!!!

HVALA!!!
[ Vesa 77 @ 14.11.2012. 20:45 ] @
Svaka cast Zivanicu. Probam cim stignem! Imam nesto slicno, ali je ovo mnogo profesionalnije ! Bravo i veliko hvala
[ mtopic @ 14.11.2012. 21:48 ] @
Odlicna stvar! Probao sam i radi sve osim:

Citat:
zivanicd:

<SCRIPT Language=JavaScript>
window.onload = function(){
window.setTimeout("history.back();", 8000); <------- ovde podesavate duzinu obavestenja.
};
</SCRIPT>



nece da mi preusmeri na trazenu stranicu.
[ zivanicd @ 15.11.2012. 14:58 ] @
Ovaj kod trebas da stavis ispod META taga u HTML kodu, a iznad BODY-a.

Pogledaj kod ove stranice:

http://kerber.kladovonet.com/upozorenjee.html

Ako kliknes direktno sa ovog sajta, otvorice ti stranicu i za 8 sec ce da te vrati opet ovde :)

... ups :) Izgleda da nece jer se otvara novi prozor... ali sve radi... provereno :)

[ mtopic @ 15.11.2012. 15:37 ] @
Nece opet. Ne radi mi ni ova tvoja stranica, tj. nece da me vrati na prethodnu...
[ zivanicd @ 15.11.2012. 17:46 ] @
To ti je nesto do browsera. U GoogleCrome-u na OsX-u i Windozama radi. Pazi uvek mozes da napravis dugme BACK da klijent klikne ili ako se snalazis u HTML-u da uradis detekciju browsera pa za svaki browser da napravis java script za "back".

Sve u svemu ako te redirektuje u "info stranu" sve si lepo podesio. Sad samo da poradis na kodu "info stranice".

[ mtopic @ 15.11.2012. 17:56 ] @
Probao sam na vise browsera na dva kompa sa razlicitim OS ali isto stanje.
Nema veze, odradicu BACK button pa neka klikcu :)
Sve ostalo besprekorno radi.
Hvala u svakom slucaju!

P.S. Evo koda koji provereno radi na svim browserima i sistemima:
<script type='text/javascript'>
window.onload = function(){
window.setTimeout(function(){
window.history.back();
}, 5000);
};
</script>

[Ovu poruku je menjao mtopic dana 15.11.2012. u 22:51 GMT+1]
[ worthy @ 28.12.2012. 18:15 ] @
Probao sam cetvrtu stavku u mt terminalu i dobijam poruku bad command name add (line 1 column 1)
[ skrgahr @ 29.01.2013. 12:09 ] @
zelio bih ti samo skrenuti pozornost da ovo bas i ne radi uvijek kako treba jer nekad mangle rule markira konekciju,ta konekcija se "kao" redirekta,a korisnik ne bude redirektan. ako korisnik otvara novu konekciju prema nekoj stranici onda ga redirekta. ako vec surfa na toj stranici,pa otvori neki link,mangle to markira ali se ne redirekta.
vjerojatno je to radi toga sto i drugi programi koriste port 80. e sad,imate li koji nacin da se to rjesi?
meni na pamet pada da bi se napravila address lista sa stranicama koje korisnici najcesce posjecuju (facebook,google i sl.),pa da se u rule doda i dst-address-list.
drugi nacin koji mi pada na pamet je da kad se konekcija markira,korisnikovu ip adresu istovremeno baca u listu opomenutih i u listu "trenutno opomenuti" s timeoutom od 10-30 sec. za to vrijeme bi sav promet korisnika prema portu 80 redirektalo na proxy.

bi li koje rjesenje radilo?

[Ovu poruku je menjao skrgahr dana 29.01.2013. u 13:37 GMT+1]
[ zivanicd @ 31.01.2013. 18:09 ] @
Moje prvobitno resenje je bilo "content mark" i to je radilo bash to sto ti kazes... hvatalo facebook i google...
Ali to resenje malo ubija procesor (bar je ubijalo nas 1100AH).

Ja sam i napisao da ovo resenje nije 100% bulletproof :) ali radi posao za 90% klijenata. I pre ili kasnije svakom klijentu ce izleteti reklama/obavestenje.
[ skrgahr @ 02.02.2013. 09:30 ] @
rješio sam problem na drugi način,istovremeno ih baca i u drugu listu s timeoutom 30 sec,i za to vrijeme sav njihov promet prema dst-port 80 redirekta na proxy.
[ slobafrancuz @ 29.11.2013. 15:31 ] @
pozdrav ja pokusavam da podesim ovo ali mi ne ide ovo mi nije jasno (no src-address=212.200.113.190) ovde stavljas ip adresu servera gde ti je info stranica? ili vec
jer ja primer napravio cas stranicu na blogspot pa pokusavam tamo da preusmerim ali nece
[ zivanicd @ 29.11.2013. 19:45 ] @
jok. to je ip mikrotika... src adresa webproxy-a.
[ slobafrancuz @ 29.11.2013. 21:44 ] @
pa onda sam lepo odradio ali nece kod mene