Home
Projekti
Download
O meni
Lang
HR EN

mod_sar

IME
mod_sar - apache2 modul koji radi kao output filter, njegova uloga je Search And Replace stringova pronađenih u sadržaju web stranica prije njihovog slanja klijentu.

KOMPAJLIRANJE
mod_sar se može kompajlirati koristeći apxs(8) ili ručno.

1. Kompajliranje koristeći apxs alata:
apxs -c mod_sar.c
Ako sve prođe dobro, pronaći ćete mod_sar.so u .libs direktoriju unutar direktorija u kojem ste pokrenuli apxs.

2. Ručno kompajliranje:
gcc -pthread -I/usr/include/httpd -c mod_sar.c
gcc -shared mod_sar.o -Wl,-soname -Wl,mod_sar.so -o mod_sar.so

Po potrebi modificirajte path do vašeg httpd include direktorija i ako sve prođe dobro, pronaći ćete mod_sar.so u vašem trenutnom direktoriju.

INSTALACIJA
mod_sar se može instalirati koristeći apxs(8) ili ručno.

1. Instaliranje korištenjem apxs alata:
Ova naredba će kompajlirati i instalirati vaš mod_sar module:
apxs -i -a -c mod_sar.c
Restartajte apache tako da ga prvo zaustavite i potom opet pokrenete:
apachectl stop
apachectl start


2. Ručno instaliranje mod_sar modula:
cp mod_sar.so /usr/lib/httpd/modules
chown root: /usr/lib/httpd/modules/mod_sar.so
chmod 755 /usr/lib/httpd/modules/mod_sar.so

Po potrebi modificirajte path do vašeg httpd modules direktorija.
Sada trebate modificirati vaš httpd.conf fajl. Pronađite u njemu hrpu LoadModule direktiva i dodajte vašu liniju ispod ostalih LoadModule direktiva:
LoadModule sar_module modules/mod_sar.so
Restartajte apache tako da ga prvo zaustavite i potom opet pokrenete:
apachectl stop
apachectl start


OPIS
mod_sar (kratica "sar" predstavlja Search And Replace) je apache2 module koji radi kao output filter. Njegova uloga je search and replace stringova pronađenih u sadržaju web stranica prije njihovog slanja klijentu. Ovisno o konfiguraciji, pretraživanje može biti case sensitive ili case insensitive. Dobar primjer iskoristivosti ovog modula je reverzni proxy.

Reverzni proxy je proxy ispred lokalnog servera, kojemu se sa Interneta može pristupiti samo kroz taj proxy. U nekim slučajevima takva konfiguracija se može efektivno iskoristiti za sprečavanje crva i drugih neželjenih gostiju ali najčešće samo predstavlja lažni sloj sigurnosti za one koji ne shvaćaju server - klijent komunikaciju.
Koji god razlog imate, za iskoristiv reverzni proxy morate riješiti dva problema: modifikaciju headera i modifikaciju sadržaja prije njegovog slanja klijentu.

1. Modifikacija headera
Modifikacija headera uopće nije problem. Može biti postignuta na dva načina.
Možete koristiti mod_proxy_http:
<IfModule mod_proxy.c>
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyRequests On
    ProxyPass / http://some-domain.local/
    ProxyPassReverse / http://some-domain.local/
    ProxyErrorOverride On
</IfModule>

Ili možete koristiti mod_rewrite:
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^/(.*) http://some-domain.local/$1 [P]
    RewriteOptions inherit
</IfModule>


2. Modifikacija sadržaja
Modifikacija headera će učiniti da svi relativni linkovi izgledaju kao da dolaze sa vanjskog servera umjesto sa lokalnog servera npr. some-domain.local sa kojeg zapravo dolazi. Ali ako lokalni server iza reverznog proxyja poslužuje stranice sa apsolutnim linkovima, morat će se modificirati sadržaj tih stranica u letu, korištenjem apache2 output filter mehanizma.

Postoje tri izbora: mod_proxy_html, mod_ext_filter i mod_sar.
Prvi koristi libxml2 i zbog toga nije dobar za namjene kao što je reverzni proxy. Na primjer, libxml2 će nanijeti kritična oštećenja HTML kodu u slučaju manjih greški u HTML-u kao što su na primjer ne zatvoreni navodnici. mod_proxy_html nasljeđuje to gadno ponašanje od libxml2 librarija kojeg koristi ali ako želite isprobati sami, možete pronaći taj modul na http://apache.webthing.com/mod_proxy_html
Sljedeći modul nije third party modul već dolazi sa apache2 paketom i može zadovoljiti potrebe reverznog proxya ali nije dobar za velika opterećenja i jače posjećene siteove zbog pozivanja vanjskih naredbi kod svakog HTTP requesta.
Primjer za korištenje mod_ext_filter modula:
<IfModule mod_ext_filter.c>
    ExtFilterDefine fixtext mode=output intype=text/html \
        cmd="/bin/sed s/some-domain\.local/some-domain\.com/g"
    <Location />
        SetOutputFilter fixtext
    </Location>
</IfModule>

I zadnji modul je ovaj čiju dokumentaciju upravo čitate: mod_sar. Pogledajte sekcije DIREKTIVE i PRIMJERI za upute o korištenju. mod_sar radi radi samo jednu jednostavnu stvar. Mijenja jedan string sa drugim, ovisno o konfiguraciji. Po potrebi može vršiti case insensitive pretraživanje. Testiran je pod velikim opterećenjem bez utjecaja na performance.

DOWNLOAD
mod_sar download

DIREKTIVE
SarStrings <search_string> <replace_string>
Ova direktiva zahtijeva dva parametra, traženi string i string kojim će traženi string biti zamijenjen ako bude pronađen. Uputno je stringove staviti u dvostruke navodnike.
Ova direktiva se može koristiti u server config i virtual host kontekstu.
SarCaseInsensitive <On|Off>
Ako se postavi na On, bit će primjenjivano case insensitive pretraživanje.
Default je Off.
Može se koristiti u server config i virtual host kontekstu.
SarVerbose <On|Off>
Ako se postavi na On, svaki put kad se mod_sar koristi kao filter, poruka će biti ispisana u apache error logovima.
Default je Off.
Može se koristiti u server config i virtual host kontekstu.

PRIMJERI
<IfModule mod_sar.c>
    AddOutputFilterByType sar_filter text/html
    SarStrings "http://some-domain.local" "http//some-domain.com"
    SarCaseInsensitive Off
    SarVerbose Off
</IfModule>


ZAHTJEVI
Apache-2.0.

KOMPATIBILNOST
Modul je testiran na Linuxu ali nema očitog razloga zbog kojeg ne bi radio i na drugim unix platformama za koje postoji apache2 podrška.
OS: Linux
compiler: gcc-2.9x, gcc-3.x
apache: apache-2.0.x

BUGOVI
Trenutna verzija mod_sar modula nema poznatih bugova.

DODATNA DOKUMENTACIJA
apxs(8), http://www.apache.org/

AUTORI
Josip Deanović djosip@linuxpages.org