<?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>WeizenSpr.eu</title>
	<atom:link href="http://weizenspr.eu/feed/" rel="self" type="application/rss+xml" />
	<link>http://weizenspr.eu</link>
	<description>trennt Spreu vom Weizen</description>
	<lastBuildDate>Tue, 09 Mar 2010 19:41:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Die VooDolls kommen nach Deutschland</title>
		<link>http://weizenspr.eu/2010/die-voodolls-kommen-nach-deutschland/</link>
		<comments>http://weizenspr.eu/2010/die-voodolls-kommen-nach-deutschland/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 17:00:16 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Just Spottet]]></category>
		<category><![CDATA[Weizen]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4614</guid>
		<description><![CDATA[
Am Mittwoch wurde ich von der für Deutschland zuständigen Country-Managerin der Firma Skytale AB angeschrieben, die mich fragte, ob ich nicht mal ihr neues Produkt &#8211; die VooDolls &#8211; unter die Lupe nehmen möchte. Als Dankeschön könnte ich dafür die mir zugeschickten Exemplare behalten.  
Ich habe zugestimmt und aus dem ziemlich großen Sortiment ein [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Am Mittwoch wurde ich von der für Deutschland zuständigen <em>Country-Managerin</em> der Firma <a href="http://skytale.se/" target="_blank" class="liexternal">Skytale AB</a> angeschrieben, die mich fragte, ob ich nicht mal ihr neues Produkt &#8211; die <a href="http://www.voodolls.de/de/index.php?utm_source=WEIZENSPREU&#038;utm_medium=BLOGGER&#038;utm_campaign=BLOG" target="_blank" class="liexternal">VooDolls</a> &#8211; unter die Lupe nehmen möchte. Als Dankeschön könnte ich dafür die mir zugeschickten Exemplare behalten. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Ich habe zugestimmt und aus dem ziemlich <a href="http://www.voodolls.de/de/grp/voodolls-kategorien.php?utm_source=WEIZENSPREU&#038;utm_medium=BLOGGER&#038;utm_campaign=BLOG" target="_blank" class="liexternal">großen Sortiment</a> ein paar Voodoo-Puppen ausgewählt: Die Figuren wurden am Donnerstag in den Versand gegeben und kamen am Montag bereits bei mir an. Abgesendet wurden sie in Schweden. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
<div id="attachment_4619" class="wp-caption aligncenter" style="width: 327px"><a href="http://weizenspr.eu/uploads/IMG_0052.jpg" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/IMG_0052-150x150.jpg" alt="" title="IMG_0052" width="150" height="150" class="size-thumbnail wp-image-4619" /></a> <a href="http://weizenspr.eu/uploads/IMG_0053.jpg" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/IMG_0053-150x150.jpg" alt="" title="IMG_0053" width="150" height="150" class="size-thumbnail wp-image-4620" /></a><br />
<a href="http://weizenspr.eu/uploads/IMG_0054.jpg" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/IMG_0054-150x150.jpg" alt="" title="IMG_0054" width="150" height="150" class="size-thumbnail wp-image-4621" /></a> <a href="http://weizenspr.eu/uploads/IMG_0055.jpg" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/IMG_0055-150x150.jpg" alt="" title="IMG_0055" width="150" height="150" class="size-thumbnail wp-image-4622" /></a><p class="wp-caption-text">Meine Auswahl</p></div></p>
<p>Jede der Puppen hat angeblich magische Kräfte, die man durch das Aussprechen eines Zauberspruches und das Durchbohren der Puppe mit einer Nadel freisetzen kann. Ausprobiert habe ich es noch nicht &#8211; dafür sind mir die Dinger zu schade <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ! Jede Figur kommt mit einem kleinen Beutel, in den man sie stecken kann, und mit einer Karte, auf der die Fähigkeit der Puppe sowie der passende Zauberspruch steht.</p>
<p>Viel interessanter als die Voodoo-Magie finde ich allerdings den Designfaktor. Die VooDolls sind nämlich komplett aus einem Garn geschnürt (was man besonders gut am Kopf erkennen kann). Der Kopf ist zudem durch zusätzliche Schnüre mit dem restlichen Körper verbunden. Bei einem kurzen Belastungstest konnte ich keine Probleme mit der Befestigung feststellen.</p>
<p>Als echte Voodoo-Puppen werden die kleinen VooDolls warscheinlich hierzulande keine Anhänger finden &#8211; ich denke, das ist auch garnicht wirklich beabsichtigt. Ich könnte mir jedoch gut vorstellen, dass sie sehr schnell viele Freunde finden werden, die sie an ihren Taschen, Rucksäcken oder sogar am Handy mit sich herumtragen <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  . Designtechnisch sind die Puppen jedenfalls sehr liebevoll gestaltet und haben ihren ganz eigenen Charme. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Sehr cool ist übrigens auch das &#8220;<a href="http://www.voodolls.de/de/shopwindow.php?id=1443&#038;shopwindow=95699&#038;utm_source=WEIZENSPREU&#038;utm_medium=BLOGGER&#038;utm_campaign=BLOG" target="_blank" class="liexternal">Quiz</a>&#8220;, bei dem man Vorschläge für neue, länderspezifische VooDolls machen kann. Wie wäre es z.B. mit einer &#8220;Angela Merkel&#8221;-VooDoll oder mit einem &#8220;Günther Jauch&#8221;? Ich bin gespannt, was da in der deutschen VooDolls-Landschaft demnächst für neue Charaktere und Fähigkeiten auftauchen werden.</p>
<p><em>Was haltet ihr von den VooDolls? Könntet ihr sie euch als Accessoire vorstellen? Hättet ihr auch das Problem, dass ihr euch nicht entscheiden könnt <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ? Würdet ihr eventuell sogar mal die VooDoo-Kräfte ausprobieren wollen <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ?</em><br/><br />
<strong>VooDoo-Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/die-voodolls-kommen-nach-deutschland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Update] hMailServer-Konfiguration via CGI</title>
		<link>http://weizenspr.eu/2010/hmailserver-konfiguration-via-cgi/</link>
		<comments>http://weizenspr.eu/2010/hmailserver-konfiguration-via-cgi/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 03:53:56 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[Weizen]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4596</guid>
		<description><![CDATA[
Es ist endlich geschafft! Nachdem ich die letzten Tage überlegt habe, wie ich das ganze am unkompliziertesten löse, habe ich nun eine Möglichkeit gefunden: Die Rede ist von der Verwaltung eines hMailServer Mailaccounts.
In den letzten Tagen hatte ich euch VBScripte vorgestellt, mit denen ein Benutzer sein Passwort ändern oder eine Mailumleitung einrichten. Das Problem bestand [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Es ist endlich geschafft! Nachdem ich die letzten Tage überlegt habe, wie ich das ganze am unkompliziertesten löse, habe ich nun eine Möglichkeit gefunden: Die Rede ist von der Verwaltung eines hMailServer Mailaccounts.</p>
<p>In den letzten Tagen hatte ich euch VBScripte vorgestellt, mit denen ein Benutzer <a href="http://weizenspr.eu/2010/benutzerpasswort-des-hmailserver-andern/" target="_blank" class="liinternal">sein Passwort ändern</a> oder <a href="http://weizenspr.eu/2010/mail-forwarding-des-hmailserver-andern/" target="_blank" class="liinternal">eine Mailumleitung einrichten</a>. Das Problem bestand bisher, diese Funktionen auch <em>remote</em> verfügbar zu machen &#8211; denn direkten Zugriff auf den Server wird keiner der Mailbenutzer kriegen. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Im Moment verwende ich immernoch einen ziemlich minimalistischen Webserver auf dem Rechner &#8211; trotzdem wollte ich die Konfiguration bereits lauffähig machen. Die einzige Möglichkeit hierfür war die Verwendung eines <a href="http://de.wikipedia.org/wiki/Common_Gateway_Interface" target="_blank" rel="nofollow" class="liwikipedia"><acronym title="Common Gateway Interface">CGI</acronym></a>-Scriptes.<br />
Also habe ich mich auf die Suche gemacht, wie ich ein VBScript über CGI <a href="http://dev.pulsed.net/wp/?p=32" target="_blank" class="liexternal">ansprechen und ausführen</a> kein. Dummerweise funktionierte das Codebeispiel bei mir überhaupt nicht! Eine andere Lösung musste also her&#8230;</p>
<p>&#8230;und diese habe ich <a href="http://www.delphipraxis.net/post3215.html" target="_blank" class="liexternal">hier</a> gefunden. Anstatt eines CGI-Scriptes habe ich einfach eine CGI-Anwendung in Delphi geschrieben <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ! Dadurch habe ich zum einen gelernt, wie man sowas macht und zum anderen konnte ich das ganze in einer robusten, mir bekannten Sprache erstellen.</p>
<p>Wo ihr ein bisschen aufpassen müsst, ist bei dem Herleiten der Dateipfade: Irgendwie habe ich da das Gefühl, dass der Server die Werte <em>PATH_INFO</em>, <em>PATH_TRANSLATED</em> und <em>SCRIPT_NAME</em> nicht korrekt setzt. Aber das müsste man nochmal durch das Testen mit anderen Webservern überprüfen.</p>
<p>Hier jedenfalls erstmal der Quelltext:</p>
<div class="codecolorer-container pascal default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />249<br />250<br />251<br />252<br />253<br />254<br />255<br />256<br />257<br />258<br />259<br />260<br />261<br />262<br />263<br />264<br />265<br />266<br />267<br />268<br />269<br />270<br />271<br />272<br />273<br />274<br />275<br />276<br />277<br />278<br />279<br />280<br />281<br />282<br />283<br />284<br />285<br />286<br />287<br />288<br />289<br />290<br />291<br />292<br />293<br />294<br />295<br />296<br />297<br />298<br />299<br />300<br />301<br />302<br />303<br />304<br />305<br />306<br />307<br />308<br />309<br />310<br />311<br />312<br />313<br />314<br />315<br />316<br />317<br />318<br />319<br />320<br />321<br />322<br />323<br />324<br />325<br />326<br />327<br />328<br />329<br />330<br />331<br />332<br />333<br />334<br />335<br />336<br />337<br />338<br />339<br />340<br />341<br />342<br />343<br />344<br />345<br />346<br />347<br />348<br />349<br />350<br />351<br />352<br />353<br />354<br />355<br />356<br />357<br />358<br />359<br />360<br />361<br />362<br />363<br />364<br />365<br />366<br />367<br />368<br />369<br />370<br />371<br />372<br />373<br />374<br />375<br />376<br />377<br />378<br />379<br />380<br />381<br />382<br />383<br />384<br />385<br />386<br />387<br />388<br />389<br />390<br />391<br />392<br />393<br />394<br />395<br />396<br />397<br />398<br />399<br />400<br />401<br />402<br />403<br />404<br />405<br />406<br />407<br />408<br />409<br />410<br />411<br />412<br />413<br />414<br />415<br />416<br />417<br />418<br />419<br />420<br />421<br />422<br />423<br />424<br />425<br />426<br />427<br /></div></td><td><div class="pascal codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">unit</span> MainForm;<br />
<br />
<span style="color: #000000; font-weight: bold;">interface</span><br />
<br />
<span style="color: #000000; font-weight: bold;">uses</span><br />
&nbsp; Windows<span style="color: #339933;">,</span><br />
&nbsp; SysUtils<span style="color: #339933;">,</span><br />
&nbsp; Messages<span style="color: #339933;">,</span><br />
&nbsp; HTTPApp<span style="color: #339933;">,</span><br />
&nbsp; Classes;<br />
<br />
<br />
<span style="color: #000000; font-weight: bold;">type</span><br />
&nbsp; TValueAction <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>vaUnknown<span style="color: #339933;">,</span> vaForward<span style="color: #339933;">,</span> vaPassword<span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; TValueRecord <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">record</span><br />
&nbsp; &nbsp; Action &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:</span> TValueAction;<br />
&nbsp; &nbsp; Domain &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; &nbsp; Username &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; &nbsp; Password &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; &nbsp; ForwardAddress <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; &nbsp; NewPassword &nbsp; &nbsp;<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
&nbsp; TMainWebModule <span style="color: #339933;">=</span> class<span style="color: #009900;">&#40;</span>TWebModule<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">procedure</span> MainWebModuledefaultAction<span style="color: #009900;">&#40;</span>Sender<span style="color: #339933;">:</span> TObject; Request<span style="color: #339933;">:</span> TWebRequest; Response<span style="color: #339933;">:</span> TWebResponse; <span style="color: #000000; font-weight: bold;">var</span> Handled<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">private</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">{ Private-Deklarationen }</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> GetApplicationOutput<span style="color: #009900;">&#40;</span>AApplication <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>; AParameters <span style="color: #339933;">:</span> TStringList<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> GetCGIPath<span style="color: #009900;">&#40;</span>APathTranslated <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>; APathInfo <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>; AScriptName <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> GetResultString<span style="color: #009900;">&#40;</span>AAction <span style="color: #339933;">:</span> TValueAction; AResult <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> GetWindowsPath <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> ParseRequest<span style="color: #009900;">&#40;</span>ARequest <span style="color: #339933;">:</span> TWebRequest<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> TValueRecord;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">{ Public-Deklarationen }</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
<span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; MainWebModule <span style="color: #339933;">:</span> TMainWebModule;<br />
<br />
<span style="color: #000000; font-weight: bold;">implementation</span><br />
<br />
<span style="color: #666666; font-style: italic;">{$R *.xfm}</span><br />
<br />
<span style="color: #000000; font-weight: bold;">const</span><br />
&nbsp; CCGIFolder &nbsp; &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'/cgi-bin'</span>;<br />
&nbsp; CCscriptExe &nbsp; &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'system32\cscript.exe'</span>;<br />
&nbsp; CForwardAction &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'forward'</span>;<br />
&nbsp; CForwardParam &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'forward'</span>;<br />
&nbsp; CForwardVBS &nbsp; &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'changeForward.vbs'</span>;<br />
&nbsp; CNewParam &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'new'</span>;<br />
&nbsp; CNoLogoParam &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'/nologo'</span>;<br />
&nbsp; CPasswordAction &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'password'</span>;<br />
&nbsp; CPasswordParam &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'password'</span>;<br />
&nbsp; CPasswordVBS &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'changePassword.vbs'</span>;<br />
&nbsp; CPathDivider &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'\'</span>;<br />
&nbsp; CQuote &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'&quot;'</span>;<br />
&nbsp; CQuoteEscaped &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'\&quot;'</span>;<br />
&nbsp; CURLDivider &nbsp; &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'/'</span>;<br />
<br />
<span style="color: #666666; font-style: italic;">// source: http://delphi.about.com/cs/adptips2001/a/bltip0201_2.htm</span><br />
<span style="color: #000000; font-weight: bold;">function</span> TMainWebModule.<span style="color: #0066ee;">GetApplicationOutput</span><span style="color: #009900;">&#40;</span>AApplication<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>; AParameters<span style="color: #339933;">:</span> TStringList<span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">function</span> GetParameterLine<span style="color: #009900;">&#40;</span>AApplication <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>; AParameters <span style="color: #339933;">:</span> TStringList<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; &nbsp; LIndex <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; Result <span style="color: #339933;">:=</span> CQuote <span style="color: #339933;">+</span> StringReplace<span style="color: #009900;">&#40;</span>AApplication<span style="color: #339933;">,</span> CQuote<span style="color: #339933;">,</span> CQuoteEscaped<span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span>rfReplaceAll<span style="color: #339933;">,</span> rfIgnoreCase<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> CQuote;<br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>AParameters &lt;&gt; <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">for</span> LIndex <span style="color: #339933;">:=</span> 0 <span style="color: #000000; font-weight: bold;">to</span> <span style="color: #000066;">Pred</span><span style="color: #009900;">&#40;</span>AParameters.<span style="color: #0066ee;">Count</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Result <span style="color: #339933;">:=</span> Result <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CQuote <span style="color: #339933;">+</span> StringReplace<span style="color: #009900;">&#40;</span>AParameters<span style="color: #009900;">&#91;</span>LIndex<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> CQuote<span style="color: #339933;">,</span> CQuoteEscaped<span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span>rfReplaceAll<span style="color: #339933;">,</span> rfIgnoreCase<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> CQuote;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">procedure</span> ProcessMessages;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; &nbsp; LMessage <span style="color: #339933;">:</span> TMsg;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">while</span> PeekMessage<span style="color: #009900;">&#40;</span>LMessage<span style="color: #339933;">,</span> 0<span style="color: #339933;">,</span> 0<span style="color: #339933;">,</span> 0<span style="color: #339933;">,</span> PM_REMOVE<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LMessage.<span style="color: #0066ee;">Message</span> &lt;&gt; WM_QUIT<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; TranslateMessage<span style="color: #009900;">&#40;</span>LMessage<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; DispatchMessage<span style="color: #009900;">&#40;</span>LMessage<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">Break</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<span style="color: #000000; font-weight: bold;">const</span><br />
&nbsp; CReadBuffer <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1024</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; LAppRunning &nbsp;<span style="color: #339933;">:</span> DWord;<br />
&nbsp; LBuffer &nbsp; &nbsp; &nbsp;<span style="color: #339933;">:</span> PChar;<br />
&nbsp; LBytesRead &nbsp; <span style="color: #339933;">:</span> DWord;<br />
&nbsp; LProcessInfo <span style="color: #339933;">:</span> TProcessInformation;<br />
&nbsp; LReadPipe &nbsp; &nbsp;<span style="color: #339933;">:</span> THandle;<br />
&nbsp; LSecurity &nbsp; &nbsp;<span style="color: #339933;">:</span> TSecurityAttributes;<br />
&nbsp; LStart &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:</span> TStartUpInfo;<br />
&nbsp; LWritePipe &nbsp; <span style="color: #339933;">:</span> THandle;<br />
<span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; Result <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
<br />
&nbsp; LSecurity.<span style="color: #0066ee;">nLength</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:=</span> SizeOf<span style="color: #009900;">&#40;</span>TSecurityAttributes<span style="color: #009900;">&#41;</span>;<br />
&nbsp; LSecurity.<span style="color: #0066ee;">bInheritHandle</span> &nbsp; &nbsp; &nbsp;<span style="color: #339933;">:=</span> <span style="color: #000000; font-weight: bold;">true</span>;<br />
&nbsp; LSecurity.<span style="color: #0066ee;">lpSecurityDescriptor</span> <span style="color: #339933;">:=</span> <span style="color: #000000; font-weight: bold;">nil</span>;<br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> CreatePipe<span style="color: #009900;">&#40;</span>LReadPipe<span style="color: #339933;">,</span> LWritePipe<span style="color: #339933;">,</span> @LSecurity<span style="color: #339933;">,</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; LBuffer <span style="color: #339933;">:=</span> AllocMem<span style="color: #009900;">&#40;</span><span style="color: #000066;">Succ</span><span style="color: #009900;">&#40;</span>CReadBuffer<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; FillChar<span style="color: #009900;">&#40;</span>LStart<span style="color: #339933;">,</span> SizeOf<span style="color: #009900;">&#40;</span>LStart<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> #0<span style="color: #009900;">&#41;</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; LStart.<span style="color: #0066ee;">cb</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #339933;">:=</span> SizeOf<span style="color: #009900;">&#40;</span>LStart<span style="color: #009900;">&#41;</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; LStart.<span style="color: #0066ee;">dwFlags</span> &nbsp; &nbsp; <span style="color: #339933;">:=</span> STARTF_USESTDHANDLES <span style="color: #000000; font-weight: bold;">or</span> STARTF_USESHOWWINDOW;<br />
&nbsp; &nbsp; &nbsp; &nbsp; LStart.<span style="color: #0066ee;">hStdInput</span> &nbsp; <span style="color: #339933;">:=</span> LReadPipe;<br />
&nbsp; &nbsp; &nbsp; &nbsp; LStart.<span style="color: #0066ee;">hStdOutput</span> &nbsp;<span style="color: #339933;">:=</span> LWritePipe;<br />
&nbsp; &nbsp; &nbsp; &nbsp; LStart.<span style="color: #0066ee;">wShowWindow</span> <span style="color: #339933;">:=</span> SW_HIDE;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> CreateProcess<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">nil</span><span style="color: #339933;">,</span> PChar<span style="color: #009900;">&#40;</span>GetParameterLine<span style="color: #009900;">&#40;</span>AApplication<span style="color: #339933;">,</span> AParameters<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@LSecurity<span style="color: #339933;">,</span> @LSecurity<span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">,</span> NORMAL_PRIORITY_CLASS<span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">nil</span><span style="color: #339933;">,</span> LStart<span style="color: #339933;">,</span> LProcessInfo<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">repeat</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LAppRunning <span style="color: #339933;">:=</span> WaitForSingleObject<span style="color: #009900;">&#40;</span>LProcessInfo.<span style="color: #0066ee;">hProcess</span><span style="color: #339933;">,</span> 100<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProcessMessages;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">until</span> <span style="color: #009900;">&#40;</span>LAppRunning &lt;&gt; WAIT_TIMEOUT<span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">repeat</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LBytesRead <span style="color: #339933;">:=</span> <span style="color: #cc66cc;">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ReadFile<span style="color: #009900;">&#40;</span>LReadPipe<span style="color: #339933;">,</span> LBuffer<span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> CReadBuffer<span style="color: #339933;">,</span> LBytesRead<span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #009900;">&#41;</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LBuffer<span style="color: #009900;">&#91;</span>LBytesRead<span style="color: #009900;">&#93;</span> <span style="color: #339933;">:=</span> #<span style="color: #cc66cc;">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OemToChar<span style="color: #009900;">&#40;</span>LBuffer<span style="color: #339933;">,</span> LBuffer<span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result <span style="color: #339933;">:=</span> Result <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #009900;">&#40;</span>LBuffer<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">until</span> <span style="color: #009900;">&#40;</span>LBytesRead &lt; CReadBuffer<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">finally</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CloseHandle<span style="color: #009900;">&#40;</span>LProcessInfo.<span style="color: #0066ee;">hProcess</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CloseHandle<span style="color: #009900;">&#40;</span>LProcessInfo.<span style="color: #0066ee;">hThread</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">finally</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; FreeMem<span style="color: #009900;">&#40;</span>LBuffer<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">finally</span><br />
&nbsp; &nbsp; &nbsp; CloseHandle<span style="color: #009900;">&#40;</span>LReadPipe<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; CloseHandle<span style="color: #009900;">&#40;</span>LWritePipe<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> TMainWebModule.<span style="color: #0066ee;">GetCGIPath</span><span style="color: #009900;">&#40;</span>APathTranslated<span style="color: #339933;">,</span> APathInfo<span style="color: #339933;">,</span> AScriptName<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; LPosition <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span>;<br />
<span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; Result <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">repeat</span><br />
&nbsp; &nbsp; LPosition <span style="color: #339933;">:=</span> Pos<span style="color: #009900;">&#40;</span>CURLDivider<span style="color: #339933;">,</span> APathInfo<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LPosition &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; APathInfo<span style="color: #009900;">&#91;</span>LPosition<span style="color: #009900;">&#93;</span> <span style="color: #339933;">:=</span> CPathDivider;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">until</span> <span style="color: #009900;">&#40;</span>LPosition &lt;<span style="color: #339933;">=</span> 0<span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">repeat</span><br />
&nbsp; &nbsp; LPosition <span style="color: #339933;">:=</span> Pos<span style="color: #009900;">&#40;</span>CURLDivider<span style="color: #339933;">,</span> AScriptName<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LPosition &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; AScriptName<span style="color: #009900;">&#91;</span>LPosition<span style="color: #009900;">&#93;</span> <span style="color: #339933;">:=</span> CPathDivider;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">until</span> <span style="color: #009900;">&#40;</span>LPosition &lt;<span style="color: #339933;">=</span> 0<span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">Pred</span><span style="color: #009900;">&#40;</span>Pos<span style="color: #009900;">&#40;</span>APathInfo<span style="color: #339933;">,</span> AScriptName<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> Length<span style="color: #009900;">&#40;</span>APathInfo<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> Length<span style="color: #009900;">&#40;</span>AScriptName<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; Delete<span style="color: #009900;">&#40;</span>AScriptName<span style="color: #339933;">,</span> <span style="color: #000066;">Succ</span><span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>AScriptName<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> Length<span style="color: #009900;">&#40;</span>APathInfo<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> Length<span style="color: #009900;">&#40;</span>APathInfo<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">Pred</span><span style="color: #009900;">&#40;</span>Pos<span style="color: #009900;">&#40;</span>APathInfo<span style="color: #339933;">,</span> APathTranslated<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> Length<span style="color: #009900;">&#40;</span>APathInfo<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> Length<span style="color: #009900;">&#40;</span>APathTranslated<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; Delete<span style="color: #009900;">&#40;</span>APathTranslated<span style="color: #339933;">,</span> <span style="color: #000066;">Succ</span><span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>APathTranslated<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> Length<span style="color: #009900;">&#40;</span>APathInfo<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> Length<span style="color: #009900;">&#40;</span>APathInfo<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; Result <span style="color: #339933;">:=</span> APathTranslated <span style="color: #339933;">+</span> AScriptName <span style="color: #339933;">+</span> CPathDivider;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> TMainWebModule.<span style="color: #0066ee;">GetResultString</span><span style="color: #009900;">&#40;</span>AAction<span style="color: #339933;">:</span> TValueAction; AResult<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
<span style="color: #000000; font-weight: bold;">const</span><br />
&nbsp; CEverythingFine &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'everything went fine'</span>;<br />
&nbsp; CForward &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'(forward)'</span>;<br />
&nbsp; CInternalError &nbsp; &nbsp;<span style="color: #339933;">=</span> <span style="color: #ff0000;">'an internal error occured'</span>;<br />
&nbsp; CMissingArguments <span style="color: #339933;">=</span> <span style="color: #ff0000;">'missing arguments'</span>;<br />
&nbsp; CNoSuchDomain &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'there is no such domain'</span>;<br />
&nbsp; CPassword &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'(password)'</span>;<br />
&nbsp; CUnknownError &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #ff0000;">'an unknown error occured'</span>;<br />
&nbsp; CWrongCredentials <span style="color: #339933;">=</span> <span style="color: #ff0000;">'wrong credentials have been provided'</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; LError &nbsp;<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">LongInt</span>;<br />
&nbsp; LResult <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">Byte</span>;<br />
<span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; Result <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
<br />
&nbsp; AResult <span style="color: #339933;">:=</span> Trim<span style="color: #009900;">&#40;</span>AResult<span style="color: #009900;">&#41;</span>;<br />
&nbsp; Val<span style="color: #009900;">&#40;</span>AResult<span style="color: #339933;">,</span> LResult<span style="color: #339933;">,</span> LError<span style="color: #009900;">&#41;</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LError <span style="color: #339933;">=</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">case</span> AAction <span style="color: #000000; font-weight: bold;">of</span><br />
&nbsp; &nbsp; &nbsp; vaForward <span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">case</span> LResult <span style="color: #000000; font-weight: bold;">of</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CEverythingFine <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CForward;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CWrongCredentials <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CForward;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CWrongCredentials <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CForward;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CNoSuchDomain <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CForward;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CWrongCredentials <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CForward;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CInternalError <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CForward;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 6 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CMissingArguments <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CForward;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CUnknownError <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CForward;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; vaPassword <span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">case</span> LResult <span style="color: #000000; font-weight: bold;">of</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CEverythingFine <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CPassword;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CWrongCredentials <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CPassword;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CWrongCredentials <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CPassword;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CNoSuchDomain <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CPassword;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CWrongCredentials <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CPassword;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CInternalError <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CPassword;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 6 <span style="color: #339933;">:</span> Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CMissingArguments <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CPassword;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CUnknownError <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CPassword;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CUnknownError;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">else</span><br />
&nbsp; &nbsp; Result <span style="color: #339933;">:=</span> AResult <span style="color: #339933;">+</span> #32 <span style="color: #339933;">+</span> CUnknownError;<br />
<span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> TMainWebModule.<span style="color: #0066ee;">GetWindowsPath</span><span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; LSize <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span>;<br />
<span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; Result <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
<br />
&nbsp; LSize <span style="color: #339933;">:=</span> GetWindowsDirectory<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">nil</span><span style="color: #339933;">,</span> 0<span style="color: #009900;">&#41;</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LSize &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; SetLength<span style="color: #009900;">&#40;</span>Result<span style="color: #339933;">,</span> <span style="color: #000066;">Succ</span><span style="color: #009900;">&#40;</span>LSize<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; GetWindowsDirectory<span style="color: #009900;">&#40;</span>@Result<span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> Length<span style="color: #009900;">&#40;</span>Result<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; Result <span style="color: #339933;">:=</span> Trim<span style="color: #009900;">&#40;</span>Result<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Result<span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Result<span style="color: #009900;">&#91;</span>Length<span style="color: #009900;">&#40;</span>Result<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> &lt;&gt; CPathDivider<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Result <span style="color: #339933;">:=</span> Result <span style="color: #339933;">+</span> CPathDivider;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
<span style="color: #000000; font-weight: bold;">procedure</span> TMainWebModule.<span style="color: #0066ee;">MainWebModuledefaultAction</span><span style="color: #009900;">&#40;</span>Sender<span style="color: #339933;">:</span> TObject; Request<span style="color: #339933;">:</span> TWebRequest; Response<span style="color: #339933;">:</span> TWebResponse; <span style="color: #000000; font-weight: bold;">var</span> Handled<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #009900;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; LCGIDirectory <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; LParameters &nbsp; <span style="color: #339933;">:</span> TStringList;<br />
&nbsp; LTextResult &nbsp; <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; LValueRecord &nbsp;<span style="color: #339933;">:</span> TValueRecord;<br />
<span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; LCGIDirectory <span style="color: #339933;">:=</span> GetCGIPath<span style="color: #009900;">&#40;</span>Request.<span style="color: #0066ee;">PathTranslated</span><span style="color: #339933;">,</span> Request.<span style="color: #0066ee;">PathInfo</span><span style="color: #339933;">,</span> Request.<span style="color: #0066ee;">ScriptName</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> DirectoryExists<span style="color: #009900;">&#40;</span>LCGIDirectory<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; LValueRecord <span style="color: #339933;">:=</span> ParseRequest<span style="color: #009900;">&#40;</span>Request<span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">case</span> LValueRecord.<span style="color: #0066ee;">Action</span> <span style="color: #000000; font-weight: bold;">of</span><br />
&nbsp; &nbsp; &nbsp; vaForward <span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> FileExists<span style="color: #009900;">&#40;</span>LCGIDirectory <span style="color: #339933;">+</span> CForwardVBS<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters <span style="color: #339933;">:=</span> TStringList.<span style="color: #0066ee;">Create</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>CNoLogoParam<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LCGIDirectory <span style="color: #339933;">+</span> CForwardVBS<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Domain</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Domain</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Username</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Username</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Password</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Password</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">ForwardAddress</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">ForwardAddress</span><span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LTextResult <span style="color: #339933;">:=</span> Trim<span style="color: #009900;">&#40;</span>GetApplicationOutput<span style="color: #009900;">&#40;</span>GetWindowsPath <span style="color: #339933;">+</span> CCscriptExe<span style="color: #339933;">,</span> LParameters<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Response.<span style="color: #0066ee;">Content</span> <span style="color: #339933;">:=</span> GetResultString<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Action</span><span style="color: #339933;">,</span> LTextResult<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">finally</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Free</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; vaPassword <span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> FileExists<span style="color: #009900;">&#40;</span>LCGIDirectory <span style="color: #339933;">+</span> CPasswordVBS<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters <span style="color: #339933;">:=</span> TStringList.<span style="color: #0066ee;">Create</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>CNoLogoParam<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LCGIDirectory <span style="color: #339933;">+</span> CPasswordVBS<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Domain</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Domain</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Username</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Username</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Password</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Password</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">NewPassword</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Add</span><span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">NewPassword</span><span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LTextResult <span style="color: #339933;">:=</span> Trim<span style="color: #009900;">&#40;</span>GetApplicationOutput<span style="color: #009900;">&#40;</span>GetWindowsPath <span style="color: #339933;">+</span> CCscriptExe<span style="color: #339933;">,</span> LParameters<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Response.<span style="color: #0066ee;">Content</span> <span style="color: #339933;">:=</span> GetResultString<span style="color: #009900;">&#40;</span>LValueRecord.<span style="color: #0066ee;">Action</span><span style="color: #339933;">,</span> LTextResult<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">finally</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LParameters.<span style="color: #0066ee;">Free</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; Response.<span style="color: #0066ee;">Content</span> <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
&nbsp; Handled <span style="color: #339933;">:=</span> <span style="color: #000000; font-weight: bold;">true</span>;<br />
<span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> TMainWebModule.<span style="color: #0066ee;">ParseRequest</span><span style="color: #009900;">&#40;</span>ARequest<span style="color: #339933;">:</span> TWebRequest<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> TValueRecord;<br />
<span style="color: #000000; font-weight: bold;">var</span><br />
&nbsp; LAction &nbsp; &nbsp; <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; LIndex &nbsp; &nbsp; &nbsp;<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span>;<br />
&nbsp; LScriptName <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
&nbsp; LUsername &nbsp; <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">String</span>;<br />
<span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; Result.<span style="color: #0066ee;">Action</span> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:=</span> vaUnknown;<br />
&nbsp; Result.<span style="color: #0066ee;">Domain</span> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
&nbsp; Result.<span style="color: #0066ee;">Username</span> &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
&nbsp; Result.<span style="color: #0066ee;">Password</span> &nbsp; &nbsp; &nbsp; <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
&nbsp; Result.<span style="color: #0066ee;">ForwardAddress</span> <span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
&nbsp; Result.<span style="color: #0066ee;">NewPassword</span> &nbsp; &nbsp;<span style="color: #339933;">:=</span> <span style="color: #ff0000;">''</span>;<br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>ARequest &lt;&gt; <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; LScriptName <span style="color: #339933;">:=</span> AnsiLowerCase<span style="color: #009900;">&#40;</span>Trim<span style="color: #009900;">&#40;</span>ARequest.<span style="color: #0066ee;">ScriptName</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span> &gt; 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// kill trailing slash</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#91;</span>Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> CURLDivider<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Delete<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #339933;">,</span> Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// read trailing value - is username</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// kill trailing value</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">for</span> LIndex <span style="color: #339933;">:=</span> Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">downto</span> 1 <span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#91;</span>LIndex<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> CURLDivider<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LUserName <span style="color: #339933;">:=</span> Copy<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #339933;">,</span> <span style="color: #000066;">Succ</span><span style="color: #009900;">&#40;</span>LIndex<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> LIndex<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Delete<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #339933;">,</span> LIndex<span style="color: #339933;">,</span> Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000066;">Pred</span><span style="color: #009900;">&#40;</span>LIndex<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">Break</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// read trailing value - is action</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// kill trailing value</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">for</span> LIndex <span style="color: #339933;">:=</span> Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">downto</span> 1 <span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#91;</span>LIndex<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> CURLDivider<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LAction <span style="color: #339933;">:=</span> Copy<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #339933;">,</span> <span style="color: #000066;">Succ</span><span style="color: #009900;">&#40;</span>LIndex<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> LIndex<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Delete<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #339933;">,</span> LIndex<span style="color: #339933;">,</span> Length<span style="color: #009900;">&#40;</span>LScriptName<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000066;">Pred</span><span style="color: #009900;">&#40;</span>LIndex<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">Break</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// check action string</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> AnsiSameText<span style="color: #009900;">&#40;</span>LAction<span style="color: #339933;">,</span> CForwardAction<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">Action</span> <span style="color: #339933;">:=</span> vaForward;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> AnsiSameText<span style="color: #009900;">&#40;</span>LAction<span style="color: #339933;">,</span> CPasswordAction<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">Action</span> <span style="color: #339933;">:=</span> vaPassword;<br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">case</span> Result.<span style="color: #0066ee;">Action</span> <span style="color: #000000; font-weight: bold;">of</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; vaForward <span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// read &quot;forward&quot; parameter</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LIndex <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">QueryFields</span>.<span style="color: #0066ee;">IndexOfName</span><span style="color: #009900;">&#40;</span>CForwardParam<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LIndex &gt;<span style="color: #339933;">=</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">ForwardAddress</span> <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">QueryFields</span>.<span style="color: #0066ee;">ValueFromIndex</span><span style="color: #009900;">&#91;</span>LIndex<span style="color: #009900;">&#93;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// read &quot;password&quot; parameter</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LIndex <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">QueryFields</span>.<span style="color: #0066ee;">IndexOfName</span><span style="color: #009900;">&#40;</span>CPasswordParam<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LIndex &gt;<span style="color: #339933;">=</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">Password</span> <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">QueryFields</span>.<span style="color: #0066ee;">ValueFromIndex</span><span style="color: #009900;">&#91;</span>LIndex<span style="color: #009900;">&#93;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">Domain</span> &nbsp; <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">Host</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">Username</span> <span style="color: #339933;">:=</span> LUserName;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; vaPassword <span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// read &quot;new&quot; parameter</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LIndex <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">QueryFields</span>.<span style="color: #0066ee;">IndexOfName</span><span style="color: #009900;">&#40;</span>CNewParam<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LIndex &gt;<span style="color: #339933;">=</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">NewPassword</span> <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">QueryFields</span>.<span style="color: #0066ee;">ValueFromIndex</span><span style="color: #009900;">&#91;</span>LIndex<span style="color: #009900;">&#93;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// read &quot;password&quot; parameter</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LIndex <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">QueryFields</span>.<span style="color: #0066ee;">IndexOfName</span><span style="color: #009900;">&#40;</span>CPasswordParam<span style="color: #009900;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>LIndex &gt;<span style="color: #339933;">=</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">Password</span> <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">QueryFields</span>.<span style="color: #0066ee;">ValueFromIndex</span><span style="color: #009900;">&#91;</span>LIndex<span style="color: #009900;">&#93;</span>;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">Domain</span> &nbsp; <span style="color: #339933;">:=</span> Request.<span style="color: #0066ee;">Host</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result.<span style="color: #0066ee;">Username</span> <span style="color: #339933;">:=</span> LUserName;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">end</span>;<br />
<span style="color: #000000; font-weight: bold;">end</span>;<br />
<br />
<span style="color: #000000; font-weight: bold;">end</span>.</div></td></tr></tbody></table></div>
<p>In dem Programm selber gehen wir folgendermaßen vor:</p>
<ol>
<li>Wir parsen den URL-String.</li>
<li>Wir führen das entsprechende VBScript aus.</li>
<li>Wir lesen den Antwortwert aus <em>stdout</em>.</li>
<li>Wir geben den erhaltenen Ergebniscode zurück.</li>
</ol>
<p>Für den Zugriff habe ich mir ein tolles URL-Schema überlegt, das eingehalten werden muss, damit das Programm die richtigen Daten auslesen kann. Folgende Befehle gelten für das Setzen einer Mailumleitung:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">https://[domain]/cgi-bin/[exedatei]/forward/[username]?password=[password]<br />
https://[domain]/cgi-bin/[exedatei]/forward/[username]?password=[password]&amp;forward=[email]</div></td></tr></tbody></table></div>
<p>Durch das Setzen des <strong>forward</strong>-Parameters wird die Umleitung aktiviert. Durch Weglassen des Parameters wird die Umleitung deaktiviert. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Für das Ändern des Passworts wird folgendes URL-Schema benutzt. Wenn man ein Mail-Forwarding einrichten kann, dann kann man auch sein Passwort ändern &#8211; die Befehle unterscheiden sich nur geringfügig:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">https://[domain]/cgi-bin/[exedatei]/password]/[username]?password=[password]&amp;new=[newpassword]</div></td></tr></tbody></table></div>
<p><em>Was haltet ihr von <strong>dieser</strong> Form der Implementierung? Denkt ihr, ein Benutzer kann sich zwei URLs merke? Wie findet ihr den Lösungsansatz generell?</em><br/><br />
<strong>Update:</strong><br />
Der vorhandene Exploit wurde nun behoben. Das Problem war, dass die übergebenen Parameter nicht überprüft wurden, bevor sie in den auszuführenden Befehl eingebaut wurden. Nun werden Anführungszeichen <a href="http://en.wikipedia.org/wiki/Escape_character" target="_blank" rel="nofollow" class="liwikipedia">escaped</a>, um das Hinzufügen von zusätzlichen Parametern und andere Modifikationen des Befehls zu unterbinden (Stichwort <a href="http://de.wikipedia.org/wiki/Pipe_(Informatik)" target="_blank" rel="nofollow" class="liwikipedia">Pipes</a>).<br/><br />
<strong>Konfigurierende Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/hmailserver-konfiguration-via-cgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein Rechner, mehrere Domains und dann auch noch Zertifikate!</title>
		<link>http://weizenspr.eu/2010/ein-rechner-mehrere-domains-und-dann-auch-noch-zertifikate/</link>
		<comments>http://weizenspr.eu/2010/ein-rechner-mehrere-domains-und-dann-auch-noch-zertifikate/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 18:46:54 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Spreu]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=3687</guid>
		<description><![CDATA[
Es ist teilweise unglaublich, wieviele Probleme man bekommen kann, wenn man einen eigenen Server betreiben will. Das fängt bei der Erreichbarkeit an (Stichwort dynamische IP), geht über die Probleme beim E-Mail-Versenden (Stichwort Reverse-DNS) und endet bei den SSL-Zertifikaten.
Die Zertifikate haben es nämlich ganz schön in sich. Aber fangen wir vorne an: Wenn ein Rechner sich [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Es ist teilweise unglaublich, wieviele Probleme man bekommen kann, wenn man einen eigenen Server betreiben will. Das fängt bei der Erreichbarkeit an (Stichwort <a href="http://de.wikipedia.org/wiki/IP-Adresse#Dynamische_Adressierung" target="_blank" rel="nofollow" class="liwikipedia">dynamische IP</a>), geht über die Probleme beim E-Mail-Versenden (Stichwort <a href="http://de.wikipedia.org/wiki/PTR_Resource_Record" target="_blank" rel="nofollow" class="liwikipedia">Reverse-DNS</a>) und endet bei den SSL-Zertifikaten.</p>
<p>Die Zertifikate haben es nämlich ganz schön in sich. Aber fangen wir vorne an: Wenn ein Rechner sich mit einem Server über den Domainnamen verbindet, dann funktioniert das, indem der Rechner bei einem DNS-Server anfragt, wie den die IP des Rechners ist, der sich hinter dem Namen versteckt. Der Rechner verbindet sich dann mit der IP und beginnt mit der eigentlichen Kommunikation.<br />
Wenn der Rechner also bei dem Server aufschlägt, hat der Server garkeine Ahnung, dass der Besucher mit einer bestimmten Domain sprechen möchte. Diese Information wird z.B. einem HTTP-Server erst im weiteren Gesprächsverlauf mitgeteilt.</p>
<p>Jetzt kommt aber das große Problem: Wenn ein Rechner sich mit dem Server verbindet und der Rechner eine verschlüsselte SSL-Verbindung haben möchte, dann muss der Server ein passendes Zertifikat zurückliefern. In diesem Zertifikat steht der <a href="http://de.wikipedia.org/wiki/Domain#Der_DNS-Namensraum" target="_blank" rel="nofollow" class="liwikipedia">Domainname</a>, für den das Zertifikat gilt.<br />
Der Stolperstein ist nun, dass der Server das passende Zertifikat zurückgeben muss, obwohl ihm der Rechner noch garnicht verraten hat, welche Domain er überhaupt abrufen will!</p>
<p>Um dieses Problem zu lösen gibt es nun mehrere Möglichkeiten, von denen ich mir einige angeguckt habe und die ich mal ein bisschen näher erklären will.</p>
<p>Fangen wir mal mit der Lösung an, die wohl die wenigstens Haushalte <em>&#8220;einfach so&#8221;</em> aus dem Stehgreif lösen können: <a href="http://www.ibm.com/developerworks/web/library/wa-multissl.html" target="_blank" class="liexternal">Dem Rechner mehrere IPs zuweisen</a>. Hintergrund ist, dass einer Netzwerkkarte <a href="http://www.rasyid.net/2007/06/12/setting-multiple-ip-ip-alias-in-windows-xp/" target="_blank" class="liexternal">mehrere IPs zugewiesen</a> werden können. Anhand der IP, an die die Abfrage gerichtet ist, kann der Server nun herausfinden, welche Domain erfragt werden soll. Je nachdem wird dann einfach das passende Zertifikat verteilt.<br />
Die Lösung ist für den Privathaushalt deshalb unpraktikabel, da man als Privatperson von seinem Internetanbieter meist nur eine einzige IP zugewiesen bekommt. Es gibt zwar die Möglichkeit, sich z.B. <a href="http://www.manitu.de/dsl/produkte.php" target="_blank" class="liexternal">bei Manitu</a> mehrere IPs zu besorgen, jedoch bekommt man dann das Problem, dass man einen professionellen Router benötigt, der in der Lage ist, mehrere öffentliche IPs zu verwalten.</p>
<p>Deshalb habe ich lange daran gedacht, folgende Lösung umzusetzen: Ich besorge mir eine Domain, über die sämtliche verschlüsselte Kommunikation abläuft. Wenn jemand SSL benutzen möchte und keine Programmwarnungen sehen will, soll er halt über diese designierte Domain gehen, da diese dann in den Zertifikaten steht. Das einzige Problem wäre, dass ein Benutzer sich evtl. wundert, dass er von einer Webseite auf eine komplett andere Domain weitergeleitet wird. Alles andere könnte man durch korrekte Konfiguration und durch Programmierung lösen.</p>
<p>Für viele würde diese Variante sicherlich ausreichen &#8211; ich persönlich finde sie allerdings ziemlich unschön. Also habe ich weitergesucht und habe die <a href="http://de.wikipedia.org/wiki/Transport_Layer_Security" target="_blank" rel="nofollow" class="liwikipedia"><acronym title="Transport Layer Security">TLS</acronym></a>-Erweiterung namens <a href="http://de.wikipedia.org/wiki/Server_Name_Indication" target="_blank" rel="nofollow" class="liwikipedia"><acronym title="Server Name Indication">SNI</acronym></a> gefunden. Diese löst genau das oben Problem: Bei der Verwendung von SNI wird bereits beim Aufbau der verschlüsselten Verbindung mitgeteilt, welche Domain angesprochen werden soll. Dadurch kann der Server das passende Zertifikat heraussuchen und die Verbindung korrekt herstellen. An sich eine gute Lösung&#8230;</p>
<p>&#8230;wenn denn der Server es nicht explizit unterstützen müsste. Leider gibt es immernoch einige Serversoftware, die ausschließlich SSL (bzw. TLS 1.0) unterstützen. Deshalb habe ich noch weiter gesucht und bin schlussendlich beim <a href="http://de.wikipedia.org/wiki/X.509" target="_blnk" rel="nofollow" class="liwikipedia">X.509</a>-Standard gelandet. Dieser beschreibt, welche Werte in einem Zertifikat stehen. Auch dieser hat in letzter eine Veränderung erfahren, die für unsere Belange genutzt werden kann: Gemeint ist die Erweiterung <a href="http://wiki.cacert.org/VhostTaskForce#A1._Way:_SubjectAltName_Only" target="_blank" class="liexternal"><strong>SubjectAltName</strong></a>.<br />
Diese sieht vor, dass man ein Zertifikat erstellen kann, das für mehrere Domains gültig ist &#8211; nämlich genau für die, die im Feld SubjectAltName hinterlegt sind.<br />
Der Vorteil ist, dass dieses Vorgehen mit allen Servern funktioniert &#8211; auch, wenn sie die Erweiterung nicht unterstützen. Lediglich der Client muss sie auswerten können. Sollte es nun einen Client geben, der lediglich den <em>Common Name</em> (CN) auswertet, so kann man für diesen zumindest noch zusätzlich die oben erwähnte Variante mit der separaten SSL-Domain anbieten.</p>
<p>Abschließend wollte ich euch noch zeigen, wie man relativ einfach ein selbst-signiertes Zertifikat mit integrierten SubjectAltNames erstellen kann. Basis hierfür waren die Artikel auf <a href="http://therowes.net/~greg/2008/01/08/creating-a-certificate-with-multiple-hostnames/" target="_blank" class="liexternal">therowes.net</a>, <a href="http://iiegn.blogspot.com/2007/11/self-signed-certificate-with-multiple.html" target="_blank" class="liexternal">iiegn.blogspot.com</a> und <a href="http://sial.org/howto/openssl/self-signed/" target="_blank" class="liexternal">sial.org</a>.</p>
<p>Wenn man es noch nicht hat, muss man sich zuerst einmal einen privaten Schlüssel erzeugen. Das geht bei <a href="http://openssl.org/" target="_blank" class="liexternal">OpenSSL</a> mit diesem Befehl:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">openssl genrsa 2048 &gt; key.rsa</div></td></tr></tbody></table></div>
<p>Denkt bitte dran, dass dies der <strong>private</strong> Schlüssel ist, der im Moment nicht mit einem Passwort geschützt ist. Einige Serverprogramme brauchen ihn in diesem Zustand. Der Schlüssel muss in diesem Zustand <strong>unbedingt</strong> vor unbefugtem Zugriff geschützt werden!</p>
<p>Als nächstes muss die Datei <em>&#8220;openssl.cfg&#8221;</em> der OpenSSL-Installation bearbeitet werden. Über den interaktiven Modus von OpenSSL ist es derzeit nicht möglich, die SubjectAltNames zu definieren, deshalb muss dies in der Konfigurationsdatei geschehen.</p>
<p>Guckt zuerst, ob im Bereich <em>&#8220;req&#8221;</em> der Wert <em>&#8220;req_extensions&#8221;</em> auf <em>&#8220;v3_req&#8221;</em> gesetzt ist:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[ req ]<br />
req_extensions = v3_req # The extensions to add to a certificate request</div></td></tr></tbody></table></div>
<p>Als nächtes müsst ihr in den Bereichen <em>&#8220;v3_req&#8221;</em> und <em>&#8220;v3_ca&#8221;</em> den Wert <em>&#8220;subjectAltName&#8221;</em> auf &#8220;@subject_alt_names&#8221; setzen:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[ v3_req ]<br />
subjectAltName=@subject_alt_names</div></td></tr></tbody></table></div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[ v3_ca ]<br />
subjectAltName=@subject_alt_names</div></td></tr></tbody></table></div>
<p>Abschließend müsst ihr einen neuen Bereich &#8220;subject_alt_names&#8221; anlegen und dort die Domains reinschreiben, für die das Zertifikat gelten soll. Vergesst hier <strong>auf keinen Fall</strong> die Domain, die im Common Name stehen wird!</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[ subject_alt_names ]<br />
DNS.1 = example.com<br />
DNS.2 = *.example.com<br />
DNS.3 = example.net<br />
DNS.4 = *.example.net</div></td></tr></tbody></table></div>
<p>Und nun liegt es an euch, auf welchem Weg ihr das Zertifikat erstellen wollt. Wenn ihr über einen <a href="http://en.wikipedia.org/wiki/Certificate_signing_request" target="_blank" rel="nofollow" class="liwikipedia"><acronym title="Certificate Signing Request">CSR</acronym></a> gehen wollt, wird die Einstellung im Bereich <em>&#8220;v3_req&#8221;</em> verwendet. Wenn ihr jedoch gleich selbst signiert, sind die Einstellung in <em>&#8220;v3_ca&#8221;</em> aktiv.</p>
<p>Ich persönlich habe den zweiten Weg genommen, da ich mir damit das Erstellen einer eigenen <a href="http://de.wikipedia.org/wiki/Zertifizierungsstelle" target="_blank" rel="nofollow" class="liwikipedia"><acronym title="Certificate Authority">CA</acronym></a> gespart habe. Der Befehl für den direkten Weg lautet wie folgt:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">openssl req -new -x509 -nodes -sha1 -days 365 -key key.rsa &gt; key.rsa.cert</div></td></tr></tbody></table></div>
<p>Beim Ausführen des Befehls werdet ihr nach den Werten für das Zertifikat gefragt. Vergesst nicht, den Common Name richtig zu setzen. Das dabei herauskommende Zertifikat wird 365 Tage lang gültig sein. Dieses Zertifikat muss übrigens nicht (im Gegensatz zum privaten Schlüssel) gesondert gesichert werden &#8211; es wird sowieso vom Server an jeden geschickt, der danach fragt! <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Sooo&#8230; meine Güte! Der Artikel ist länger geworden, als ich gedacht hatte <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ! Ich muss aber auch zugeben, dass ich ihn eine ganz schöne Zeit vor mir hergeschoben habe und er zeitweise zu einer reinen internen Referenzsammlung verkommen war <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  . Der Artikel ist auch für mich wichtig, damit ich nicht vergesse, welchen Weg ich nun schlussendlich gegangen bin <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  !</p>
<p><em>Wie hat auch der Artikel gefallen? Standet/steht ihr auch von dem Problem? Wie habt ihr es gelöst? Wäre der gezeigte Weg eine Lösung, die ihr in Betracht ziehen würdet?</em><br/><br />
<strong>Verschlüsselnde Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/ein-rechner-mehrere-domains-und-dann-auch-noch-zertifikate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Update] Unterminierung durch Feminist(inn)en</title>
		<link>http://weizenspr.eu/2010/unterminierung-durch-feministinnen/</link>
		<comments>http://weizenspr.eu/2010/unterminierung-durch-feministinnen/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 01:41:32 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Politik]]></category>
		<category><![CDATA[Spreu]]></category>
		<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4548</guid>
		<description><![CDATA[
Eigentlich wollte ich mich mit dem Thema hier im Blog garnicht auseinander setzen, aber diese ganze Gekeife geht mir langsam sowas auf die Eier, dass ich nun meinen Senf dazu abgeben werde.
Erinnert sich noch jemand an die Zeit, in der alle Welt die Befürchtung hatte, die Piratenpartei würde durch die Rechten unterwandert werden? Nein, soweit [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Eigentlich wollte ich mich mit dem Thema hier im Blog garnicht auseinander setzen, aber diese ganze Gekeife geht mir langsam sowas auf die Eier, dass ich nun meinen Senf dazu abgeben werde.</p>
<p>Erinnert sich noch jemand an die Zeit, in der alle Welt die Befürchtung hatte, die Piratenpartei würde durch die Rechten unterwandert werden? Nein, soweit ist es nicht gekommen. Dafür haben sie jetzt anscheinend geltungssüchtige Feministinnen an der Backe.</p>
<p>Angefangen hat das Debakel auf dem Landesparteitag in Berlin, auf dem <a href="http://wiki.piratenpartei.de/Benutzer:Lena" target="_blank" class="liexternal">Lena Simon</a> die <a href="http://wiki.piratenpartei.de/Piratinnen" target="_blank" class="liexternal">Piratinnen</a> angekündigt hat &#8211; eine Gruppe innerhalb der Partei, die sich nur aus Frauen zusammensetzen soll und die ein Zufluchtsort für unterdrückte weibliche Piraten darstellen soll. Das ganze mit eigener, geschlossener Mailingliste versteht sich &#8211; der <span class="bbpost_s" style="text-decoration : line-through;">Feind</span> männliche Pirat soll schließlich nicht wissen, wo überhaupt der Schuh drückt.</p>
<p>Statt einfach mal den Mund aufzumachen, wendet man sich stattdessen <a href="http://www.spiegel.de/netzwelt/netzpolitik/0,1518,680985,00.html" target="_blank" class="liexternal">an die Presse</a>, um seine <a href="http://taz.de/1/politik/deutschland/artikel/1/meuterei-der-piratinnen/" target="_blank" class="liexternal">5 Minuten Ruhm</a> zu ergattern. Muss eigentlich erwähnt werden, dass sich führende Frauen in der Partei &#8211; z.B. <a href="http://wiki.piratenpartei.de/Benutzer:Bundaf" target="_blank" class="liexternal">Heide Hagen</a> (Beisitzerin des Berliner Landesvorstandes) &#8211; bereits gegen die Piratinnen ausgesprochen haben?</p>
<p>Aber um irgendwelche Probleme geht es wahrscheinlich garnicht: Zu diesem Schluss kann man kommen, wenn man sich mal mit <a href="http://wiki.piratenpartei.de/Benutzer:Isi" target="_blank" class="liexternal">Isi</a> beschäftigt &#8211; eine augenscheinlich parteiferne Fürsprecherin. Allein der Profiltext spricht Bände: Frauen die gleichen Pflichten auferlegen wie den Männern? Böse! Männern soviele Rechte zustehen wie den Frauen (Männerhäuser, Männquote bei Lehrpositionen, etc.)? Ebenfalls böse! Ich nenne sowas Rosinenpickerei!<br />
Wer sich mal <a href="http://isis-welt.blog.de/2010/02/28/piraten-bereit-gendern-8091396/" target="_blank" class="liexternal">in ihrem Blog</a> umsieht, der wird <a href="http://isis-welt.blog.de/2010/03/01/piraten-postgender-8092695/" target="_blank" class="liexternal">sehr schnell sehen</a>, woher der Wind weht: Es geht ums Prinzip! Basta! Auch das <a href="http://de.wikipedia.org/wiki/Generisches_Maskulinum" target="_blank" rel="nofollow" class="liwikipedia">generische Maskulinum</a> soll abgeschafft werden &#8211; weil, ja weil, es halt männlich ist. Pfui!</p>
<p>Ich jedenfalls unterstütze den Text <a href="http://wiki.piratenpartei.de/Vielfalt_statt_Grabenkaempfe" target="_blank" class="liexternal">Vielfalt statt Grabenkämpfe</a> &#8211; der wurde übrigens von <strong>5 Frauen</strong> verfasst. Ich sehe es nicht ein, dass sich ein Grüppchen gegen Diskriminierung ausspricht &#8211; diese jedoch nicht einmal belegen kann &#8211; und sich dann in ein abgeschottetes Refugium zurückzieht und damit <a href="http://piratenfrau.net/?p=218" target="_blank" class="liexternal">alle anderen diskriminiert</a>.</p>
<p>Sollte sich diese ganze Profilierung nicht bald wieder legen, dann mache ich <a href="http://twitter.com/weizenspreu/statuses/9980171259" target="_blank" class="liexternal">meine Ankündigung</a> wahr und gründe die <em>Gayraten</em> &#8211; damit endlich jedes männliche Parteimitglied anflirten kann, das ich will. Alles andere ist schließlich Diskriminierung aufgrund meiner sexuellen Identität! Jawohl ja!<br/><br />
<strong>Update:</strong><br />
Noch eine Ergänzung zu <em>Isis</em> Profiltext gemacht.<br/><br />
<strong>Unterminierte Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/unterminierung-durch-feministinnen/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Enttäuschende Eröffnung von Woolworth</title>
		<link>http://weizenspr.eu/2010/enttauschende-eroffnung-von-woolworth/</link>
		<comments>http://weizenspr.eu/2010/enttauschende-eroffnung-von-woolworth/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 00:11:52 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Spreu]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4531</guid>
		<description><![CDATA[
Letztens hatte ich erwähnt, dass hier in der Nähe bald ein neuer Woolworth eröffnet. Diese Eröffnung ist vor ca. 5 Stunden zuende gegangen und mein Fazit ist pure Enttäuschung.
Ich hatte ja beschrieben, dass der Laden in die Räume eines Ramschladens gezogen ist &#8211; und wenn ihr mich fragt, haben sie deren Möbel und deren Produkte [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Letztens hatte ich erwähnt, dass hier in der Nähe bald <a href="http://weizenspr.eu/2010/woolworth-auf-dem-aufsteigenden-ast/" target="_blank" class="liinternal">ein neuer Woolworth</a> eröffnet. Diese Eröffnung ist vor ca. 5 Stunden zuende gegangen und mein Fazit ist pure Enttäuschung.</p>
<p>Ich hatte ja beschrieben, dass der Laden in die Räume eines Ramschladens gezogen ist &#8211; und wenn ihr mich fragt, haben sie deren Möbel und deren Produkte gleich mit übernommen. Die angebotene Elektroartikel sind entweder so teuer wie im normalen Laden oder aber so billig produziert wie aus dem <em>&#8220;Kaugummiautomaten&#8221;</em>. Daneben gibt es noch Kleidung auf <em>Kik-Niveau</em>, ein bisschen Alltagsramsch (Spielzeug, Töpfe, Waschmittel, Hygieneartikel) und &#8211; imho &#8211; überteuerte Süßigkeiten.</p>
<p>Besonders beschämend war meiner Meinung nach das Personal. Die Kassiererinnen arbeiten so tierisch langsam, dass man sich mehrfach überlegt, die Sachen wieder abzulegen und einfach zu gehen. Ich frage mich, was so schwierig daran ist, das Personal vor der Eröffnung einfach mal 4 Stunden am Stück üben zu lassen? Was kostet das denn &#8211; außer die paar Euro Gehalt?!</p>
<p>Und noch eine Sache ist mir sehr negativ aufgefallen: Ich weiß nicht, ob das nur ein Gag für die Eröffnung war, aber an jeder Kasse stand eine zweite Mitarbeiterin, die die Einkäufe eingepackt hat. Sorry, aber das ist einfach nur lächerlich! Wir wissen alle, in welchem Preisgefüge sich Woolworth bewegt. Da mit einem Einpackservice punkten zu wollen ist meiner Meinung nach einfach nur übertrieben, fehl am Platz und vollkommen lächerlich. Die Leute hätten sie lieber an zusätzliche Kassen setzen sollen!</p>
<p>Alles in allem hat mich die Eröffnung überhaupt nicht überzeugen können. Wenn ihr mich nach einer Schätzung fragen würdet, würde ich sagen, dass der Laden sich maximal 2 bis 4 Monate halten wird. Heute gab&#8217;s <em>tolle Eröffnungsangebote</em> und selbst da war die Produktpalette schon mies. Da will ich garnicht wissen, wie das später aussehen wird.</p>
<p>Das einzige, worüber ich mich gefreut habe, ist das Produkt, das ich gekauft habe &#8211; und zwar den Film <a href="http://de.wikipedia.org/wiki/Herrscher_der_Zeit" target="_blank" rel="nofollow" class="liwikipedia">Herrscher der Zeit</a> <a href="http://www.amazon.de/Herrscher-Zeit-Anime/dp/B001I9ZML4/" target="_blank" class="liexternal">auf DVD</a>. Diesen Film habe ich vor rund 20 Jahren das erste Mal gesehen, fand ihn toll, aber auch extrem gruselig (kein Wunder in dem Alter). Jedenfalls habe ich heute die DVD in die Hand genommen, die Bilder auf der Rückseite angeguckt und mir gedacht <em>&#8220;Ach du meine Güte! Den Film kenne ich doch!&#8221;</em><br />
Wer übrigens mehr über den Film erfahren will, dem kann ich die <a href="http://www.herrscherderzeit.de/" target="_blank" class="liexternal">Fanseite von André Kull</a> empfehlen, die ich gerade selber erstmal durchgelesen habe. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Um nun also nach diesem zusätzlichen Exkurs nochmal ein Endfazit zu ziehen: Die Eröffnung von Woolworth war absoluter Mist, die gefundene DVD hingegen ist eine Kindheitserinnerung, die nun einen Platz in meiner riesigen DVD-Sammlung finden wird. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <br/><br />
<strong>Herrschende Wollwert-Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/enttauschende-eroffnung-von-woolworth/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Amazon mal total unlogisch!</title>
		<link>http://weizenspr.eu/2010/amazon-mal-total-unlogisch/</link>
		<comments>http://weizenspr.eu/2010/amazon-mal-total-unlogisch/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 20:09:40 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Just Spottet]]></category>
		<category><![CDATA[Spreu]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4517</guid>
		<description><![CDATA[
Heute hat mir Amazon bewiesen, dass auch ein riesiges Versandhaus nicht immer logisch aggiert. In diesem Fall haben sie sogar besonders wenig Hirn präsentiert. Warum? Alsooo&#8230;
Ich habe mir zwei CDs der Band Flogging Molly bestellt: Zum einen &#8220;Whiskey on a Sunday&#8221; und zum anderen &#8220;Live at the Greek Theatre&#8221;. Die Bestellung habe ich bereits am [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Heute hat mir Amazon bewiesen, dass auch ein riesiges Versandhaus nicht immer logisch aggiert. In diesem Fall haben sie sogar besonders wenig Hirn präsentiert. Warum? Alsooo&#8230;</p>
<p>Ich habe mir zwei CDs der Band <a href="http://de.wikipedia.org/wiki/Flogging_Molly" target="_blank" rel="nofollow" class="liwikipedia">Flogging Molly</a> bestellt: Zum einen <a href="http://www.amazon.de/Whiskey-Sunday-DVD-Flogging-Molly/dp/B000FUF80M/" target="_blank" class="liexternal"><em>&#8220;Whiskey on a Sunday&#8221;</em></a> und zum anderen <a href="http://www.amazon.de/Live-Greek-Theatre-Flogging-Molly/dp/B0031DMU9M/ref=sr_1_1?ie=UTF8&#038;s=music&#038;qid=1267732319&#038;sr=8-1" target="_blank" class="liexternal"><em>&#8220;Live at the Greek Theatre&#8221;</em></a>. Die Bestellung habe ich bereits am <strong>22.02.2010</strong> getätigt, mit der Auswahl, dass die Produkte in so wenig Sendungen wie möglich geschickt werden sollen (um Versandkosten zu sparen).</p>
<p>Soweit nichts ungewöhnliches. Nun ist es aber so, dass das Album <em>&#8220;Live at the Greek Theatre&#8221;</em> erst morgen &#8211; am <strong>05.03.2010</strong> veröffentlicht wird. Natürlich hatte Amazon jetzt 2 Möglichkeiten:</p>
<ol>
<li>Die CDs aufgrund des Zeitabstandes in zwei Einzelsendungen verschicken.</li>
<li>Die CDs in einer Sendung am 05.03.2010 verschicken.</li>
</ol>
<div id="attachment_4522" class="wp-caption aligncenter" style="width: 310px"><a href="http://weizenspr.eu/uploads/amazon_fm_latgt.png" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/amazon_fm_latgt-300x89.png" alt="" title="amazon_fm_latgt" width="300" height="89" class="size-medium wp-image-4522" /></a><p class="wp-caption-text">Live at the Greek Theatre - Vorbestellung</p></div>
<p>Und? Was hat Amazon gemacht? Sie haben es in zwei Einzelsendungen verschickt &#8211; nur: Sie haben mit der Versendung der ersten CD bis gestern &#8211; dem <strong>03.03.2010</strong> &#8211; gewartet.</p>
<div id="attachment_4525" class="wp-caption aligncenter" style="width: 310px"><a href="http://weizenspr.eu/uploads/amazon_fm_woas_versand.png" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/amazon_fm_woas_versand-300x80.png" alt="" title="amazon_fm_woas_versand" width="300" height="80" class="size-medium wp-image-4525" /></a><p class="wp-caption-text">Whiskey on a Sunday</p></div>
<p>Und jetzt der Hammer: Die zweite CD &#8211; die am 05.03.2010 in den Handel kommt &#8211; haben sie <strong>heute</strong> losgeschickt!</p>
<div id="attachment_4527" class="wp-caption aligncenter" style="width: 310px"><a href="http://weizenspr.eu/uploads/amazon_fm_latgt_versand.png" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/amazon_fm_latgt_versand-300x106.png" alt="" title="amazon_fm_latgt_versand" width="300" height="106" class="size-medium wp-image-4527" /></a><p class="wp-caption-text">Live at the Greek Theatre</p></div>
<p>Das müsst ihr mir jetzt erklären! Warum haben die nicht einfach <strong>beide CDs</strong> heute verschickt?! Das Vorgehen, das sie jetzt an den Tag gelegt haben, entbehrt jeglicher marktwirtschaftlicher Logik. Sie warten 2 Wochen mit dem Versand der verfügbaren CD, um sie dann <strong>einen Tag</strong> vor der Veröffentlichung der zweiten CD zu verschicken?!<br/><br />
<strong>Perplexe Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/amazon-mal-total-unlogisch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mail-Forwarding des hMailServer ändern&#8230;</title>
		<link>http://weizenspr.eu/2010/mail-forwarding-des-hmailserver-andern/</link>
		<comments>http://weizenspr.eu/2010/mail-forwarding-des-hmailserver-andern/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 12:31:25 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Weizen]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4485</guid>
		<description><![CDATA[
Und noch immer sitze ich am Webserver. Nachdem wir gestern entschieden haben, dass ich die Domains des Bezirks hosten werde, muss ich natürlich dafür sorgen, dass die Leute später nicht nur ihr Passwort ändern können, sondern, dass sie zumindest auch eine Mail-Umleitung einrichten können, falls sie nicht extra ein zusätzliches Postfach abrufen möchten.
Dabei ist wieder [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Und noch immer sitze ich am Webserver. Nachdem wir gestern entschieden haben, dass ich die Domains des Bezirks hosten werde, muss ich natürlich dafür sorgen, dass die Leute später nicht nur <a href="http://weizenspr.eu/2010/benutzerpasswort-des-hmailserver-andern/" target="_blank" class="liinternal">ihr Passwort ändern</a> können, sondern, dass sie zumindest auch eine <a href="http://de.wikipedia.org/wiki/Mail-Umleitung" target="_blank" rel="nofollow" class="liwikipedia">Mail-Umleitung</a> einrichten können, falls sie nicht extra ein zusätzliches Postfach abrufen möchten.</p>
<p>Dabei ist wieder ein VBScript herausgekommen, das per <strong>cscript.exe</strong> aufgerufen werden muss. Es basiert großteilig auf dem Script, mit dem der Benutzer sein Passwort ändern kann.</p>
<div class="codecolorer-container vb default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br /></div></td><td><div class="vb codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; <span style="color: #008000;">' Wscript.Arguments(0) =&gt; domain name<br />
</span> &nbsp;<span style="color: #008000;">' Wscript.Arguments(1) =&gt; username<br />
</span> &nbsp;<span style="color: #008000;">' Wscript.Arguments(2) =&gt; password<br />
</span> &nbsp;<span style="color: #008000;">' Wscript.Arguments(3) =&gt; forwarding mail address<br />
</span><br />
&nbsp; <span style="color: #000080;">On</span> <span style="color: #000080;">Error</span> <span style="color: #000080;">Resume</span> <span style="color: #000080;">Next</span><br />
&nbsp; Err.Clear<br />
&nbsp; <br />
&nbsp; <span style="color: #000080;">If</span> Wscript.Arguments.Count = 3 <span style="color: #000080;">Or</span> Wscript.Arguments.Count = 4 <span style="color: #000080;">Then</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Dim</span> obApp<br />
&nbsp; &nbsp; <span style="color: #000080;">Set</span> obApp = CreateObject(<span style="color: #800000;">&quot;hMailServer.Application&quot;</span>)<br />
<br />
&nbsp; &nbsp; <span style="color: #000080;">If</span> Err.Number = 0 <span style="color: #000080;">Then</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000080;">Call</span> obApp.Authenticate(Wscript.Arguments(1) &amp; <span style="color: #800000;">&quot;@&quot;</span> &amp; Wscript.Arguments(0), Wscript.Arguments(2))<br />
&nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000080;">If</span> Err.Number = 0 <span style="color: #000080;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">Dim</span> obDomain<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">Set</span> obDomain = obApp.Domains.ItemByName(Wscript.Arguments(0))<br />
&nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">If</span> Err.Number = 0 <span style="color: #000080;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">Dim</span> obAccount<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">Set</span> obAccount = obDomain.Accounts.ItemByAddress(Wscript.Arguments(1) &amp; <span style="color: #800000;">&quot;@&quot;</span> &amp; Wscript.Arguments(0))<br />
&nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">If</span> Err.Number = 0 <span style="color: #000080;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">If</span> obAccount.ValidatePassword(Wscript.Arguments(2)) <span style="color: #000080;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">If</span> Wscript.Arguments.Count = 4 <span style="color: #000080;">Then</span> <span style="color: #008000;">' activate forwarding<br />
</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;obAccount.ForwardAddress &nbsp; &nbsp; &nbsp;= Wscript.Arguments(3)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obAccount.ForwardEnabled &nbsp; &nbsp; &nbsp;= <span style="color: #000080;">true</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obAccount.ForwardKeepOriginal = <span style="color: #000080;">false</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">Else</span> <span style="color: #008000;">' deactivate forwarding<br />
</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;obAccount.ForwardAddress &nbsp; &nbsp; &nbsp;= <span style="color: #800000;">&quot;&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obAccount.ForwardEnabled &nbsp; &nbsp; &nbsp;= <span style="color: #000080;">false</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obAccount.ForwardKeepOriginal = <span style="color: #000080;">true</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">End</span> <span style="color: #000080;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obAccount.Save<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WScript.StdOut.WriteLine <span style="color: #800000;">&quot;0&quot;</span> <span style="color: #008000;">' forwarding set<br />
</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000080;">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WScript.StdOut.WriteLine <span style="color: #800000;">&quot;1&quot;</span> <span style="color: #008000;">' password is not correct<br />
</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000080;">End</span> <span style="color: #000080;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WScript.StdOut.WriteLine <span style="color: #800000;">&quot;2&quot;</span> <span style="color: #008000;">' account does not exist<br />
</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000080;">End</span> <span style="color: #000080;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000080;">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WScript.StdOut.WriteLine <span style="color: #800000;">&quot;3&quot;</span> <span style="color: #008000;">' domain does not exist<br />
</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000080;">End</span> <span style="color: #000080;">If</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000080;">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; WScript.StdOut.WriteLine <span style="color: #800000;">&quot;4&quot;</span> <span style="color: #008000;">' password is not correct<br />
</span>&nbsp; &nbsp; &nbsp; <span style="color: #000080;">End</span> <span style="color: #000080;">If</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Else</span><br />
&nbsp; &nbsp; &nbsp; WScript.StdOut.WriteLine <span style="color: #800000;">&quot;5&quot;</span> <span style="color: #008000;">' hMailServer.Application not available<br />
</span> &nbsp; &nbsp;<span style="color: #000080;">End</span> <span style="color: #000080;">If</span><br />
&nbsp; <span style="color: #000080;">Else</span><br />
&nbsp; &nbsp; WScript.StdOut.WriteLine <span style="color: #800000;">&quot;6&quot;</span> <span style="color: #008000;">' wrong number of arguments<br />
</span> &nbsp;<span style="color: #000080;">End</span> <span style="color: #000080;">If</span></div></td></tr></tbody></table></div>
<p>Ich denke mal, dass damit die beiden wichtigsten Konfigurationsmöglichkeiten für eine E-Mail-Adresse abgedeckt werden sollten. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><em>Habt ihr eine Idee, was man als Endanwender sonst noch konfigurieren können sollte? Wie würdet ihr solch eine Konfiguration am liebsten vornehmen? Würde euch Telnet ausreichen oder würdet ihr eine Webseite bevorzugen?</em><br/><br />
<strong>Umleitende Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/mail-forwarding-des-hmailserver-andern/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Die Vorratsdatenspeicherung ist nichtig&#8230; vorerst&#8230;</title>
		<link>http://weizenspr.eu/2010/die-vorratsdatenspeicherung-ist-nichtig-vorerst/</link>
		<comments>http://weizenspr.eu/2010/die-vorratsdatenspeicherung-ist-nichtig-vorerst/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 09:01:50 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Politik]]></category>
		<category><![CDATA[Spreu]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4492</guid>
		<description><![CDATA[
Ja, gestern war in der Tat ein schöner Tag, denn das Bundesverfassungsgericht hat unter Leitung von Hans-Jürgen Papier die derzeitige Form der verdachtsunabhängigen Vorratsdatenspeicherung für verfassungswidrig erklärt.
Ganz herzlich bedanken möchte ich mich an dieser Stelle zunächst beim AK Vorratsdatenspeicherung, der seit Jahren gegen diesen bürgerfeindlichen Überwachungsapparat gekämpft hat und ich unterstütze auch ihr Anliegen, die [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Ja, gestern war in der Tat ein schöner Tag, denn das <a href="http://de.wikipedia.org/wiki/Bundesverfassungsgericht" target="_blank" rel="nofollow" class="liwikipedia">Bundesverfassungsgericht</a> hat unter Leitung von <a href="http://de.wikipedia.org/wiki/Hans-J%C3%BCrgen_Papier" target="_blank" rel="nofollow" class="liwikipedia">Hans-Jürgen Papier</a> die derzeitige Form der verdachtsunabhängigen <a href="http://de.wikipedia.org/wiki/Vorratsdatenspeicherung" target="_blank" rel="nofollow" class="liwikipedia">Vorratsdatenspeicherung</a> für verfassungswidrig erklärt.</p>
<p>Ganz herzlich bedanken möchte ich mich an dieser Stelle zunächst beim <a href="http://www.vorratsdatenspeicherung.de/" target="_blank" class="liexternal">AK Vorratsdatenspeicherung</a>, der seit Jahren gegen diesen bürgerfeindlichen Überwachungsapparat gekämpft hat und ich unterstütze auch ihr Anliegen, die Vorratsdatenspeicherung nun <a href="http://www.vorratsdatenspeicherung.de/content/view/355/1/lang,de/" target="_blank" class="liexternal">europaweit abzuschaffen</a>. Wie es scheint kommt da ja bereits <a href="http://www.heise.de/newsticker/meldung/EU-will-Pflicht-zur-Vorratsdatenspeicherung-neu-pruefen-942207.html" target="_blank" class="liexternal">ein bisschen Bewegung</a> ins Spiel.</p>
<p>In der <a href="http://www.bundesverfassungsgericht.de/pressemitteilungen/bvg10-011" target="_blank" class="liexternal">Pressemitteilung</a> des Bundesverfassungsbericht zum Urteil über die Vorratsdatenspeicherung werden u.a. <a href="http://www.heise.de/newsticker/meldung/Bundesverfassungsgericht-legt-Huerde-fuer-kuenftige-Vorratsdatenspeicherung-hoch-944021.html" target="_blank" class="liexternal">Hürden aufgezählt</a>, die <a href="http://www.spiegel.de/netzwelt/netzpolitik/0,1518,681255,00.html" target="_blank" class="liexternal">erfüllt sein müssten</a>, damit die Speicherung verfassungskonform ist. Leider stürzen sich darauf im Moment die Politiker und überlegen bereits, wie man die Anforderungen <a href="http://www.spiegel.de/politik/deutschland/0,1518,681308,00.html" target="_blank" class="liexternal">so schnell wie möglich</a> in einen tatsächlichen Gesetzestext überführen kann &#8211; selbst das BKA ist sich nicht zu schade, <a href="http://www.focus.de/politik/deutschland/vorratsdatenspeicherung-bka-will-schnell-ein-neues-gesetz_aid_486040.html" target="_blank" class="liexternal">zur Eile zu drängen</a>.</p>
<p>Meiner Meinung nach ist das angestrebte Vorgehen <strong>totaler Schwachsinn</strong>! Das muss man sich mal auf der Zunge zergehen lassen: Das Bundesverfassungsgericht schreibt vor, was <strong>maximal</strong> möglich ist, um nicht gegen das Grundgesetz zu verstoßen. Und was tun die Politiker? Sie nehmen diese Maximalwerte und wollen sie als Basis für das neue Gesetz verwenden. So nach dem Motto <em>&#8220;Wenn wir das Grundgesetz nicht brechen dürfen, dann können wir es wenigstens möglichst weit ausreizen!&#8221;</em></p>
<p>Einer der Vorreiter ist natürlich mal wieder <a href="http://de.wikipedia.org/wiki/Wolfgang_Bosbach" target="_blank" rel="nofollow" class="liwikipedia">Wolfgang Bosbach</a>, der auch mir <a href="http://weizenspr.eu/2009/politik-ohne-it-sinn-und-verstand/" target="_blank" class="liinternal">schon mehrfach</a> negativ <a href="http://weizenspr.eu/2009/paintball-morden-aus-spas/" target="_blank" class="liinternal">aufgefallen ist</a>. In einer <a href="http://www.phoenix.de/content/290545" target="_blank" class="liexternal">Debatte auf Phoenix</a> hat dieser gestern <strong>abgesondert</strong>, dass man nun völlig hilflos sei und die Verbrechen nicht mehr <a href="http://de.reuters.com/article/domesticNews/idDEBEE62103E20100302" target="_blank" class="liexternal">ordentlich aufklären</a> könne. Auch die Terrorabwehr wäre so <a href="http://www.focus.de/panorama/welt/prozesse-bosbach-vorratsdatenspeicherung-notwendig_aid_485692.html" target="_blank" class="liexternal">nicht mehr möglich</a>. Er geht sogar soweit, zu behaupten, dass Kriminelle nun dazu ermutigt werden könnten, ihre Verbrechen in Deutschland zu planen, da sie hier ja keine Verfolgung mehr fürchten müssen.<br />
Bei solchen unqualifizierten und völlig haltlosen Behauptungen frage ich mich manchmal wirklich, ob sie diese ahnungslosen Freizeitpolitiker nur für die Kontroverse mit in die Sendung nehmen. Ich kann mir jedenfalls nicht vorstellen, dass sie aufgrund seines <em>&#8220;Sachverstandes&#8221;</em> auf ihn aufmerksam geworden sind.<br />
Aber okay, wenn ich mich noch weiter über das <strong>Nichtwissen</strong> von anderen Politikern aufrege, platzt mir evtl. irgendwann nochmal die Hutschnur!</p>
<p>Was zu sagen bleibt, ist, dass wir noch längst nicht am Ziel angekommen sind &#8211; die Vorratsdatenspeicherung ist aufgeschoben, aber nach dem Willen der <span class="bbpost_s" style="text-decoration : line-through;">rechten</span> <em>&#8220;konservativen&#8221;</em> Politiker noch längst nicht aufgehoben. Wir müssen also weiterkämpfen; für die Bürgerrechte; für die Privatsphäre jedes einzelnen Menschen in Deutschland. Das heißt aber auch für mich, dass die Piratenpartei noch mehr als genug Arbeit haben wird, um Deutschland zu dem zu machen, was das Grundgesetz uns zusichert.<br/><br />
<strong>Gespeicherte Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/die-vorratsdatenspeicherung-ist-nichtig-vorerst/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ist der Winter endlich vorbei?</title>
		<link>http://weizenspr.eu/2010/ist-der-winter-endlich-vorbei/</link>
		<comments>http://weizenspr.eu/2010/ist-der-winter-endlich-vorbei/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 21:56:09 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Weizen]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4477</guid>
		<description><![CDATA[
In letzter Zeit ist es ziemlich stürmisch in den deutschen Landen. Und erst vorhin bin ich in einen heftigen Schneeschauer geraten. Trotzdem schmilzt überall das Monate alte Eis und grüne Wiesen, Silvestermüll, Hundekot und erfrorene Tiere kommen ans Tageslicht.
Damit ihr jedoch nicht vergesst, wie schön sauber und weiß die Welt noch vor ein paar Tagen [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>In letzter Zeit ist es ziemlich stürmisch in den deutschen Landen. Und erst vorhin bin ich in einen heftigen Schneeschauer geraten. Trotzdem schmilzt überall das Monate alte Eis und grüne Wiesen, Silvestermüll, Hundekot und erfrorene Tiere kommen ans Tageslicht.</p>
<p>Damit ihr jedoch nicht vergesst, wie schön sauber und weiß die Welt noch vor ein paar Tagen gewesen ist, wollte ich euch nochmal zwei schöne Bilder von Eiszapfen präsentieren! <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><div id="attachment_4479" class="wp-caption aligncenter" style="width: 327px"><a href="http://weizenspr.eu/uploads/IMAGE_082.jpg" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/IMAGE_082-150x150.jpg" alt="" title="IMAGE_082" width="150" height="150" class="size-thumbnail wp-image-4479" /></a> <a href="http://weizenspr.eu/uploads/IMAGE_085.jpg" target="_blank" class="liimagelink"><img src="http://weizenspr.eu/uploads/IMAGE_085-150x150.jpg" alt="" title="IMAGE_085" width="150" height="150" class="size-thumbnail wp-image-4480" /></a><p class="wp-caption-text">Eiszapfen</p></div><br />
Bei den Bildern wird es doch direkt wieder kühl im Zimmer. <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> <br/><br />
<strong>Frühlingshafte Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/ist-der-winter-endlich-vorbei/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Der wahre Hacker&#8230;</title>
		<link>http://weizenspr.eu/2010/der-wahre-hacker/</link>
		<comments>http://weizenspr.eu/2010/der-wahre-hacker/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 07:51:58 +0000</pubDate>
		<dc:creator>Mea Culpa</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Spreu]]></category>

		<guid isPermaLink="false">http://weizenspr.eu/?p=4359</guid>
		<description><![CDATA[
Hacker sind auch heute noch ein Mythos. Das liegt wahrscheinlich daran, dass außenstehende nicht verstehen, was diese Leute machen und wie sie es anstellen. Leider gibt es auch solche Exemplare, die zwar keine Ahnung haben, aber trotzdem unbedingt als Hacker angesehen werden wollen. Dabei kommen dann solche Perlen der Unterhaltung heraus:

Ja, in der Tat war [...]]]></description>
			<content:encoded><![CDATA[<!-- RSPEAK_START -->
<p>Hacker sind auch heute noch ein Mythos. Das liegt wahrscheinlich daran, dass außenstehende nicht verstehen, was diese Leute machen und wie sie es anstellen. Leider gibt es auch solche Exemplare, die zwar keine Ahnung haben, aber trotzdem unbedingt als Hacker angesehen werden wollen. Dabei kommen dann solche Perlen der Unterhaltung heraus:</p>
<p><center><br /><img src="http://i.ytimg.com/vi/SXmv8quf_xM/0.jpg" alt="media" /><br />
</center></p>
<p>Ja, in der Tat war dieses Video des <em>&#8220;NextGenHacker101&#8243;</em> Anlass für diesen Blogeintrag: Leute, die Ahnung von der Materie haben, finden das Video einfach nur saukomisch &#8211; weil nichts davon korrekt ist. Schlimmerweise könnte sich dieses Nichtwissen bei technikfernen Leuten wirklich festsetzen <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  .<br />
Aber es ist kein Einzelfall: Viele Leute verstehen unter &#8220;Hacken&#8221; das stupide Einbrechen in einem (Windows-) Computer. Jeder Taschenspielertrick scheint recht zu sein, um die Bezeichnung &#8220;Hacker&#8221; zu erlangen. Z.B. hier:</p>
<p><center><br /><img src="http://i.ytimg.com/vi/7VYXWHDp7Pg/0.jpg" alt="media" /><br />
</center></p>
<p>Dass dieser &#8220;Hack&#8221; nur dann funktioniert, wenn kein Administrator-Passwort gesetzt ist, wird dabei einfach mal verschwiegen. Stattdessen hätte man lieber zeigen sollen, wie man über Linux das Admin-Passwort zurücksetzen kann. Aber das wäre wohl zu viel Arbeit gewesen <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .<br />
In der gleichen Liga wie die <em>&#8220;Ich kann mich in einen ungeschützten Account einloggen&#8221;</em>-Hacker spielen die <em>&#8220;Ich kann das Passwort ändern, wenn ich bereits eingeloggt bin&#8221;</em>-Hacker:</p>
<p><center><br /><img src="http://i.ytimg.com/vi/LGO6hSt5nqk/0.jpg" alt="media" /><br />
</center></p>
<p>Darüber gibt es dann eigentlich nur noch die Leute, die sich irgendein Programm besorgen und denken, damit jetzt endlich ein Hacker zu sein. Egal, ob es sich dabei dann um normale Remote-Desktop-Tools handelt oder aber um <a href="http://www.stophiphop.com/modules/news/article.php?storyid=184" target="_blank" class="liexternal">echte, coole &#8220;Hacker-Tools&#8221;</a> &#8211; mit richtig vielen fiesen Knöpfen wie <em>&#8220;Vertausche die Maustasten&#8221;</em>, <em>&#8220;Gib eine Nachricht aus&#8221;</em> aus oder anderes Zeug. Ja, in der Tat! Solche Tools könnten auch richtige Hacker benutzen. Nur mit dem Unterschied, dass die auch den schwierigen Part meistern: Nämlich das Client-Programm auf dem Zielrechner zu installieren!</p>
<p><center><br /><img src="http://i.ytimg.com/vi/BqBQ1ovQ2Cg/0.jpg" alt="media" /><br />
</center></p>
<p>Wie jetzt? Im Video wurde das ganze nur lokal verwendet? Und sogar noch mit Warnhinweis der Firewall? Na das ist ja mal echt gefährlich <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
<p>Aber jetzt mal im Ernst: Wenn das keine Hacker sind, wer ist dann ein Hacker? Dazu gibt es mehrere Antworten &#8211; je nachdem, <a href="http://de.wikipedia.org/wiki/Hacker" target="_blank" rel="nofollow" class="liwikipedia">welche Seite</a> <a href="http://en.wikipedia.org/wiki/Hacker_%28computing%29" target="_blank" rel="nofollow" class="liwikipedia">man betrachtet</a>. Im Grunde haben jedoch alle Hackerdefinitionen eines gemein: Sie haben ein tiefes Wissen in dem Fachgebiet, auf das sie sich spezialisiert haben.</p>
<p>Grundvoraussetzung um ein richtiger Hacker zu sein ist meiner Meinung nach vor allem das Interesse daran, sich neue Dinge anzueignen, um vorhandene Lösungen verstehen, erforschen und verbessern zu können. Es ist eigentlich völlig egal, ob man sich jetzt nun die Computersicherheit auf die Fahnen geschrieben hat und guckt, wie man Sicherheitsmechanismen umgehen kann &#8211; oder, ob man eher technikaffin ist und sich gerne anguckt, wie irgendwelche Geräte intern verdrahtet sind und man solche Hardware gerne mal für den eigenen Gebrauch umbaut.</p>
<p>Es geht dabei garnicht um Ruhm oder Prestige, sondern primär um den eigenen Spieltrieb &#8211; herauszufinden, was möglich ist, obwohl es nicht möglich sein sollte; gucken, welche Komponenten man <a href="http://weizenspr.eu/2009/shared-hosting-angriff-auf-sessions-moglich/" target="_blank" class="liinternal">gegen einander ausspielen</a> kann oder um es anders auszudrücken: Gucken, wie weit sich ein System dehnen lässt, bevor es kaputt geht.</p>
<p>Ich persönlich gehe dabei eigentlich immer wie folgt vor: Wenn mir ein neues System (z.B. neue Software) begegnet, gucke ich mir zuerst an, wie sie im Regelfall funktionieren sollte. Wenn ich das verstanden habe, gucke ich mir an, welche Schwachstellen das Gesamtsystem haben könnte (Benutzereingaben, Übergangspunkte zwischen verschiedenen Softwaremodulen, etc.). Anschließend probiere ich aus, wie diese Schwachstellen mit Fehlersituationen umgehen (simple Falscheingaben, gezielte Falscheingaben, usw.). Sollte man nun über ein ungewöhnliches Verhalten stolpern, muss man analysieren, wie es zustande gekommen ist &#8211; und man muss überprüfen, ob das Verhalten reproduzierbar und steuerbar ist. Und aus diesen Erkenntnissen baut man dann seine Angriffstragien auf, die dann unter Umständen auch weitere Eingriffe nach sich ziehen können.</p>
<p>Das Vorgehen ist natürlich nur rein exemplarisch &#8211; ich bin mir sicher, dass andere Personen auch anders bei ihren Analysen vorgehen.</p>
<p><em>Wie empfindet ihr gegenüber Hackern? Seid ihr selbst welche? Seht ihr Hacker das absolute Böse? Oder seid ihr solche Fanboys, wie sie in den Videos zu sehen waren? <img src='http://weizenspr.eu/weizenspreu_wordpress29_live/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </em><br/><br />
<strong>Hackende Grüße, Kenny</strong></p>

<!-- RSPEAK_STOP -->]]></content:encoded>
			<wfw:commentRss>http://weizenspr.eu/2010/der-wahre-hacker/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
