Video Cache – mit Squid im lokalen Netz

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"

ESXi mit SSH in 4 Schritten

in der Standart Installation von VMware ESXi ist ein Remotezugriff via SSH auf die Konsole des Hosts leider deaktiviert. Damit ist es auch nicht möglich Dateien von oder zum Host zu übertragen. Das aktivieren dieser Funktion ist jedoch recht einfach möglich (allerdings nicht supportet!)

1.) An der Konsole des ESXi hosts ALT-F1 drücken um in die reguläre Konsole zu kommen.

2.) Nun muss man blind das Wort unsupported eingeben und danach Enter drücken.

3.) Mit dem folgendem Befehl passen wir die Konfiguration ein wenig an

sed -e "s/#ssh/ssh/g" -i /etc/inetd.conf

4.) Um die Änderungen zu aktivieren, muss noch folgender Befehl ausgeführt werden

kill  -HUP `ps | grep inetd | cut -c1-5`


ESXi + SSH
ESXi + SSH

Google’s 10 to the 100th Projekt

Im vergangenen September kündigte Google das Projekt 10^100 als Teil des 10. Geburtstags an. Es war ein Appell an die Welt, gute Ideen zu sammeln, welche die Welt verändern können.

Viele Menschen reagierten auf diese Aufforderung von Google und haben insgesamt 154.000 Ideen zusammengetragen, aus denen Google die 16 Top-Ideen her-ausgesucht hat.

Google lässt nun die User entscheiden, welches dieser Projekte mit 10 Millionen Dollar unterstützt/realisiert wird.

Hier geht es zur Abstimmung:
project10tothe100.com

Project 10^100 is a call for ideas to change the world by helping as many people as possible.” – Google

Swiftfox – optimierter Mozilla Firefox Browser



Swiftfox
Swiftfox



Was ist Swiftfox?

Swiftfox ist wie die Überschrift schon vermuten lässt, ein optimierter Mozilla Firefox, welcher jeweils für bestimmte Prozessor Typen optimiert/kompiliert wurde, so dass dieser wesentlich schneller ist als der normale Firefox. Ich habe Swiftfox zwar schon einmal in einem Beitag erwähnt, jedoch nicht so ausführlich wie es sein sollte ;-)

Welche Swiftfox Version ist für mich gedacht?

Werfen Sie einen Blick auf diese Tabelle und sehen, welche Swiftfox Version die optimal zu deinem Computer bzw. Prozessor passt.

swiftfox-i686 (Older AMD & Intel)
swiftfox-athlon64 (AMD64 users on a 64bit OS)
swiftfox-athlon64-32bit (AMD64 users on a 32bit OS)
swiftfox-prescott (Intel Prescott and newer)

Wie installiere ich Swiftfox in Ubuntu / Debian?

Ubuntu (und alle auf Debian basierende Distribution) können ein Repository zu Ihrer sources.list hinzufügen, diese optimierte Firefox Version zu installieren:

sudo sh -c "echo 'deb http://getswiftfox.com/builds/debian unstable non-free'>> /etc/apt/sources.list"

und dann installierst du Swiftfox:

apt-get update && aptitude install

Wie installiere ich Swiftfox auf anderen Linux-Distributionen?

Wenn Sie nicht mit Ubuntu/Debian arbeiten, ist es am einfachsten, wenn du Swiftfox mit folgendem Installationsprogramm installierst.

swiftfox-i686 (Older AMD & Intel)

swiftfox-athlon64 (AMD64 users on a 64bit OS)

swiftfox-prescott (Intel Prescott and newer)

chmod +x install-swiftfox.sh
./install-swiftfox.sh

Wie installiere ich Swiftfox auf Windows?

Diese optimierte Firefox Version gibt es auch für Windows, mit allen Vorzügen, welche zuvor beschrieben wurden. Zudem gib es auch noch eine portable Version für den USB-Stick – Download – Link

– tweak Profile Patch
– integrierter Adobe Flash Player 10.0.32.18
– Windows Media Player Firefox Plugin 1.0.0.8
– reduzierter Speicherverbrauch durch jemalloc
– Speed Verbesserung durch Profile-Guided Optimierung
– P1/P2/P3 all build with VC9
– P1 build with -Ox -GLAs -fp:fast -GS-, for Generic CPU
– P2 build with -Ox -GLAs arch:SSE -fp:fast -GS-
– P3 build build with -Ox -GLAs arch:SSE2 -fp:fast -GS-

somit solltest du folgende Version verwenden:

P1
für Standart CPU’s

P2
für Athlon XP, Duron 1.1 GHz+, Pentium III ,Celeron 500+

P3
für AMD Athlon 64, Sempron, Opteron processor family, Intel Pentium 4/D/M, Intel Xeon, Intel Atom, Intel Core Prozessor Familie und andere moderne CPU’s.

Funktionieren mein Firefox-Erweiterungen und Themes mit Swiftfox?

Swiftox ist eine optimierte Firefox Version, daher werden alle Add-on oder auch Themes, welche mit Firefox funktionieren auch mit Swiftfox laufen. Darüber hinaus wird Swiftfox Ihr Firefox-Profil weiter verwenden, so dass alle Firefox-Einstellungen bleiben, während Sie Swiftfox werden.

Twitter automatisieren!

