Penguin
Note: You are viewing an old revision of this page. View the current version.

Using Squid 2.7

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet1 src x.x.0.0/16
acl localnet2 src x.x.0.0/16
acl SSL_ports port 443
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localnet1
http_access allow localnet2
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128
maximum_object_size_in_memory 65535 KB
cache_dir ufs /usr/local/squid/var/cache 10000 16 256
maximum_object_size 65535 KB
access_log /usr/local/squid/var/logs/access.log squid
storeurl_rewrite_children 50
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i \.flv$       10080   90%     999999 ignore-no-cache override-expire ignore-private
refresh_pattern ^http://sjl-v[0-9]+\.sjl\.youtube\.com 10080 90% 999999 ignore-no-cache override-expire ignore-private
refresh_pattern get_video\?video_id 10080 90% 999999 ignore-no-cache override-expire ignore-private
refresh_pattern youtube\.com/get_video\? 10080 90% 999999 ignore-no-cache override-expire ignore-private
refresh_pattern .               0       20%     4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /usr/local/squid/var/cache
acl youtube dstdomain .youtube.com .googlevideo.com .video.google.com .video.google.com.au
acl youtubeip dst 74.125.15.0/24
acl youtubeip dst 64.15.0.0/16
cache allow youtube
cache allow youtubeip
acl store_rewrite_list dstdomain mt.google.com mt0.google.com mt1.google.com mt2.google.com
acl store_rewrite_list dstdomain mt3.google.com
acl store_rewrite_list dstdomain kh.google.com kh0.google.com kh1.google.com kh2.google.com
acl store_rewrite_list dstdomain kh3.google.com
acl store_rewrite_list dstdomain kh.google.com.au kh0.google.com.au kh1.google.com.au
acl store_rewrite_list dstdomain kh2.google.com.au kh3.google.com.au
acl store_rewrite_list dstdomain .youtube.com
storeurl_access allow store_rewrite_list
storeurl_access deny all
storeurl_rewrite_program /archives/youtube
quick_abort_min -1 KB

-----------------------------
/archives/youtube

#!/usr/bin/perl

  use IO::File;
  use IO::Socket::INET;
  use IO::Pipe;

  $| = 1;

  $fh = new IO::File("/tmp/debug.log", "a");
  $fh->flush();

  while (<>) {
          chomp;
          print LOG "Orig URL: " . $_ . "\n";
          $fh->print("Orig URL: " . $_ . "\n");
          if (m/kh(.*?)\.google\.com(.*?)\/(.*?) /) {
                  print "http://keyhole-srv.google.com" . $2 . ".SQUIDINTERNAL/" . $3 . "\n";
                  # print STDERR "KEYHOLE\n";
          } elsif (m/mt(.*?)\.google\.com(.*?)\/(.*?) /) {
                  print "http://map-srv.google.com" . $2 . ".SQUIDINTERNAL/" . $3 . "\n";
                  # print STDERR "MAPSRV\n";
          } elsif (m/^http:\/\/([A-Za-z]*?)-(.*?)\.(.*)\.youtube\.com\/get_video\?video_id=([^&]+).* /) {
                  print "http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id=" . $4 . "\n";
                  $fh->print("http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id=" . $4 . "\n");
                  $fh->flush();
          } elsif (m/^http:\/\/([A-Za-z]*?)-(.*?)\.(.*)\.youtube\.com\/get_video\?video_id=(.*) /) {
                  # http://lax-v290.lax.youtube.com/get_video?video_id=jqx1ZmzX0k0
                  print "http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id=" . $4 . "\n";
          } else {
                  print $_ . "\n";
          }
  }