SUCKUP.de

Video Cache – mit Squid im lokalen Netz

This blog post has been published on 2010-02-09 and may be out of date.

Heute stelle ich ein Programm für Squid vor, welches jedoch nicht mehr in der Form als freies Programm weiterentwickelt wird,

Unterstützte Webseiten:

1. Youtube Videos – youtube.com
2. Metacafe Videos – metacafe.com
3. DailyMotion Videos – dailymotion.com
4. Google Videos – video.google.com
5. Vimeo HD Videos – vimeo.com
6. Wrzuta Audio – wrzuta.pl
7. MSN Soapbox Videos – soapbox.msn.com
8. Blip TV Videos – blip.tv
9. Break Videos – break.com
10. TV UOL – tvuol.uol.com.br
11. Red Tube Videos
12. X Tube Videos
13. You Pron Videos
14. Tube 8 Videos

Was wird vorausgesetzt?

1.) Squid >= 2.6

2.) Python = 2.4 oder 2.5

3.) Python-urlgrabber

4.) Python-iniparse

5.) Apache ( bzw. Web Server)

Installation:

1.) python-urlgrabber installieren

aptitude install python-urlgrabber

2.) python-iniparse installieren

cd /usr/src/
wget http://iniparse.googlecode.com/files/python-iniparse_0.3.1-1_all.deb
dpkg -i python-iniparse_0.3.1-1_all.deb

3.) VideoCache installieren

cd /usr/src/
wget http://voku-online.de/videocache-1.9.2.tar.gz
tar -xzf videocache-1.9.2.tar.gz
cd videocache-1.9.2/
./setup-deb.py  install
cp videocache-httpd.conf /etc/apache2/conf.d/videocache.conf
cp videocache-sysconfig.conf /etc/videocache.conf
vim /etc/videocache.conf

cachevideos.com/configure

# Wo lauscht dein Squid-Proxy?
proxy = http://127.0.0.1:8080/
# nicht localhost oder 127.0.0.1 als cache_host verwenden, da man dort später nicht per Webserver-Cache zugreifen kann
cache_host = proxy.domain.tld
cp update-vc /usr/sbin/update-vc
chmod 744 /usr/sbin/update-vc
cp scripts/vccleaner /usr/sbin/vccleaner
chmod 744 /usr/sbin/vccleaner
cp -r videocache /usr/share/
cd /var/spool/
mkdir videocache
mkdir videocache/tmp videocache/youtube videocache/metacafe videocache/dailymotion videocache/google videocache/redtube videocache/xtube videocache/vimeo videocache/wrzuta videocache/youporn videocache/soapbox videocache/tube8 videocache/tvuol videocache/bliptv videocache/break
chown -R proxy:proxy videocache
chmod -R 755 videocache
mkdir -p /var/log/videocache
chmod -R 755 /var/log/videocache/
chown -R proxy:proxy /var/log/videocache/
/etc/init.d/apache2 restart

vim /etc/squid3/squid.conf

url_rewrite_program /usr/bin/python /usr/share/videocache/videocache.py
url_rewrite_children 7
acl videocache_allow_url url_regex -i .youtube.com/get_video?
acl videocache_allow_url url_regex -i .youtube.com/videoplayback .youtube.com/videoplay .youtube.com/get_video?
acl videocache_allow_url url_regex -i .youtube.[a-z][a-z]/videoplayback .youtube.[a-z][a-z]/videoplay .youtube.[a-z][a-z]/get_video?
acl videocache_allow_url url_regex -i .googlevideo.com/videoplayback .googlevideo.com/videoplay .googlevideo.com/get_video?
acl videocache_allow_url url_regex -i .google.com/videoplayback .google.com/videoplay .google.com/get_video?
acl videocache_allow_url url_regex -i .google.[a-z][a-z]/videoplayback .google.[a-z][a-z]/videoplay .google.[a-z][a-z]/get_video?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplayback?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplay?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/get_video?
acl videocache_allow_url url_regex -i proxy[a-z0-9-][a-z0-9][a-z0-9][a-z0-9]?.dailymotion.com/
acl videocache_allow_url url_regex -i vid.akm.dailymotion.com/
acl videocache_allow_url url_regex -i [a-z0-9][0-9a-z][0-9a-z]?[0-9a-z]?[0-9a-z]?.xtube.com/(.*)flv
acl videocache_allow_url url_regex -i bitcast.vimeo.com/vimeo/videos/
acl videocache_allow_url url_regex -i va.wrzuta.pl/wa[0-9][0-9][0-9][0-9]?
acl videocache_allow_url url_regex -i .files.youporn.com/(.*)/flv/
acl videocache_allow_url url_regex -i .msn.com.edgesuite.net/(.*).flv
acl videocache_allow_url url_regex -i media[a-z0-9]?[a-z0-9]?[a-z0-9]?.tube8.com/ mobile[a-z0-9]?[a-z0-9]?[a-z0-9]?.tube8.com/
acl videocache_allow_url url_regex -i .mais.uol.com.br/(.*).flv
acl videocache_allow_url url_regex -i .video[a-z0-9]?[a-z0-9]?.blip.tv/(.*).(flv|avi|mov|mp3|m4v|mp4|wmv|rm|ram)
acl videocache_allow_url url_regex -i video.break.com/(.*).(flv|mp4)
acl videocache_allow_dom dstdomain .mccont.com .metacafe.com .redtube.com .cdn.dailymotion.com
acl videocache_deny_url url_regex -i http://[a-z][a-z].youtube.com http://www.youtube.com
url_rewrite_access deny videocache_deny_url
url_rewrite_access allow videocache_allow_url
url_rewrite_access allow videocache_allow_dom
redirector_bypass on
# videocache (127.0.0.1/32) benätigt Zugriff auf Squid
acl our_networks src 127.0.0.1/32 192.168.XXX.0/24 192.168.YYY.0/24
/etc/init.d/squid3 restart

-> im Browser testen

tail -f /var/log/videocache/videocache.log
cd /var/spool/videocache
du -hs

Falls jemand bereits ein “url_rewrite_program” mit seinem Squid nutzt, z.B. zapper und squidclamav dann kann man diese auch gemeinsam mit videocache bereiben. ->

vim /usr/local/bin/wrapzap

#!/bin/sh
squidclamav=/usr/local/bin/squidclamav
zapper=/usr/local/bin/squid_redirect
# NOTICE THE CHANGE -- CHANGE No. 1
videocache=/usr/share/videocache/videocache.py

[...]

# Exec the real zapper (chained with SquidClamav)
#exec /usr/local/bin/zapchain "$zapper" "$squidclamav"
# NOTICE THE CHANGE -- CHANGE NO. 2
exec /usr/local/bin/zapchain "$zapper" "$squidclamav" "$videocache"