Auf folgender Webseite (www.catswhocode.com) habe ich ein paar sehr interessante PHP-Skript gefunden, eines davon stelle ich hier kurz vor.

Das Skript läuft “out of the box”, dass heißt es ist nicht notwendig, dass man irgendwas von dem folgenden PHP-Code versteht ^^ alles was du tun musst ist, die Variablen einzusetzen -> $user, $pass und $term.

$user = "Benutzernamen";
$pass = "Passwort";
$term = "Suchbegriff";

Hinter $term steht der Begriff für die Suche in der User-Timeline, wer diesen Begriff erwähnt, wird automatisch von dir verfolgt…

twitter_neu

< ?php
// Twitter Auto-follow Script by Dave Stevens - http://davestevens.co.uk

$user = "enter_your_twitter_username_here";
$pass = "enter_your_twitter_password_here";

$term = "enter_the_search_term_to_follow_here";

$userApiUrl = "http://twitter.com/statuses/friends.json";

$ch = curl_init($userApiUrl);
curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$apiresponse = curl_exec($ch);
curl_close($ch);
$followed = array();

if ($apiresponse) {
 $json = json_decode($apiresponse);
 if ($json != null) {
  foreach ($json as $u) {
   $followed[] = $u->name;
  }
 }
}

$userApiUrl = "http://search.twitter.com/search.json?q=" . $term . "&rpp=100";
$ch = curl_init($userApiUrl);
curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$apiresponse = curl_exec($ch);
curl_close($ch);

if ($apiresponse) {
 $results = json_decode($apiresponse);
 $count = 20;
 if ($results != null) {
  $resultsArr = $results->results;
  if (is_array($resultsArr)) {
   foreach ($resultsArr as $result) {
    $from_user = $result->from_user;
    if (!in_array($from_user,$followed)) {
     $ch = curl_init("http://twitter.com/friendships/create/" . $from_user . ".json");
     curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass);
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS,"follow=true");
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     $apiresponse = curl_exec($ch);

     if ($apiresponse) {
      $response = json_decode($apiresponse);
      if ($response != null) {
       if (property_exists($response,"following")) {
        if ($response->following === true) {
         echo "Now following " . $response->screen_name . "n";
        } else {
         echo "Couldn't follow " . $response->screen_name . "n";
        }
       } else {
        echo "Follow limit exceeded, skipped " . $from_user . "n";
       }
      }
     }
     curl_close($ch);
    } else {
     echo "Already following " . $from_user . "n";
    }
   }
  }
 }
}
?>

ggf. kann man sich auch noch ein crontab einrichten, welcher dieses Skript ausführt

wildcards in der shell

Wildcards sind eine Shell-Funktion, mit der Kommandozeile viel mächtiger als alle GUI-Datei-Manager macht. – Wiki

Hier ist eine Liste der am häufigsten verwendeten Platzhalter in der bash:

* -> Kein oder mehr Zeichen
? -> genau ein Zeichen
[bcde] -> genau eines dieser Zeichen (“b” bis “e”)
[ae] -> genau ein Zeichen aus dem angegebenen Bereich (“a” bis “e”)
[!abcde] -> jedes Zeichen, das nicht aufgeführt ist
[!ae] -> alle Zeichen, die nicht im angegebenen Bereich sind
{debian,linux} -> genau ein ganzes Wort von den angegebenen Wörtern

Beispiele:

Löscht jede Datei in dem aktuellen Verzeichnis, außer die die mit einem “.” beginnen:

rm *

verschiebt alle HTML-Dateien, die das Wort “linux” in ihrem Dateinamen haben, in dem Unterverzeichnis “neues_verzeichnis”:

mv *linux*.html neues_verzeichnis/

zeigt alle Dateien an, im aktuellen Verzeichnis an, die mit “d” beginnen und auf “.txt” enden:

ls d*.txt

löscht alle Dateien, deren Namen “junk.” gefolgt von genau drei beliebigen Zeichen ist:

rm junk.???

zeigt eine Liste aller Dateien oder Verzeichnisse an, deren Namen “sda” oder “hda” mit genau einer darauf folgenden Ziffer ist:

ls [sh]da[0-9]

zeigt eine Liste aller Dateien oder Verzeichnisse an, deren Namen “hda” mit genau zwei darauf folgenden Ziffer ist:

ls hda[0-9][0-9]

alle Dateien oder Verzeichnisse werden angezeigt, deren Namen entweder mit “hd” oder “sd” gefolgt von einem einzelnen Zeichen zwischen “a” und “c”:

ls {hd,sd}[ac]

kopiert alle Dateien, die mit einem Großbuchstaben beginnen, in das Verzeichnis dir2

cp [AZ]* dir2

löscht alle Dateien, die nicht auf “c”, “e”, “h” oder “g” enden:

rm *[!cehg]

Nice Try!


Nice Tray
Nice Tray


bash – Version < 3.0:

for i in $(seq 1 500)
do
   echo "I will not throw paper airplanes in class."
done

bash – Version 3.0+:

for i in {1..500}
do
   echo "I will not throw paper airplanes in class."
done

bash – Alternative:

for (( c=1; c< =500; c++ ))
do
   echo "I will not throw paper airplanes in class."
done

bash – unendliche Schleife:

for (( ; ; ))
do
   echo "I will not throw paper airplanes in class."
done

[ CTRL+C ]

um diese Schleife wieder zu beenden