Halaman

Senin, 10 Agustus 2015

Squid URL rewrite Untuk Partial Content PERL

IDE diambil dari update accelerator di coding ulang lebih simple dan gampang dimengerti untuk dioprek2 lebih lanjut. untuk kasus pertama caching content 206 (partial content) perview streaming 4shared.


langsung geber codenya
Code:
#!/usr/bin/perl
#Coded and Tested By Keblux
#Squid Url Rewriter untuk preview streaming di 4shared.com
#silahkan dibongkar2/dijual/dibuang/ tanpa menghilangkan kredit

$|=1;
while (<>) {
$input=$_;
@tmp=split(/ /,$input);
chomp(@tmp);
$url = $tmp[0];

if($url =~ m/^http:\/\/(.*?)\.(.*?)\/(.*?)\/(dlink__2Fdownload_2F([a-zA-Z0-9]+))([a-zA-Z0-9-_]+)\/([^\/\?\&]*\.[^\/\?\&]{3,4})$/)
{
                #Regexp yang cocok
                # dengan url strings "http://dc396.4shared.com/img/66978325/e4c433ab/dlink__2Fdownload_2FaxtQ2S6m_3Ftsid_3D20110811-195615-be366c67/preview.mp3"
                #1: (dc396)
                #2: (4shared.com)
                #3: (img/66978325/e4c433ab)
                #4: (dlink__2Fdownload_2FaxtQ2S6m)
                #5: (axtQ2S6m) <- kita pilih ini
                #6: (_3Ftsid_3D20110811-195615-be366c67)
                #7: (preview.mp3)
                #kita menggunakan regexp yang cocok 5 -> $5 untuk dimasukan ke function prosses

        #mengirimkan url 4shared beserta unique nama file dari 4shared
                $url_hasil = &prosess($url,$5);

                #mengirimkan kembali url yang telah diprosess ke client
        print $url_hasil ."\n";
}

   else {
                #jika bukan url yang mengandung regexp dlink__2Fdownload_2F, url tidak di prosess
        print $url. "\n";
}
}

#core prossess simple dan ngak rumit
sub prosess
{
        my $url_prosess=$_[0];
        my $file="4shared-".$_[1];

                #sesuaikan path /usr/local/www/data/updatecache/4shared/ dengan document root webserver anda!!PENTING!!
        if(-e "/var/www/data/updatecache/4shared/$file.mp3") {

        $url_hasil="http://192.168.5.2:80/data/updatecache/4shared/$file.mp3";
        } else {
                $url_hasil=$url_prosess;
                #bugs fixed delay diclient waktu streaming di pecah ke function download T_T ngak ngaruh
                &download($url_prosess,$file);
        }

                #kirim hasil prosess ke atas
        return $url_hasil;

}

sub download
{
        my $url_prosess=$_[0];
        my $file=$_[1];
                #karena response yg didapat adalah 206 partial content, wget tidak dapat mendownload file terpaksa pake fetch, kalo belum ada install dulu!!PENTING!!
        system("curl -o /var/www/data/updatecache/4shared/$file.mp3 $url_prosess");
                #rubah permission agar dapat dibaca client, kambali rubah pathnya dengan document root webserver anda
        chmod(0644, "/var/www/data/updatecache/4shared/$file.mp3");
}
#abis.....

penggunaan:

simpan code diatas bebas di folder mana saja di mesin squid anda. dibawah ini adalah contoh:
edit code diatas sesuaikan path nya yang berwarna merah
simpan di /etc/squid dengan nama 4shared.pl
chmod 755 4shared.pl
edit squid.conf anda dan masukan url_rewrite_program /usr/bin/perl /etc/squid/4shared.pl
chmod 777 /usr/local/www/data/updatecache/4shared , agar proxy bisa menulis file di folder tersebut
restart squid anda


SESSION 2 ADVANCE GRADE

Share/Update Untuk multiple source url

melihat animo dan semangat rekan2 disini, gw coba lanjut session ke 2 jika rekan2 sudah mengerti flow atau alur kerja dengan 1 source url dari script diatas. maka pembahasan kita lanjutakan ke tingkat yang lebih advance.

 Multiple Source URL

 disini kita menggunakan contoh: caching mp3 preview dari 4shared dan caching update game point blank

 silahkan dipelajari script dibawah ini

code diatas berjalan dengan kondisi
sudah running webserver (terserah pake lighthttpd, apache, atau nginx)
fetch program (testing: jalankan fetch --help) atau curl (testing: jalankan curl --V) untuk curl code system("fetch -o /usr/local/www/data/updatecache/4shared/$file.mp3 $url_prosess"); dirubah menjadi system("curl -o /usr/local/www/data/updatecache/4shared/$file.mp3 $url_prosess");


Code:
#!/usr/bin/perl
#Coded and Tested By Keblux
#Squid Url Rewriter untuk preview streaming di 4shared.com + Point Blank Caching
#silahkan dibongkar2/dijual/dibuang/ tanpa menghilangkan kredit
#update multiple regexp for caching

