<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>netz-guru blog &#187; script</title>
	<atom:link href="http://www.netz-guru.de/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.netz-guru.de</link>
	<description>Webtechniken, Sicherheit und Interessantes...</description>
	<lastBuildDate>Fri, 18 Jun 2010 16:17:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nie wieder vergessen, den Müll rauszubringen &#8211; SMS Reminder Script</title>
		<link>http://www.netz-guru.de/2010/05/26/nie-wieder-vergessen-den-mull-rauszubringen-sms-reminder-script/</link>
		<comments>http://www.netz-guru.de/2010/05/26/nie-wieder-vergessen-den-mull-rauszubringen-sms-reminder-script/#comments</comments>
		<pubDate>Wed, 26 May 2010 12:00:21 +0000</pubDate>
		<dc:creator>Florian Wiessner</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[benachrichtigung]]></category>
		<category><![CDATA[erinnerung]]></category>
		<category><![CDATA[müll]]></category>
		<category><![CDATA[müllabfuhr]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sms]]></category>

		<guid isPermaLink="false">http://www.netz-guru.de/?p=172</guid>
		<description><![CDATA[Wer kennt es nicht? Die Müllabfuhr holt den Müll ab und man hat leider vergessen, seine Mülltonne rauszustellen. Nun habe ich mir selbst mit einem kleinen Script Abhilfe geschaffen. Das Script stellt die Tonne zwar nicht zur Abholung bereit, verschickt jedoch am Abend vorher eine SMS. Die Daten dafür holt sich das Script direkt von [...]]]></description>
			<content:encoded><![CDATA[<p>Wer kennt es nicht? Die Müllabfuhr holt den Müll ab und man hat leider vergessen, seine Mülltonne rauszustellen. Nun habe ich mir selbst mit einem kleinen Script Abhilfe geschaffen. Das Script stellt die Tonne zwar nicht zur Abholung bereit, verschickt jedoch am Abend vorher eine SMS. Die Daten dafür holt sich das Script direkt von der Webseite des Abfallzweckverbandes (das Script funktioniert im Moment deshalb nur im Landkreis Hof). <a title="http://office.smart-weblications.net/muellscript.phps" href="http://office.smart-weblications.net/muellscript.phps">Hier</a> kann man sich das Script ansehen.</p>
<p>
<a href="http://www.bon-kredit.de/go.cgi?pid=31639&#038;wmid=84&#038;target=partner" target="_blank"><img src="http://www.bon-kredit.de/res/banner/wm001.gif" height="60" width="468" border="0"></a></p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.netz-guru.de/2010/05/26/nie-wieder-vergessen-den-mull-rauszubringen-sms-reminder-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anti Telemarketing Script Praxis Test&#8230;</title>
		<link>http://www.netz-guru.de/2009/06/16/anti-telemarketing-script-praxis-test/</link>
		<comments>http://www.netz-guru.de/2009/06/16/anti-telemarketing-script-praxis-test/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 07:04:07 +0000</pubDate>
		<dc:creator>Florian Wiessner</dc:creator>
				<category><![CDATA[Witz und Spass]]></category>
		<category><![CDATA[anti telemarketing]]></category>
		<category><![CDATA[callcenter]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[telemarketer]]></category>

		<guid isPermaLink="false">http://www.netz-guru.de/?p=124</guid>
		<description><![CDATA[Telemarketing nervt &#8211; zum Glück gibt es ja das Anti-Telemarketing Script (http://www.xs4all.nl/~egbg/duits.pdf)
Hier mal das Resultat:
genial1
]]></description>
			<content:encoded><![CDATA[<p>Telemarketing nervt &#8211; zum Glück gibt es ja das Anti-Telemarketing Script (<a href="http://www.xs4all.nl/~egbg/duits.pdf">http://www.xs4all.nl/~egbg/duits.pdf</a>)</p>
<p>Hier mal das Resultat:</p>
<p><a href="http://www.netz-guru.de/wp-content/uploads/2009/06/genial1.mp3">genial1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.netz-guru.de/2009/06/16/anti-telemarketing-script-praxis-test/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.netz-guru.de/wp-content/uploads/2009/06/genial1.mp3" length="591984" type="audio/mpeg" />
		</item>
		<item>
		<title>Howto convert mp3-Streams to aac+ Streams in Linux</title>
		<link>http://www.netz-guru.de/2008/08/06/howto-convert-mp3-streams-to-aac-streams-in-linux/</link>
		<comments>http://www.netz-guru.de/2008/08/06/howto-convert-mp3-streams-to-aac-streams-in-linux/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 08:08:47 +0000</pubDate>
		<dc:creator>Florian Wiessner</dc:creator>
				<category><![CDATA[Webtechniken]]></category>
		<category><![CDATA[aac+]]></category>
		<category><![CDATA[aac+ stream]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[convert aac]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shoutcast]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[transcoder]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.netz-guru.de/?p=36</guid>
		<description><![CDATA[Was ist der Unterschied zwischen aac+ und mp3?
MPEG-4 High Efficiency Advanced Audio Coding (kurz HE-AAC), auch AAC+ v1 genannt, ist ein lizenzpflichtiger Audio-Codec, der Moving Picture Experts Group (MPEG). Der Standard liefert bei niedrigen Bitraten vergleichsweise gute Ergebnisse und eignet sich daher besonders für Live-Streams.

Im Verhältnis zu mp3 bietet aac+ auch bei niedrigen Bitraten (32kbit) [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Was ist der Unterschied zwischen aac+ und mp3?</strong></p>
<blockquote><p><strong>MPEG-4 High Efficiency Advanced Audio Coding</strong> (kurz <em>HE-AAC</em>), auch <strong>AAC+ v1</strong> genannt, ist ein lizenzpflichtiger <a title="Codec" href="http://de.wikipedia.org/wiki/Codec#Audiocodecs">Audio-Codec</a>, der <a title="Moving Picture Experts Group" href="http://de.wikipedia.org/wiki/Moving_Picture_Experts_Group">Moving Picture Experts Group</a> (MPEG). Der Standard liefert bei niedrigen Bitraten vergleichsweise gute Ergebnisse und eignet sich daher besonders für <a title="Streaming Audio" href="http://de.wikipedia.org/wiki/Streaming_Audio">Live-Streams</a>.</p></blockquote>
<p><span id="more-36"></span><br />
Im Verhältnis zu mp3 bietet aac+ auch bei niedrigen Bitraten (32kbit) eine akzeptable gute Qualität. Allerdings ist aac+ ein lizenzplfichtiger Audio-Codec und für Linux gibt es dafür nicht wirklich viel Software, welche dieses Format encoden können. Decoder gibt es wie Sand am Meer, aber wenn man eben in aac+ Streamen möchte und die Daten als mp3 vorliegen, so braucht man dazu einen Encoder der die Daten von mp3 nach aac+ konvertiert.<br />
<!--adsense-block--><br />
<strong>Motivation</strong></p>
<p>Ein <a href="http://www.int-tech.de" target="_blank">Bekannter</a> hat mich gestern deshalb gefragt, ob ich dafür eine Lösung parat hätte. Ich habe dann mal etwas ausgefuchst, um einfach den mp3 Stream von <a href="http://www.antenne.de" target="_blank">Antenne Bayern</a> in aac+ zu konvertieren.</p>
<p><strong>Benötigte Software</strong></p>
<p>Folgende Software wird benötigt:</p>
<ul>
<li><a href="http://www.shoutcast.com" target="_blank">shoutcast server</a></li>
<li><a href="http://teknoraver.net/software/mp4tools/" target="_blank">mp4tools</a>, genauer aacplusenc (lokaler Mirror: <a href="http://www.netz-guru.de/mirror/mp4tools/" target="_blank">http://www.netz-guru.de/mirror/mp4tools/</a>)</li>
<li><a href="http://www.mplayerhq.hu/" target="_blank">mplayer</a></li>
<li>PHP &#8211; oder eine andere Scriptsprache, welche Sockets und Stdin lesen und schreiben kann, z.b. Perl</li>
<li>Linux &#8211; (ich habe <a href="http://www.ubuntu.com" target="_blank">ubuntu</a> verwendet)</li>
</ul>
<p>Dies reicht aus um den Stream konvertieren zu können und als aac+ Stream weiter verwenden zu können. Ich gehe davon aus dass Du als User in der Lage bist, shoutcast, mp4tools und mplayer zu installieren.</p>
<p><strong>Let&#8217;s do it!</strong></p>
<p>Ich habe dafür auf einem <a title="Vlinux VServer" href="http://vlinux.biz" target="_blank">VServer</a> einen user &#8220;streaming&#8221; angelegt und bin in das Home-Dir des Users gewechselt. Entpacke dort den shoutcast Server. Zunächst müssen wir mit mkfifo einen <a href="http://de.wikipedia.org/wiki/FIFO" target="_blank">Fifo</a> erstellen, über den wir später den Stream von Antenne Bayern durchschleusen:</p>
<p><em>~# mkfifo streamin</em></p>
<p>Dann müssen wir ein kleines Script schreiben, welches die encodierten aac+ Daten an den Shoutcast-Server übergibt:</p>
<p><code><br />
#!/usr/bin/php<br />
&lt;?php<br />
$address = "192.168.200.10";<br />
$port = 8000;<br />
$sock = fsockopen($address,($port+1),&amp;$errno, &amp;$errstr, 10);<br />
fputs($sock,"changeme\r\n"); // Passwort ändern!<br />
$res = fgets($sock);<br />
wlog($res);<br />
fputs($sock,"icy-name:my Server<br />
icy-genre:<br />
icy-url:http://www.shoutcast.com<br />
icy-irc:%23shoutcast<br />
icy-icq:0<br />
icy-aim:N%2FA<br />
icy-pub:1<br />
icy-br:32<br />
content-type:audio/aacp<br />
icy-reset:1</code><br />
<code><br />
");<br />
$res = fgets($sock);<br />
wlog($res);<br />
$fd = fopen("php://stdin","r");<br />
while (!feof($fd)) {<br />
$buf = fgets($fd,512);<br />
//wlog("Sending 512 bytes");<br />
fputs($sock,$buf);<br />
}<br />
fclose($fd);<br />
function wlog($msg) {<br />
$fd = fopen("/tmp/ss.log","a");<br />
fputs($fd,$msg."\n");<br />
fclose($fd);<br />
}<br />
?&gt;</code></p>
<p>Adresse und Port müssen angepasst werden, so dass hier der installierte Shoutcast Server angesprochen wird. Das Script habe ich bei mir als &#8220;simple_server.php&#8221; gespeichert und die Modes 755 gesetzt, damit dieses direkt über die Console gestartet werden kann (sollte das nicht funktionieren, fehlt php-cli!).</p>
<p>Nun haben wir schon alles was wir benötigen um zu starten:</p>
<p><em>aacplusenc streamin &#8211; 32 | ./simple_server.php &amp; mplayer -ao pcm:file=streamin http://mp3.webradio.antenne.de:80</em></p>
<p>Dies erzeugt uns den aac+ Stream, welchen man dann z.B. mit VLC oder Winamp über den installierten Shoutcast Server abspielen kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netz-guru.de/2008/08/06/howto-convert-mp3-streams-to-aac-streams-in-linux/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>apache2, virtualdocumentroot und Logfiles in verschiedene Files</title>
		<link>http://www.netz-guru.de/2008/05/21/apache2-virtualdocumentroot-und-logfiles-in-verschiedene-files/</link>
		<comments>http://www.netz-guru.de/2008/05/21/apache2-virtualdocumentroot-und-logfiles-in-verschiedene-files/#comments</comments>
		<pubDate>Wed, 21 May 2008 19:18:05 +0000</pubDate>
		<dc:creator>Florian Wiessner</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Usefull Things]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[logfiles]]></category>
		<category><![CDATA[mass virtual hosting]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[virtualdocumentroot]]></category>

		<guid isPermaLink="false">http://www.netz-guru.de/?p=24</guid>
		<description><![CDATA[Wieder mal ein spezifisches Problem:
Wer mit apache2 einfaches Massenhosting betreiben will, der will nicht für jeden Virtualhost einen VirtualHost-Container in seiner Apache Konfiguration anlegen, denn ab ca. 500 Domains als VHostContainer wird zum einen die Konfiguration sehr unübersichtlich und ausserdem wird der Indianer dadurch langsamer, aufgrund von vielen offenen Filehandles. Muss man ja auch nicht, [...]]]></description>
			<content:encoded><![CDATA[<p>Wieder mal ein spezifisches Problem:</p>
<p>Wer mit apache2 einfaches Massenhosting betreiben will, der will nicht für jeden Virtualhost einen VirtualHost-Container in seiner Apache Konfiguration anlegen, denn ab ca. 500 Domains als VHostContainer wird zum einen die Konfiguration sehr unübersichtlich und ausserdem wird der Indianer dadurch langsamer, aufgrund von vielen offenen Filehandles. Muss man ja auch nicht, schliesslich gibt es das vhost_alias Modul, mit welchem man ein VirtualDocumentRoot konfigurieren kann, dass dann das DocumentRoot anhand des übermittelten ServerName oder HTTP-Host Headers auswertet.</p>
<p>In der Apache Konfiguration sieht das dann z.B. so aus:<br />
<code><br />
&lt;VirtualHost *&gt;<br />
UseCanonicalName Off<br />
Options Indexes Includes FollowSymLinks MultiViews<br />
VirtualDocumentRoot /domains/%0/www<br />
VirtualScriptAlias  /domains/%0/cgi-bin/<br />
CustomLog access_log vcommon<br />
&lt;Directory /domains/%0/www&gt;<br />
AllowOverride All<br />
&lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;<br />
</code><br />
Das Problem ist nun, dass alle Logs in ein einziges File &#8220;access_log&#8221; geloggt werden, und es schwierig ist, hier für die einzelnen gehosteten Domains Statistiken zu erzeugen etc.</p>
<p>Man kann nun aber um dieses Problem zu umgehen Folgendes tun:<br />
Man erzeugt in /etc/apache2 ein Script welches die Ausgabe des Logfiles aufteilt und in mehrere Dateien speichert:</p>
<p><code><br />
</code><code><span style="#000000;"> #!/usr/bin/php<br />
<span style="#0000bb;">&lt;?php</span></span></code></p>
<p>$path <span style="#007700;">= </span><span style="#dd0000;">&#8220;/var/log/apache2&#8243;</span><span style="#007700;">;<br />
</span><span style="#0000bb;">$fh_timeout </span><span style="#007700;">= </span><span style="#0000bb;">30</span><span style="#007700;">; </span><span style="#ff8000;">// 30 sek.</span></p>
<p><span style="#0000bb;">$fd </span><span style="#007700;">= </span><span style="#0000bb;">fopen</span><span style="#007700;">(</span><span style="#dd0000;">&#8220;php://stdin&#8221;</span><span style="#007700;">, </span><span style="#dd0000;">&#8220;r&#8221;</span><span style="#007700;">);</span></p>
<p>while(!<span style="#0000bb;">feof</span><span style="#007700;">(</span><span style="#0000bb;">$fd</span><span style="#007700;">)) {</span></p>
<p><span style="#0000bb;">$row </span><span style="#007700;">= </span><span style="#0000bb;">fgets</span><span style="#007700;">(</span><span style="#0000bb;">$fd</span><span style="#007700;">);</span></p>
<p>list(<span style="#0000bb;">$vhost</span><span style="#007700;">,</span><span style="#0000bb;">$h</span><span style="#007700;">,</span><span style="#0000bb;">$l</span><span style="#007700;">,</span><span style="#0000bb;">$u</span><span style="#007700;">,</span><span style="#0000bb;">$t</span><span style="#007700;">,</span><span style="#0000bb;">$r</span><span style="#007700;">,</span><span style="#0000bb;">$s</span><span style="#007700;">,</span><span style="#0000bb;">$b</span><span style="#007700;">,</span><span style="#0000bb;">$referrer</span><span style="#007700;">,</span><span style="#0000bb;">$ua</span><span style="#007700;">) = </span><span style="#0000bb;">explode</span><span style="#007700;">(</span><span style="#dd0000;">&#8220;;&#8221;</span><span style="#007700;">,</span><span style="#0000bb;">$row</span><span style="#007700;">,</span><span style="#0000bb;">10</span><span style="#007700;">);</span></p>
<p>if (!${<span style="#0000bb;">$vhost</span><span style="#007700;">}) { ${</span><span style="#0000bb;">$vhost</span><span style="#007700;">} = </span><span style="#0000bb;">fopen</span><span style="#007700;">(</span><span style="#0000bb;">$path</span><span style="#007700;">.</span><span style="#dd0000;">&#8220;/&#8221;</span><span style="#007700;">.</span><span style="#0000bb;">$vhost</span><span style="#007700;">.</span><span style="#dd0000;">&#8220;_access.log&#8221;</span><span style="#007700;">,</span><span style="#dd0000;">&#8220;a+&#8221;</span><span style="#007700;">); }<br />
</span><span style="#0000bb;">$lastwrite</span><span style="#007700;">[</span><span style="#0000bb;">$vhost</span><span style="#007700;">] = </span><span style="#0000bb;">time</span><span style="#007700;">();<br />
</span><span style="#0000bb;">fputs </span><span style="#007700;">(${</span><span style="#0000bb;">$vhost</span><span style="#007700;">},</span><span style="#dd0000;">&#8220;$h $l $u $t $r $s $b $referrer $ua&#8221;</span><span style="#007700;">);</span></p>
<p>foreach (<span style="#0000bb;">$lastwrite </span><span style="#007700;">as </span><span style="#0000bb;">$vhost </span><span style="#007700;">=&gt; </span><span style="#0000bb;">$time</span><span style="#007700;">) {<br />
if ((</span><span style="#0000bb;">time</span><span style="#007700;">() &#8211; (</span><span style="#0000bb;">$time</span><span style="#007700;">+</span><span style="#0000bb;">30</span><span style="#007700;">))  &gt;=</span><span style="#0000bb;">0</span><span style="#007700;">) {<br />
</span><span style="#0000bb;">fclose</span><span style="#007700;">(${</span><span style="#0000bb;">$vhost</span><span style="#007700;">});<br />
unset(${</span><span style="#0000bb;">$vhost</span><span style="#007700;">});<br />
unset(</span><span style="#0000bb;">$lastwrite</span><span style="#007700;">[</span><span style="#0000bb;">$vhost</span><span style="#007700;">]);<br />
}<br />
}<br />
}<br />
</span><span style="#0000bb;">?&gt;</span></p>
<p>Nun müssen wir in der apache2 Konfiguration noch das Logformat ändern und die Ausgabe des Logfiles an unser Script durchpipen:<br />
<code><br />
LogFormat "%V;%h;%l;%u;%t;\"%r\";%&gt;s;%b;\"%{Referer}i\";\"%{User-agent}i\"" vcommon<br />
CustomLog "|/etc/apache2/splitlogs.php" vcommon</code></p>
<p>Dann Apache einmal neu starten und künftig werden pro Host separate Logfiles erstellt.</p>
<p>Edit: Fast hätte ich es vergessen! Das Script braucht natuerlich eXecutable-Flag also am besten chmod  755 /etc/apache2/splitlogs.php ausführen!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netz-guru.de/2008/05/21/apache2-virtualdocumentroot-und-logfiles-in-verschiedene-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
