Penguin
Blame: SquidCachingYouTube
EditPageHistoryDiffInfoLikePages
Annotated edit history of SquidCachingYouTube version 2, including all changes. View license author blame.
Rev Author # Line
2 AristotlePagaltzis 1 (Using Squid 2.7)
1 CraigWhitmore 2
2 AristotlePagaltzis 3 !! Configuration
4
5 <verbatim>
1 CraigWhitmore 6 acl all src all
7 acl manager proto cache_object
8 acl localhost src 127.0.0.1/32
9 acl to_localhost dst 127.0.0.0/8
10 acl localnet1 src x.x.0.0/16
11 acl localnet2 src x.x.0.0/16
12 acl SSL_ports port 443
13 acl CONNECT method CONNECT
14
15 http_access allow manager localhost
16 http_access deny manager
17 http_access deny !Safe_ports
18 http_access deny CONNECT !SSL_ports
19 http_access allow localnet
20 http_access allow localnet1
21 http_access allow localnet2
22 http_access deny all
23 icp_access allow localnet
24 icp_access deny all
25 http_port 3128
26 maximum_object_size_in_memory 65535 KB
27 cache_dir ufs /usr/local/squid/var/cache 10000 16 256
28 maximum_object_size 65535 KB
29 access_log /usr/local/squid/var/logs/access.log squid
30 storeurl_rewrite_children 50
31 refresh_pattern ^ftp: 1440 20% 10080
32 refresh_pattern ^gopher: 1440 0% 1440
33 refresh_pattern -i \.flv$ 10080 90% 999999 ignore-no-cache override-expire ignore-private
34 refresh_pattern ^http://sjl-v[0-9]+\.sjl\.youtube\.com 10080 90% 999999 ignore-no-cache override-expire ignore-private
35 refresh_pattern get_video\?video_id 10080 90% 999999 ignore-no-cache override-expire ignore-private
36 refresh_pattern youtube\.com/get_video\? 10080 90% 999999 ignore-no-cache override-expire ignore-private
37 refresh_pattern . 0 20% 4320
38 acl apache rep_header Server ^Apache
39 broken_vary_encoding allow apache
40 coredump_dir /usr/local/squid/var/cache
41 acl youtube dstdomain .youtube.com .googlevideo.com .video.google.com .video.google.com.au
42 acl youtubeip dst 74.125.15.0/24
43 acl youtubeip dst 64.15.0.0/16
44 cache allow youtube
45 cache allow youtubeip
46 acl store_rewrite_list dstdomain mt.google.com mt0.google.com mt1.google.com mt2.google.com
47 acl store_rewrite_list dstdomain mt3.google.com
48 acl store_rewrite_list dstdomain kh.google.com kh0.google.com kh1.google.com kh2.google.com
49 acl store_rewrite_list dstdomain kh3.google.com
50 acl store_rewrite_list dstdomain kh.google.com.au kh0.google.com.au kh1.google.com.au
51 acl store_rewrite_list dstdomain kh2.google.com.au kh3.google.com.au
52 acl store_rewrite_list dstdomain .youtube.com
53 storeurl_access allow store_rewrite_list
54 storeurl_access deny all
55 storeurl_rewrite_program /archives/youtube
56 quick_abort_min -1 KB
2 AristotlePagaltzis 57 </verbatim>
1 CraigWhitmore 58
2 AristotlePagaltzis 59 !! The <tt>/archives/youtube</tt> program
1 CraigWhitmore 60
2 AristotlePagaltzis 61 <verbatim>
1 CraigWhitmore 62 #!/usr/bin/perl
2 AristotlePagaltzis 63 use IO::File;
64
65 STDOUT->autoflush(1);
1 CraigWhitmore 66
2 AristotlePagaltzis 67 my $logfile = '/tmp/debug.log';
1 CraigWhitmore 68
2 AristotlePagaltzis 69 open my $logfh, '>>', $logfile
70 or die "Couldn't open $logfile for appending: $!\n";
1 CraigWhitmore 71
2 AristotlePagaltzis 72 $logfh->autoflush(1);
1 CraigWhitmore 73
2 AristotlePagaltzis 74 while (<>) {
75 chomp;
76 my $out =
77 m{kh(.*?)\.google\.com(.*?)/(.*?) } ? "http://keyhole-srv.google.com$2.SQUIDINTERNAL/$3" :
78 m{mt(.*?)\.google\.com(.*?)/(.*?) } ? "http://map-srv.google.com$2.SQUIDINTERNAL/$3" :
79 m{^http://([A-Za-z]*?)-(.*?)\.(.*)\.youtube\.com/get_video\?video_id=([^&]+).* }
80 ? "http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id=$4" :
81 m{^http://([A-Za-z]*?)-(.*?)\.(.*)\.youtube\.com/get_video\?video_id=(.*) }
82 ? "http://video-srv.youtube.com.SQUIDINTERNAL/get_video?video_id=$4" :
83 $_;
1 CraigWhitmore 84
2 AristotlePagaltzis 85 print $logfh "Original: $_\n", "Translation: $out\n\n";
86 print "$out\n";
87 }
88 </verbatim>