$|=1;
while (<>) {
$input=$_;
@tmp=split(/ /,$input);
chomp(@tmp);
$url = $tmp[0];

if($url =~ m/^http:\/\/(.*?)\.(.*?)\/(.*?)\/(dlink__2Fdownload_2F([a-zA-Z0-9]+))([a-zA-Z0-9-_]+)\/([^\/\?\&]*\.[^\/\?\&]{3,4})$/)
{
                #Regexp yang cocok
                # dengan url strings "http://dc396.4shared.com/img/66978325/e4c433ab/dlink__2Fdownload_2FaxtQ2S6m_3Ftsid_3D20110811-195615-be366c67/preview.mp3"
                #1: (dc396)
                #2: (4shared.com)
                #3: (img/66978325/e4c433ab)
                #4: (dlink__2Fdownload_2FaxtQ2S6m)
                #5: (axtQ2S6m) <- kita pilih ini
                #6: (_3Ftsid_3D20110811-195615-be366c67)
                #7: (preview.mp3)
                #kita menggunakan regexp yang cocok 5 -> $5 untuk dimasukan ke function prosses

        #mengirimkan url 4shared beserta unique nama file dari 4shared
                $url_hasil = &prosess($url,$5,'4shared');

                #mengirimkan kembali url yang telah diprosess ke client
        print $url_hasil ."\n";
} elsif ($url =~ m/^http:\/\/file\.pb\.gemscool\.com\/gamepatch\/(.*)\/(.*\.(exe|zip))/)
{
            #prosess untai dari patch point blank di untai ini kita menggunakan regexp yang diwakili oleh string 2 maka $5 diganti dengan $2
   $url_hasil = &prosess($url,$2,'point-blank');

                #mengirimkan kembali url yang telah diprosess ke client
        print $url_hasil ."\n";
}

   else {
                #jika bukan url yang mengandung regexp dlink__2Fdownload_2F, url tidak di prosess
        print $url. "\n";
}
}

#core prossess simple dan ngak rumit
sub prosess
{
        my $url_prosess=$_[0];
  #start check berfungsi untuk penanda jika untai itu untuk 4shared file akan ditambahkan extension .mp3 jika tidak maka tidak ada penambahan
  if($_[2] == '4shared') {
        my $file=$_[1].".mp3";
  } else {
  my $file=$_[1];
  }
  #$myFolder untuk memilah file berdasarkan source url dari 4shared atau point blank jadi lebih terstruktur rapi
        my $myFolder=$_[2];

                #sesuaikan path /usr/local/www/data/updatecache/4shared/ dengan document root webserver anda!!PENTING!!
        if(-e "/usr/local/www/data/updatecache/$myFolder/$file") {

        $url_hasil="http://10.2.0.2:82/updatecache/$myFolder/$file";
        } else {
                $url_hasil=$url_prosess;
                #bugs fixed delay diclient waktu streaming di pecah ke function download T_T ngak ngaruh
                &download($url_prosess,$file,$myFolder);
        }

                #kirim hasil prosess ke atas
        return $url_hasil;

}

sub download
{
        my $url_prosess=$_[0];
        my $file=$_[1];
        my $myFolder=$_[2];
                #karena response yg didapat adalah 206 partial content, wget tidak dapat mendownload file terpaksa pake fetch, kalo belum ada install dulu!!PENTING!!
        system("fetch -o /usr/local/www/data/updatecache/$myFolder/$file $url_prosess");
                #rubah permission agar dapat dibaca client, kambali rubah pathnya dengan document root webserver anda
        chmod(0644, "/usr/local/www/data/updatecache/$myFolder/$file");
}
#abis.....

perhatikan bagian path ke document root "/usr/local/www/data/" harap disesuaikan dengan document root ditempat masing2 buat struktur folder di document root

 - updatecache
 |---4shared
 |---point-blank

 set permission 777 untuk ketiga folder diatas agar script bisa menulis file cache di folder tersebut

 karena kita sudah menggunakan multiple source url, penambahan folder optional digunakan agar terlihat rapi dan berstruktur. selebihnya sama

 untuk instalasi selebihnya sama bisa dilihat di page one

 selamat mencoba


ok gw tambahain regexp dibawah, buat education purpose

 -- sub Anti virus --
 AVG
Code:
http:\/\/.*\.avg\.com\/(.*)\/(.*\.(exe|bin))

string yang dipake $2

string yang dipake $2
 Symantec
Code:
[h|f]tt?p:\/\/[^\/]*\.symantec(liveupdate)?\.com\/(.*\.(exe|zip|vdb|xdb)) 

string yang dipake $2

 AVAST
Code:
http:\/\/download[\d]+\.avast\.com\/(.*)\/(.*\.(exe|vpu))

string yang dipake $2

 -- sub Game Online --

 Battle Of Immortal
Code:
http:\/\/patch3\.prodigy\.co\.id\/boi\/(.*)\/(.*\.(zip|exe|dat|cab|rar))

string yang dipake $2
 Lost Saga
Code:
http:\/\/patch\.gemscool\.com\/lsaga\/(.*)\/(.*\.(iop|zip|exe|dat|cab|rar))

string yang dipake $2

 Ayodance
Code:
http:\/\/122\.102\.49\.132\/(.*)\/(.*\.(zip|exe))

string yang dipake $2
 happy Caching Guys

Tidak ada komentar:

Posting Komentar