Witam,
Tak sobie właśnie wydłubałem coś, co być może zainteresuje część z was. Ustrojstwo to umożliwia (domyślnie) podmianę reklam w Gadu-Gadu, jeśli użytkownik ma ustawioną opcję wyświetlania wiadomości administracyjnych. Przy odpowiednim skonfigurowaniu można podmieniać wszystkie inne strony. Ustrojstwo korzysta ze squida, i użytkownik musi z niego korzystać żeby przekierowywanie było skuteczne. Ustrojstwo nie powinno spowalniać pracy squida, odnosi się bowiem wyłącznie do adresów adserver.gadu-gadu.pl. Ustrojstwo nie wymaga reloadu niczego, ani nic nie reloaduje. Jego reakcja na ustawienie wiadomości administracyjnej jest natychmiastowa. Można także tak ustawić ustrojstwo, aby po przeczytaniu wiadomości administracyjnej umożliwiało nie wyświetlanie się więcej tej wiadomości. Samo ustrojstwo składa się z:
Wpisy w squid.conf -------------------------- acl mGG url_regex ^http://adserver.gadu%5B%5C-%5D?gadu.pl/.*$ redirector_access deny !mGG redirector_bypass on redirect_program /etc/lms/w3cache/gadu-gadu --------------------------
gdzie redirect_program zawiera scieżkę do naszego redirectora. Jak widać redirector jest uruchamiany tylko przy adserverze gadu-gadu.
Redirector natomiast wygląda tak (pewnie i tak mi połamie linie): -------------------------- #!/usr/bin/perl use DBI; $|=1;
my $dbtype = 'mysql'; my $dbhost = 'localhost'; my $dbuser = 'lms'; my $dbpasswd = '******'; my $dbname = 'lms';
$dbase = DBI->connect("DBI:mysql:database=$dbname;host=$dbhost","$dbuser","$dbpasswd", { RaiseError => 1 });
while ($adres = <STDIN>) { @lista = split(' ', $adres); @ip = split('/', $lista[1]); $ip = @ip[0]; my $dbq = $dbase->prepare("SELECT warning FROM nodes WHERE ipaddr=INET_ATON('$ip')" ); $dbq->execute(); my $row = $dbq->fetchrow_hashref(); if ($row->{'warning'}) { $adres =~ s/adserver.gadu[-]?gadu.pl/getbanner.asp/gg.polarnet.org/getbanner.php/; } print $adres; } $dbase->disconnect(); --------------------------
gdzie gg.polarnet.org/getbanner.php to adres naszego skryptu php który wyświetli baner z wiadomością administracyjną. Jak widać skrypt przy każdym odwołaniu do adservera sprawdza czy dany host ma ustawione wyświetlanie winetek, i jeśli ma to zmienia adres na nasz skrypt. Jeśli ktoś ma ochotę to może dodać obsługę reklam na wp, onet czy czymkolwiek innym.
Ps. Jak to troche ogarne, to pewnie wrzuce do contrib razem ze skryptem php ktory wyswietla baner z wiadomoscia.