Normal debian paketinde maleseef mysql yetkilendirmesi gelmiyor. Bunun için kaynak koddan derleyeceğiz.
squid'i derle:
./configure –enable-gnuregex –enable-useragent-log –enable-snmp –enable-err-language=Turkish –enable-referer-log –enable-basic-auth-helpers=DB
make
make install (veya debian paketi oluşturmak için; checkinstall)
/usr/local/squid klasörüne kendi dosyalarını koyacak
Başlangıcı ayarla (/etc/rc.local altına şunları ekle):
# Squid'i baslat
if [ -f /usr/local/squid/sbin/squid ]; then
echo -n ' Squid'
echo
/usr/local/squid/sbin/squid
fi
/usr/local/squid/libexec/squid_db_auth dosyasında şu değişiklikleri yap:
Parolalar MySQL üzerinde MD5 özeti olarak tutulduğu için, yetkilendirme betiğinde birkaç düzenleme yapılmalıdır. Parolalar açık olarak yazılı ise, 1 ve 2. maddelere gerek yok, 3'e atla.
Düzenleme (2011.11.21): Squid'in 3.1.16 sürümü ile yeniden yaptığım çalışmada aşağıdaki 2. maddeye gerek olmadığını, çünkü dosyanın başında my $md5 = 1; şeklinde bir değişken tanımlayarak işi çözdüklerini gördüm. Benzer şekilde, alttaki 1. maddeye de gerek kalmamış. Bunu da varsayılan olarak dahil etmişler.
1. Baş tarafa use "use Digest::MD5 qw(md5_hex);" ekle
2. Aşağıdaki satırı gözüktüğü gibi yap (md5_hex eklendi):
next if (!check_password(md5_hex($password), @$row[0]));
3. Bağlantı satırlarını kendine göre değiştir:
my $dsn = "DBI:mysql:database=veritabani_adi:host=sunucu_adi:port=3306";
my $db_user = "kullanici";
my $db_passwd = "parola";
my $db_table = "tablo_adi";
my $db_usercol = "kullanici-adi";
my $db_passwdcol = "parola";
my $db_cond = "";
my $plaintext = 1;
my $persist = 1;
Yetkilendirme betiğinin çalışıp çalışmadığını kontrol et:
/usr/local/squid/libexec/squid_db_auth yazarak enter'a bas. Gelen satırda kullanıcı_adı yaz, bir boşluk koyarak parola yaz. Enter'a bastığında OK veya ERR yazısı göreceksin. Bu şekilde önce veritabanına bağlantıda sorun olup olmadığını anlayabilirsin.
Düzenleme (2011.11.21): Üstteki paragraf sonunda DBI ile ilgili bir hata verirse, Perl için DBI modülünün yüklenmesi gerekiyor. Bunun için, Debian'da şu komut verilebilir: aptitude install libclass-dbi-mysql-perl
Access Control List (ACL) leri düzenle.
visible_hostname Vekil.Sunucusu
auth_param basic program /usr/local/squid/libexec/squid_db_auth
auth_param basic children 5
auth_param basic realm eposta kullanici adi ve parolanizi girin: (@bilecik.edu.tr'den oncesi)
auth_param basic credentialsttl 1 minute
auth_param basic casesensitive off
acl db-auth proxy_auth REQUIRED
http_access allow db-auth
acl kutuphane_hedef dstdomain "/usr/local/squid/etc/squid.hedefler.conf"
http_reply_access allow kutuphane_hedef
acl deny_all_replies src all
http_reply_access deny deny_all_replies
Örnek hedefler dosyası (/usr/local/squid/etc/squid.hedefler.conf)
.hukukturk.com
.isiknowledge.com
.sciencedirect.com
.ebscohost.com
.whatismyip.com
/usr/local/squid/etc/squid.conf dosyasını aç, acl dosyasını include ettir:
“INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS” yazan satırı bul. Bunun alt tarafında bulunan, “http_access deny all” satırından önce, şunu ekle:
include /usr/local/squid/etc/squid.acl.conf
vekil.pac ayarla:
function FindProxyForURL(url, host)
{
var pr_in = "PROXY 79.123.224.202:3128; DIRECT";
var pr_no = "DIRECT";
if (dnsDomainIs( host,".aip.org") ||
dnsDomainIs( host,".ebsco.com") ||
dnsDomainIs( host,".ebscohost.com") ||
dnsDomainIs( host,".ieee.org") ||
dnsDomainIs( host,".ieeexplore.ieee.org") ||
dnsDomainIs( host,".informaworld.com") ||
dnsDomainIs( host,"www.informaworld.com/smpp") ||
dnsDomainIs( host,".iop.org") ||
dnsDomainIs( host,".isiknowledge.com") ||
dnsDomainIs( host,".sub3.isiknowledge.com") ||
dnsDomainIs( host,".apps.isiknowledge.com") ||
dnsDomainIs( host,".isinet.com") ||
dnsDomainIs( host,".scholar.google.com") ||
dnsDomainIs( host,".sciencedirect.com") ||
dnsDomainIs( host,".portal.isiknowledge.com") ||
dnsDomainIs( host,".acs.org") ||
dnsDomainIs( host,".whatismyip.com")) {
return pr_in;
}
else
return pr_no;
}
SARG kur:
aptitude install sarg
/etc/squid/sarg.conf dosyasını düzenle. access.log dosyasının yerini göster. Web çıktılarını nereye atacağını göster. Dili seç.
Zaten kendisi cron'a zamanlayıcı ekler.
http://sunucu.adresi/squid-reports/ adresinden raporları görebilirsin.
Elle raporları güncellemek istersen, sarg-reports ve sarg komutlarını kullanabilirsin.