SHOW:
|
|
- or go back to the newest paste.
1 | apt-get update | |
2 | apt-get install build-essential devscripts libcppunit-dev openssl libssl-dev libcap-dev libsasl2-dev ccze pkg-config libkrb5-dev apache2 php5 -y | |
3 | ### install pake ecap seperti http://pastebin.com/G8sUCy6h | |
4 | cd | |
5 | wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.20-20160724-r14069.tar.gz | |
6 | tar xzvf squid-3.5.20-20160724-r14069.tar.gz | |
7 | wget -O squid_forgery.patch http://www.squid-cache.org/mail-archive/squid-users/201404/att-0240/squid_forgery.patch.txt | |
8 | cd squid-3.5.20-20160724-r14069 | |
9 | patch -p0 <../squid_forgery.patch | |
10 | ### configure squid http://pastebin.com/YJxDf02h | |
11 | make | |
12 | make install | |
13 | chown -R nobody /var/log/squid | |
14 | chown -R nobody /cache | |
15 | mkdir -p /etc/squid/ssl_cert | |
16 | openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout /etc/squid/ssl_cert/warnet.pem -out /etc/squid/ssl_cert/warnet.pem -subj "/C=ID/ST=Jawa Tengah/L=Semarang/O=TSI/CN=Terapi Squid Indonesia" | |
17 | openssl x509 -in /etc/squid/ssl_cert/warnet.pem -outform DER -out /etc/squid/ssl_cert/warnet.der | |
18 | openssl x509 -in /etc/squid/ssl_cert/warnet.pem -outform DER -out /etc/squid/ssl_cert/warnet.crt | |
19 | /usr/lib/squid/ssl_crtd -c -s /var/lib/ssl_db | |
20 | chown -R nobody /var/lib/ssl_db | |
21 | ||
22 | ### awal squid.conf, jangan ditulis ### | |
23 | # Recommended minimum configuration: | |
24 | # sesuaikan ukuran cache | |
25 | # sesuaikan ip address | |
26 | # script squid.conf untuk non-range 360p | |
27 | ||
28 | # Example rule allowing access from your local networks. | |
29 | # Adapt to list your (internal) IP networks from where browsing | |
30 | # should be allowed | |
31 | dns_v4_first on | |
32 | reply_header_access Alternate-Protocol deny all | |
33 | reply_header_access Alt-Svc deny all | |
34 | ||
35 | #cache_dir aufs /cache 700000 16 256 | |
36 | cache_dir aufs /cache 360000 1 1 | |
37 | cache_mem 8 MB | |
38 | coredump_dir /var/log/squid | |
39 | ||
40 | cache_swap_low 80 | |
41 | cache_swap_high 85 | |
42 | cache_replacement_policy heap LFUDA | |
43 | memory_replacement_policy heap GDSF | |
44 | ||
45 | maximum_object_size 4096000 KB | |
46 | maximum_object_size_in_memory 0 KB | |
47 | request_body_max_size 0 KB | |
48 | refresh_all_ims on | |
49 | reload_into_ims on | |
50 | ||
51 | cache_mgr cespun@gmail.com | |
52 | visible_hostname cespun-proxy | |
53 | strip_query_terms off | |
54 | httpd_suppress_version_string on | |
55 | log_mime_hdrs off | |
56 | forwarded_for off | |
57 | via off | |
58 | ||
59 | request_header_access X-Forwarded-For deny all | |
60 | reply_header_access X-Forwarded-For deny all | |
61 | request_header_access Via deny all | |
62 | reply_header_access Via deny all | |
63 | max_filedescriptors 65536 | |
64 | ||
65 | cache_swap_high 98 | |
66 | cache_swap_low 95 | |
67 | fqdncache_size 4096 | |
68 | ipcache_size 4096 | |
69 | dns_nameservers 208.67.222.222 208.67.220.220 | |
70 | ||
71 | http_port 3128 | |
72 | #http_port 3127 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/warnet.pem | |
73 | #http_port 3129 intercept | |
74 | #https_port 3127 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/warnet.pem | |
75 | http_port 3129 tproxy | |
76 | https_port 3127 tproxy ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/warnet.pem | |
77 | ||
78 | qos_flows local-hit=0x30 | |
79 | ||
80 | acl localnet src 10.0.0.0/8 # RFC1918 possible internal network | |
81 | acl localnet src 172.16.0.0/12 # RFC1918 possible internal network | |
82 | acl localnet src 192.168.0.0/16 # RFC1918 possible internal network | |
83 | acl localnet src fc00::/7 # RFC 4193 local private network range | |
84 | acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines | |
85 | acl SSL_ports port 443 | |
86 | acl Safe_ports port 80 # http | |
87 | acl Safe_ports port 182 # http | |
88 | acl Safe_ports port 21 # ftp | |
89 | acl Safe_ports port 443 # https | |
90 | acl Safe_ports port 70 # gopher | |
91 | acl Safe_ports port 210 # wais | |
92 | acl Safe_ports port 1025-65535 # unregistered ports | |
93 | acl Safe_ports port 280 # http-mgmt | |
94 | acl Safe_ports port 488 # gss-http | |
95 | acl Safe_ports port 591 # filemaker | |
96 | acl Safe_ports port 777 # multiling http | |
97 | ||
98 | acl step1 at_step SslBump1 | |
99 | acl step2 at_step SslBump2 | |
100 | acl step3 at_step SslBump3 | |
101 | #acl sslserver ssl::server_name_regex -i "/etc/squid/bypass.txt" | |
102 | #acl iphone browser -i regexp (iPhone|iPad) | |
103 | #acl BB browser -i regexp (BlackBerry|PlayBook) | |
104 | #acl Winphone browser -i regexp (Windows.*Phone|Trident|IEMobile) | |
105 | #acl Android browser -i regexp Android | |
106 | acl yt-modif url_regex -i ^https?\:\/\/www\.youtube\.com\/(watch\?v|embed|v) | |
107 | acl youtube url_regex -i ^http.*(youtube|googlevideo|videoplayback|videogoodput) | |
108 | acl versipatch url_regex -i ^http.*(update|patch).*versi | |
109 | acl versipatch url_regex -i ^http.*versi.*(update|patch) | |
110 | acl versipatch url_regex -i ^http.*(antihack|xigncode|gameguard) | |
111 | #acl patchpartial url_regex -i ^http.*(garena|gemscool|netmarble|valve|dota|winnerinter|lytogame|megaxus).*patch | |
112 | #acl patchpartial url_regex -i ^http.*patch.*(garena|gemscool|netmarble|valve|dota|winnerinter|lytogame|megaxus) | |
113 | acl patchpartial url_regex -i ^http.*patch.*garena | |
114 | acl patchpartial url_regex -i ^http.*garena.*patch | |
115 | acl httptomiss http_status 302 | |
116 | acl mimehtml rep_mime_type -i mime-type ^text/html | |
117 | acl mimeplain rep_mime_type -i mime-type ^text/plain | |
118 | acl tostoreid url_regex -i ^http.*(youtube|googlevideo|videoplayback|videogoodput) | |
119 | acl tostoreid url_regex -i ^http.*(fbcdn|akamaihd) | |
120 | acl tostoreid url_regex -i ^http.*c2lo\.reverbnation\.com\/audio_player\/ec_stream_song\/.*\? | |
121 | acl tostoreid url_regex -i ^http.*\.c\.android\.clients\.google\.com\/market\/GetBinary\/GetBinary\/.*\/.*\? | |
122 | acl tostoreid url_regex -i ^http.*datafilehost.*\/get\.php.*file\=.* | |
123 | acl tostoreid url_regex -i ^http.*\.filehippo\.com\/.*\? | |
124 | acl tostoreid url_regex -i ^http.*\.4shared\.com\/.*\/.*\/.*\/dlink.*preview.mp3 | |
125 | acl tostoreid url_regex -i ^http.*\.4shared\.com\/download\/.*\/.*\?tsid | |
126 | acl tostoreid url_regex -i ^http.*steam(powered|content) | |
127 | acl tostoreid url_regex -i ^http.*savefile\.co\:182\/.*\/.*\.(mp4|flv|3gp) | |
128 | acl tostoreid url_regex -i ^http.*video\-http\.media\-imdb\.com\/.*\.mp4\? | |
129 | acl tostoreid url_regex -i ^http.*\.dl\.sourceforge\.net | |
130 | #acl tostoreid url_regex -i ^http.*(speedtest|espeed).*\/.*\.(jpg|txt) | |
131 | acl speedtest url_regex -i ^http.*(speedtest|espeed).*\/(latency|upload|random.*)\.(jpg|txt|php) | |
132 | acl CONNECT method CONNECT | |
133 | acl getmethod method GET | |
134 | ||
135 | http_access deny !Safe_ports | |
136 | http_access deny CONNECT !SSL_ports | |
137 | http_access allow localhost manager | |
138 | http_access deny manager | |
139 | http_access allow localnet | |
140 | http_access allow localhost | |
141 | http_access deny all | |
142 | ||
143 | request_header_access Range deny !patchpartial | |
144 | #range_offset_limit 128 KB !patchpartial | |
145 | range_offset_limit none patchpartial | |
146 | quick_abort_min 1 KB | |
147 | quick_abort_max 1 KB | |
148 | quick_abort_pct 95 | |
149 | ||
150 | #request_header_access User-Agent deny yt-modif !iphone !BB !Winphone !Android | |
151 | ### flash | |
152 | #request_header_replace User-Agent Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14 | |
153 | ### flash | |
154 | #request_header_replace User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14 | |
155 | ###html5 | |
156 | #request_header_replace User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 | |
157 | ###html5 | |
158 | #request_header_replace user_Agent Mozilla/5.0 (Windows NT 5.1; rv:35.0) Gecko/20100101 Firefox/35.0 | |
159 | #request_header_replace Mozilla/6.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:2.0.0.0) Gecko/20061028 Firefox/3.0 | |
160 | ||
161 | cache deny versipatch | |
162 | cache deny localhost | |
163 | ssl_bump splice localhost | |
164 | #ssl_bump splice sslserver | |
165 | ssl_bump peek step1 all | |
166 | ssl_bump bump step2 all | |
167 | ssl_bump splice step3 all | |
168 | ||
169 | ||
170 | ||
171 | sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB | |
172 | sslcrtd_children 2000 startup=30 idle=1 | |
173 | sslproxy_capath /etc/squid/ssl_cert | |
174 | sslproxy_cert_error allow all | |
175 | sslproxy_flags DONT_VERIFY_PEER | |
176 | sslproxy_flags NO_SESSION_REUSE | |
177 | ssl_unclean_shutdown on | |
178 | sslproxy_options NO_SSLv2,NO_SSLv3,SINGLE_ECDH_USE #Jika menggunakan versi setelah squid-3.5.12-20151222-r13967 | |
179 | #sslproxy_options NO_SSLv2,NO_SSLv3 | |
180 | sslproxy_cipher EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:HIGH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS | |
181 | ||
182 | #debug_options 11,2 22,3 | |
183 | logfile_rotate 1 | |
184 | #logformat referer %ts.%03tu %>a %{Referer}>h %ru | |
185 | #logformat referer %ts.%03tu %>a %ru %{Referer}>h | |
186 | #logformat referer %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt %{Referer}>h %{User-Agent}>h | |
187 | #access_log /var/log/squid/access.log !CONNECT | |
188 | #access_log /var/log/squid/connect.log CONNECT | |
189 | #cache_store_log /var/log/squid/store.log | |
190 | access_log stdio:/var/log/squid/access.log | |
191 | netdb_filename none | |
192 | ||
193 | ||
194 | #ecap | |
195 | #yt_quality: tiny = 144px small = 240px medium = 360px large = 480px HD720 = Hd720px | |
196 | loadable_modules /usr/local/lib/ecap_adapter_modifying.so | |
197 | ecap_enable on | |
198 | request_header_access Accept-Encoding deny yt-modif | |
199 | ecap_service modif respmod_precache uri=ecap://e-cap.org/ecap/services/sample/modifying victim="enablejsapi" replacement="dash":"0","vq":"medium","enablejsapi" | |
200 | #ecap_service modif respmod_precache uri=ecap://e-cap.org/ecap/services/sample/modifying victim="enablejsapi" replacement="dash":"1","vq":"tiny","enablejsapi" | |
201 | #ecap_service modif respmod_precache uri=ecap://e-cap.org/ecap/services/sample/modifying victim="enablejsapi" replacement="vq":"small","enablejsapi" | |
202 | adaptation_access modif allow yt-modif | |
203 | adaptation_access modif deny all | |
204 | ||
205 | cache deny speedtest | |
206 | url_rewrite_access allow speedtest | |
207 | url_rewrite_access deny all | |
208 | url_rewrite_program /etc/squid/speedtest.pl | |
209 | redirector_bypass on | |
210 | cache_peer 10.212.212.212 parent 8033 0 no-digest no-tproxy | |
211 | dead_peer_timeout 5 seconds | |
212 | cache_peer_access 10.212.212.212 allow speedtest | |
213 | cache_peer_access 10.212.212.212 deny all | |
214 | always_direct deny speedtest | |
215 | never_direct allow speedtest | |
216 | url_rewrite_children 2000 startup=30 idle=1 | |
217 | ||
218 | store_id_bypass off | |
219 | store_id_extras "%{Referer}>h" | |
220 | store_id_program /etc/squid/storeid.pl | |
221 | store_id_children 2000 startup=30 idle=1 | |
222 | store_id_access deny !getmethod | |
223 | store_id_access allow tostoreid | |
224 | store_id_access deny all | |
225 | ||
226 | store_miss deny youtube httptomiss | |
227 | send_hit deny youtube httptomiss | |
228 | store_miss deny youtube mimeplain | |
229 | send_hit deny youtube mimeplain | |
230 | store_miss deny mimehtml | |
231 | send_hit deny mimehtml | |
232 | store_miss deny versipatch | |
233 | send_hit deny versipatch | |
234 | ||
235 | refresh_pattern -i . 432000 100% 432000 override-expire override-lastmod reload-into-ims refresh-ims ignore-no-store ignore-must-revalidate ignore-private ignore-auth store-stale | |
236 | max_stale 1 day | |
237 | ### akhir squid.conf, jangan ditulis ### | |
238 | ||
239 | ### awal storeid.pl , jangan ditulis ### | |
240 | #!/usr/bin/perl | |
241 | # | |
242 | # storeid.pl with debug opt - based on storeurl.pl | |
243 | # @ http://www2.fh-lausitz.de/launic/comp/misc/squid/projekt_youtube/ | |
244 | # referensi dan terimakasih khususnya pada Mr. Syaifudin JW aka Ucok Karnadi | |
245 | ||
246 | use IO::File; | |
247 | $|=1; | |
248 | STDOUT->autoflush(1); | |
249 | $debug=1; ## recommended:0 | |
250 | $bypassallrules=0; ## recommended:0 | |
251 | $sucks=""; ## unused | |
252 | $sucks="sucks" if ($debug>=1); | |
253 | $timenow=""; | |
254 | $printtimenow=1; ## print timenow: 0|1 | |
255 | my $logfile = '/var/log/squid/storeid.log'; | |
256 | ||
257 | open my $logfh, '>>', $logfile | |
258 | or die "Couldn't open $logfile for appending: $!\n" if $debug; | |
259 | $logfh->autoflush(1) if $debug; | |
260 | ||
261 | while (<>) { | |
262 | $timenow=time()." " if ($printtimenow); | |
263 | print $logfh "$timenow"."in : input=$_" if ($debug>=1); | |
264 | ||
265 | @X = split; | |
266 | if ($X[0] =~ m/^http.*/) { | |
267 | $url = $X[0]; | |
268 | $referer = $X[1]; | |
269 | $urlreferer = $X[0] ." ". $X[1]; | |
270 | } else { | |
271 | $chanel = $X[0]; | |
272 | $url = $X[1]; | |
273 | $referer = $X[2]; | |
274 | $urlreferer = $X[1] ." ". $X[2]; | |
275 | } | |
276 | ||
277 | ||
278 | ||
279 | ||
280 | if ($bypassallrules){ | |
281 | $out="$url"; ## map 1:1 | |
282 | ||
283 | #youtube googlevideo | |
284 | } elsif ($url =~ m/^https?\:\/\/.*google.*video(playback|goodput).*/){ | |
285 | @cpn = m/[=%&?\/]cpn[=%&?\/]([^\&\s]*)/; | |
286 | @id = m/[=%&?\/]id[=%&?\/]([^\&\s]*)/; | |
287 | @itag = m/[=%&?\/]itag[=%&?\/]([\d]*)/; | |
288 | @range = m/[=%&?\/]range[=%&?\/]([\d]*-[\d]*)/; | |
289 | @mime = m/[=%&?\/]mime[=%&?\/]([^\&\s]*)/; | |
290 | if ($referer =~ m/^https?\:\/\/www\.youtube\.com\/(watch\?v|embed|v)[=%&?\/]([^\&\s\?]*)/){ | |
291 | @id = $2; | |
292 | } else { | |
293 | if (defined(@cpn[0])){ | |
294 | if (-e "/tmp/@cpn"){ | |
295 | open FILE, "/tmp/@cpn"; | |
296 | @id = <FILE>; | |
297 | close FILE; | |
298 | } | |
299 | } | |
300 | } | |
301 | $out="OK store-id=http://squid/google/video/id=@id/itag=@itag/mime=@mime/range=@range"; | |
302 | ||
303 | #youtube parameter | |
304 | } elsif ( | |
305 | ($url =~ m/^https?\:\/\/.*youtube.*(stream_204|watchtime|qoe|atr|csi_204|playback).*[=%&?\/]docid[=%&?\/]([^\&\s]*)/) || | |
306 | ($url =~ m/^https?\:\/\/.*youtube.*(ptracking|set_awesome).*[=%&?\/]video_id[=%&?\/]([^\&\s]*)/) || | |
307 | ($url =~ m/^https?\:\/\/.*youtube.*(player_204).*[=%&?\/]v[=%&?\/]([^\&\s]*)/) | |
308 | ){ | |
309 | @id = $2; | |
310 | @cpn = m/[=%&?\/]cpn[=%&?\/]([^\&\s]*)/; | |
311 | if ($referer !~ m/^https?\:\/\/www\.youtube\.com\/(watch\?v|embed|v)[=%&?\/]([^\&\s\?]*)/){ | |
312 | unless (-e "/tmp/@cpn"){ | |
313 | open FILE, ">/tmp/@cpn"; | |
314 | print FILE @id; | |
315 | close FILE; | |
316 | } | |
317 | } | |
318 | $out = "ERR"; | |
319 | ||
320 | #utmgif | |
321 | } elsif ($url =~ m/^https?\:\/\/www\.google-analytics\.com\/__utm\.gif\?.*/) { | |
322 | $out="OK store-id=http://squid/google-analytics/__utm.gif"; | |
323 | ||
324 | #fbcdn.net or akamaihd.net video range | |
325 | } elsif ($url =~ m/^https?\:\/\/.*(fbcdn\.net|akamaihd\.net).*\/([\w-]+\.[\w]{2,4}).*(bytestart[=%&?\/][\d]+[&\/]byteend[=%&?\/][\d]+)/) { | |
326 | $out="OK store-id=http://squid/$1/$2/$3"; | |
327 | ||
328 | #fbcdn.net or akamaihd.net with size | |
329 | } elsif ($url =~ m/^https?\:\/\/.*(fbcdn\.net|akamaihd\.net).*\/([a-zA-Z][\d]+[x][\d]+\/[\w-]+\.[\w]{2,4})($|\?)/) { | |
330 | $out="OK store-id=http://squid/$1/$2"; | |
331 | ||
332 | #fbcdn.net or akamaihd.net safe_image.php | |
333 | } elsif ($url =~ m/^https?\:\/\/.*(fbcdn\.net|akamaihd\.net).*\/safe_image\.php\?(.*)/) { | |
334 | $out="OK store-id=http://squid/$1/$2"; | |
335 | ||
336 | #reverbnation | |
337 | } elsif ($url =~ m/^https?\:\/\/c2lo\.reverbnation\.com\/audio_player\/ec_stream_song\/(.*)\?.*/) { | |
338 | $out="OK store-id=http://squid/reverbnation/$1"; | |
339 | ||
340 | #playstore | |
341 | } elsif ($url =~ m/^https?\:\/\/.*\.c\.android\.clients\.google\.com\/market\/GetBinary\/GetBinary\/(.*\/.*)\?.*/) { | |
342 | $out="OK store-id=http://squid/android/market/$1"; | |
343 | ||
344 | ||
345 | #filehost | |
346 | } elsif ($url =~ m/^https?\:\/\/.*datafilehost.*\/get\.php.*file\=(.*)/) { | |
347 | $out="OK store-id=http://squid/datafilehost/$1"; | |
348 | ||
349 | ||
350 | #speedtest | |
351 | } elsif ($url =~ m/^https?\:\/\/.*(speedtest|espeed).*\/(.*\.(txt|jpg)).*/) { | |
352 | $out="OK store-id=http://squid/speedtest/$2"; | |
353 | ||
354 | ||
355 | #filehippo | |
356 | } elsif ($url =~ m/^https?\:\/\/.*\.filehippo\.com\/.*\/([\w-]+\.[\w]{2,4})\?.*/) { | |
357 | $out="OK store-id=http://squid/filehippo/$1"; | |
358 | ||
359 | ||
360 | #4shared preview.mp3 | |
361 | } elsif ($url =~ m/^https?\:\/\/.*\.4shared\.com\/.*\/(.*\/.*)\/dlink.*preview.mp3/) { | |
362 | $out="OK store-id=http://squid/4shared/preview/$1"; | |
363 | ||
364 | #4shared | |
365 | } elsif ($url =~ m/^https?\:\/\/.*\.4shared\.com\/download\/(.*\/.*)\?tsid.*/) { | |
366 | $out="OK store-id=http://squid/4shared/download/$1"; | |
367 | ||
368 | #savefile-animeindo.tv | |
369 | } elsif ($url =~ m/^https?:\/\/www\.savefile\.co\:182\/.*\/(.*\.(mp4|flv|3gp)).*/) { | |
370 | $out="OK store-id=http://squid/savefile:182/$1"; | |
371 | ||
372 | #imdb | |
373 | } elsif ($url =~ m/^https?\:\/\/video\-http\.media\-imdb\.com\/(.*\.mp4)\?.*/) { | |
374 | $out="OK store-id=http://squid/imdb/$1"; | |
375 | ||
376 | #sourceforge | |
377 | } elsif ($url =~ m/^https?\:\/\/.*\.dl\.sourceforge\.net\/([\w-]+\.[\w]{2,3})/) { | |
378 | $out="OK store-id=http://squid/sourceforge/$1"; | |
379 | ||
380 | ||
381 | #steampowered dota 2 | |
382 | #} elsif ($url =~ m/^https?\:\/\/.*(steam(powered|content).*\/(client|depot)\/[\d]+\/(chunk|manifest)\/[^\?\s]*).*/) { | |
383 | # $out="OK store-id=http://squid/$1"; | |
384 | ||
385 | #steampowered dota 2 | |
386 | } elsif ($url =~ m/^https?\:\/\/.*steam(powered|content).*\/((client|depot)\/[\d]+\/(chunk|manifest)\/[^\?\s]*).*/) { | |
387 | $out="OK store-id=http://squid/steam/content-powered/$2"; | |
388 | ||
389 | } else { | |
390 | $out="ERR"; | |
391 | } | |
392 | ||
393 | if ($X[0] =~ m/^http.*/) { | |
394 | print $logfh "$timenow"."in : url=$urlreferer\n" if ($debug>=1); | |
395 | print $logfh "$timenow"."out: $out\n" if ($debug>=1); | |
396 | print $logfh "\n" if ($debug>=1); | |
397 | print "$out\n"; | |
398 | } else { | |
399 | print $logfh "$timenow"."in : chanel=$chanel url=$urlreferer\n" if ($debug>=1); | |
400 | print $logfh "$timenow"."out: chanel=$chanel $out\n" if ($debug>=1); | |
401 | print $logfh "\n" if ($debug>=1); | |
402 | print "$chanel $out\n"; | |
403 | } | |
404 | } | |
405 | close $logfh if ($debug); | |
406 | #### akhir script storeid.pl, jangan ditulis ### | |
407 | ||
408 | ### awal speedtest.pl, jangan ditulis ### | |
409 | #!/usr/bin/perl | |
410 | ||
411 | $|=1; | |
412 | while (<>) { | |
413 | @X = split; | |
414 | if ($X[0] =~ m/^http.*/) { | |
415 | $url = $X[0]; | |
416 | $referer = $X[1]; | |
417 | $urlreferer = $X[0] ." ". $X[1]; | |
418 | } else { | |
419 | $chanel = $X[0]; | |
420 | $url = $X[1]; | |
421 | $referer = $X[2]; | |
422 | $urlreferer = $X[1] ." ". $X[2]; | |
423 | } | |
424 | ||
425 | if ($url=~ m/^https?\:\/\/.*(speedtest|espeed).*\/((latency|upload|random.*)\.(jpg|txt|php))/) { | |
426 | $out="OK rewrite-url=http://10.212.212.212:8033/speedtest/$2"; | |
427 | } else { | |
428 | $out="ERR"; | |
429 | } | |
430 | ||
431 | if ($X[0] =~ m/^http.*/) { | |
432 | print "$out\n"; | |
433 | } else { | |
434 | print "$chanel $out\n"; | |
435 | } | |
436 | } | |
437 | ### akhir speedtest.pl, jangan ditulis ### | |
438 | ||
439 | chmod +x /etc/squid/squid.conf | |
440 | chmod +x /etc/squid/storeid.pl | |
441 | chmod +x /etc/squid/speedtest.pl | |
442 | squid -zN | |
443 | wget --no-check-certificate -O /etc/init.d/squid https://gist.githubusercontent.com/e7d/1f784339df82c57a43bf/raw/squid.sh | |
444 | chmod +x /etc/init.d/squid | |
445 | update-rc.d squid defaults | |
446 | service squid start | |
447 | ### edit isi /etc/rc.local, tambahkan baris berikut : | |
448 | ### awal penambahan di rc.local, jangan ditulis ### | |
449 | iptables -t mangle -N DIVERT | |
450 | iptables -t mangle -A DIVERT -j MARK --set-mark 1 | |
451 | iptables -t mangle -A DIVERT -j ACCEPT | |
452 | iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT | |
453 | iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129 | |
454 | iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129 | |
455 | iptables -t mangle -A PREROUTING -p tcp --dport 8777 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129 | |
456 | iptables -t mangle -A PREROUTING -p tcp --dport 182 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129 | |
457 | iptables -t mangle -A PREROUTING -p tcp --dport 5050 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129 | |
458 | iptables -t mangle -A PREROUTING -p tcp --dport 443 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3127 | |
459 | ip rule add fwmark 1 lookup 212 | |
460 | ip route add local 0.0.0.0/0 dev lo table 212 | |
461 | ||
462 | #intercept | |
463 | #iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3129 | |
464 | #iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3127 | |
465 | ### akhir penambahan rc.local, jangan ditulis ### | |
466 | ||
467 | reboot |