<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>Internet weblog</title>
	<link>http://www.mainserverpvb.com</link>
	<description>Alle artikelen gaan over internet oplossing.</description>
	<pubDate>Sun, 18 Jul 2010 09:02:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>files verwijderen ouder dan een x aantal dagen</title>
		<link>http://www.mainserverpvb.com/2010/07/18/files-verwijderen-ouder-dan-een-x-aantal-dagen/</link>
		<comments>http://www.mainserverpvb.com/2010/07/18/files-verwijderen-ouder-dan-een-x-aantal-dagen/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 09:02:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2010/07/18/files-verwijderen-ouder-dan-een-x-aantal-dagen/</guid>
		<description><![CDATA[het volgende commando kun je op de command line uitvoeren. Deze zoekt naar bestanden in een bepaalde map waar van de bestanden ouder zijn dan 5 dagen en worden automatisch verwijderd.
find /path/to/files* -mtime +5 -exec rm {} \;
]]></description>
			<content:encoded><![CDATA[<p>het volgende commando kun je op de command line uitvoeren. Deze zoekt naar bestanden in een bepaalde map waar van de bestanden ouder zijn dan 5 dagen en worden automatisch verwijderd.</p>
<p>find /path/to/files* -mtime +5 -exec rm {} \;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2010/07/18/files-verwijderen-ouder-dan-een-x-aantal-dagen/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Synlogy DS107+ Backup met rsync  via shh zonder in te loggen</title>
		<link>http://www.mainserverpvb.com/2010/07/18/synlogy-ds107-backup-met-rsync-via-shh-zonder-in-te-loggen/</link>
		<comments>http://www.mainserverpvb.com/2010/07/18/synlogy-ds107-backup-met-rsync-via-shh-zonder-in-te-loggen/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 06:38:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2010/07/18/synlogy-ds107-backup-met-rsync-via-shh-zonder-in-te-loggen/</guid>
		<description><![CDATA[Graag wil ik mijn bestanden van de DS107+ naar een webserver backuppen naar mijn live server op een private map.
Dit kan gedaan worden met rsync van linux. Op zowel de DS107+ moet dit programma draaien. Ook moet SSH actief zijn
Op de DS107+ zit rsync er al op SSH moet actief zijn op de DS107+ en [...]]]></description>
			<content:encoded><![CDATA[<p>Graag wil ik mijn bestanden van de DS107+ naar een webserver backuppen naar mijn live server op een private map.<br />
Dit kan gedaan worden met rsync van linux. Op zowel de DS107+ moet dit programma draaien. Ook moet SSH actief zijn<br />
Op de DS107+ zit rsync er al op SSH moet actief zijn op de DS107+ en kan je instellen in de admin. Momenteel draai ik firmware DSM2.3</p>
<p>rsync werkt via poort22 zorg ervoor dat de firewall van je thuisnetwerk deze poort open zet. </p>
<p>Om de verbinding te testen kun je op de target pc dus daar waar de bestanden naar toe gekopieerd moet worden in te loggen via de command line.<br />
en type dan:</p>
<p>ssh ipthuis.   Je moet vervolgens gebruikersnaam en wachtwoord in geven.</p>
<p>Dit willen we niet want dit moet automatisch gaan om dat we later op de target pc (waarna toe de bestanden naar toe moeten)</p>
<p>dit gaat als volgt :</p>
<p>login op de target pc via SSH (met putty) (dus waar je straks mee wilt inloggen naar de DS107+)</p>
<p>type het volgende in :</p>
<p>ssh-keygen -t rsa</p>
<p>laat alle passphrasse vragen leeg.</p>
<p>nu wordt de key opgeslagen in de root/.shh/</p>
<p>bestand heet id_rsa.pub</p>
<p>haal dit bestand binnen op je lokale pc via bijvoobeeld winscp.</p>
<p>login nu in op de DS107+ via SSH (met putty)  doe dit met root en het admin wachtwoord dan heb je voldoende rechten.</p>
<p>editeer het bestand /etc/ssh/sshd_config (met vi deze zit ook op de DS107)</p>
<p>haal het volgende # weg (dan wordt het een variabele i.p.v. commetaar regel)</p>
<p>#RSAAuthentication yes<br />
PubkeyAuthentication yes<br />
AuthorizedKeysFile .ssh/authorized_keys</p>
<p>sla het bestand nu op.</p>
<p>ga dan weer terug naar de root en maak het volgende aan:</p>
<p># cd /root<br />
mkdir .ssh<br />
touch .ssh/authorized_keys</p>
<p>aangezien winscp niet goed werkt met de DS107+ copieer ik de sleutel van hierboven naar de editor en sla ik het bestand authorized_keys op.</p>
<p>vi .ssh/authorized_keys   (zet de sleutel er in crt-c in windows en in putty ga op de eerste regel staan en klik op de linkse muis knop. dan even<br />
wachten en alles wordt gekopieerd op het eerste letter na bij mij staat sh i.p.v ssh type de s er even bij en sla het bestand op.<br />
pas dan de rechten nog even aan op de DS107+</p>
<p>chmod 700 .ssh<br />
chmod 644 .ssh/authorized_keys</p>
<p>reboot nu de DS107+  in  het webbase admin gedeelte.</p>
<p>nu kun je op de target server op de DS107 inloggen</p>
<p>ssh ipadresthuis  </p>
<p>nu zie je dat je zonder gebruikersnaam en wachtwoord kan inloggen.<br />
een perl script zou kunnen zijn :</p>
<p>rsync -r -a -c -v -e ssh –delete <a href="mailto:gebruikersnaam@server">gebruikersnaam@server</a>: path_source/  path_target<br />
Deze kopieert alle bestanden naar de target server vanaf de DS107+ en delete de oude bestanden  op de target server<br />
waardoor alles netje in sync loopt. Bestanden worden alleen gekopieerd als ze nieuwer zijn dus je hebt een minimale data overdracht.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2010/07/18/synlogy-ds107-backup-met-rsync-via-shh-zonder-in-te-loggen/feed/</wfw:commentRss>
		</item>
		<item>
		<title>linux synch (backup) van de ene server naar de andere</title>
		<link>http://www.mainserverpvb.com/2010/07/17/linux-synch-backup-van-de-ene-server-naar-de-andere/</link>
		<comments>http://www.mainserverpvb.com/2010/07/17/linux-synch-backup-van-de-ene-server-naar-de-andere/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 18:50:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2010/07/17/linux-synch-backup-van-de-ene-server-naar-de-andere/</guid>
		<description><![CDATA[0m gebruik te kunnen maken van rsync moet dit op beide servers zijn geinstalleerd.
rsync werkt over poort 22 ! Om rsync te installeren op opensuse linux geef het volgende commando:
zypper in rsync
login op de server waar je vanaf wilt gaan kopieren dus de target server
ssh-keygen -t dsa
ssh-keygen vraagt waar het naartoe moet worden opgeslagen standaard  [...]]]></description>
			<content:encoded><![CDATA[<p>0m gebruik te kunnen maken van rsync moet dit op beide servers zijn geinstalleerd.<br />
rsync werkt over poort 22 ! Om rsync te installeren op opensuse linux geef het volgende commando:</p>
<p>zypper in rsync<br />
login op de server waar je vanaf wilt gaan kopieren dus de target server<br />
ssh-keygen -t dsa</p>
<p>ssh-keygen vraagt waar het naartoe moet worden opgeslagen standaard  ~/.ssh/id_dsa <br />
lokatie zo laten staan</p>
<p>daarna wordt er gevraag voor  passphrase, laat dit veld blank daarna wordt er nog een keer om gevraagd<br />
ook deze leeg laten.</p>
<p>de private key is nu opgeslagen wees hier voorzicht mee want iedereen die deze key heeft kan straks inloggen !!</p>
<p>ga naar de map  ~/.ssh/id_dsa   ( /root/.ssh/id_dsa )</p>
<p>cd  ~/.ssh/id_dsa </p>
<p>zijn dus twee bestanden : id_dsa en id_dsa.pub</p>
<p>kopieer deze sleut naar je andere server of naar je pc (bijvoorbeeld win winscp)</p>
<p>rsync -r -a -c -v -e ssh &#8211;delete <a href="mailto:gebruikersnaam@server">gebruikersnaam@server</a>: path_source/*.*  path_target</p>
<p>maak een file aan genaamd authorized_keys2 (kan gewoon in windows met notepad++)</p>
<p>plaats hierin de gegevens van het bestand id_dsa.pub. (je kan het bestand ook hernoemen !)</p>
<p>nu moeten we de andere server dus de source vertellen dat deze server zonder in te loggen connectie</p>
<p>login op de andere server en plaats authorized_keys2  in /root/.ssh/ </p>
<p>nu kun je vanaf de andere server via ssh connectie leggen zonder in te loggen</p>
<p>en je zo een perl script verder kan maken</p>
<p>om een map te synchroniseren kun je dit als volgt doen dit script draait op de target (dus niet op de source !)<br />
 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2010/07/17/linux-synch-backup-van-de-ene-server-naar-de-andere/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Unbuntu geheugen beheer met free en top</title>
		<link>http://www.mainserverpvb.com/2010/06/13/unbuntu-geheugen-beheer-met-free-en-top/</link>
		<comments>http://www.mainserverpvb.com/2010/06/13/unbuntu-geheugen-beheer-met-free-en-top/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 05:23:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2010/06/13/unbuntu-geheugen-beheer-met-free-en-top/</guid>
		<description><![CDATA[Waneer uw Linuxserver of -computer nogal traag is gaat u zich misschien afvragen of het geheugen wellicht uitgebreid moet worden. Maar is dat echt nodig? Bekijk het eens vanuit TOP.
Door het commando top in te typen krijgt u een programma dat de processen weergeeft. Elke 5 seconden worden de gegevens opnieuw geladen. Zo toont het [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mainserverpvb.com/wp-content/uploads/2010/06/free.jpg" title="free.jpg"></a>Waneer uw Linuxserver of -computer nogal traag is gaat u zich misschien afvragen of het geheugen wellicht uitgebreid moet worden. Maar is dat echt nodig? Bekijk het eens vanuit TOP.</p>
<p>Door het commando <strong>top</strong> in te typen krijgt u een programma dat de processen weergeeft. Elke 5 seconden worden de gegevens opnieuw geladen. Zo toont het u de systeemprestaties in werkelijke tijd.</p>
<p>In de eerste regel ziet u hoe lang de server al aanstaat: hier 16 dagen, 3 uur een 23 minuten. De load average van de laatste 1, 5 en 15 minuten. U krijgt dan een goede indruk en niet alleen een momentopname. De waarde is aantal CPU&#8217;s x 1.00. Alles daaronder zegt dat het systeem capaciteit over heeft. Daarboven dan zullen processen in de wachtrij geraken totdat er tijd voor ze is.</p>
<p>De tasks-regel geeft aan hoeveel processen er zijn. Zombies zijn processen die klaar zijn maar niet afgesloten. Ze staan nog open en u zou ze handmatig moeten beëndigen. Stopped zijn processen waar u ook naar moet kijken. Ze wachten tot ze de opdracht krijgen verder te gaan.</p>
<p>Op de CPU(s) regel moet u letten op us (User Space processen) en sy (Systeem processen). De laatste zal meer drukken op het systeem. De derde belangrijke is de wa. Dit zijn processen die wachten op I/O bronnen. Als dit hoog is, samen met een hoge load average dan heeft u een probleem. Wellicht is dat een geheugenprobleem. Hieronder ziet u dat 94,9% idle is: processen die niets te doen hebben.</p>
<p><img height="120" width="472" src="http://www.mainserverpvb.com/wp-content/uploads/2010/06/top.jpg" alt="top.jpg" /></p>
<p>Het commando <strong>free</strong></p>
<p>Druk op de q-toets om top te stoppen. Hoewel in top de &#8220;free&#8221; informatie al gegeven wordt, doen we dat toch liever met het commando free. Omdat deze ook een samenvatting maakt. En omdat de parameter <strong>-m</strong> het geheel in MegaBytes geeft en dat is toch wat handiger te lezen.</p>
<p><img height="136" width="472" src="http://www.mainserverpvb.com/wp-content/uploads/2010/06/free.jpg" alt="free.jpg" style="width: 472px; height: 136px" /></p>
<p>U ziet dat er totaal 3 GB aan RAM is. Slechts 390MB is vrij. Terwijl er volgens top nauwelijks processen actief zijn! U ziet ook dat er 1/2GB aan buffers zijn en 1,2GB aan cached. Buffers en cached zijn in het kort gezegd gegevens die voor het gemak in RAM staan en nog moeten worden weggeschreven. Het mooie is dat als er RAM-geheugen nodig is de buffers/cached in milisecondes worden geleegd. Feitelijk is er veel meer werkgeheugen beschikbaar. Dat zien we in de samenvatting -/+buffers/cache: 2,1GB in plaats van 390MB is free!! We hoeven het geheugen helemaal niet uit te breiden.</p>
<p>Onderaan zien we de swap. Kort door de bocht gesproken moet deze eigenlijk geheel vrij zijn. Een klein beetje data in de swap is normaal. Sommige programma&#8217;s zijn geprogrammeerd om swap zelfs flink te gebruiken (Oracle enSAP bijvoorbeeld). Maar doorgaans is swap alleen aan het vollopen als er te weinig werkgeheugen is voor het systeem.</p>
<p><strong>Top gebruiken</strong></p>
<p>In top heeft u de mogelijkheid om processen (zombies bijvoorbeeld) te beëndigen. Druk op <strong>K</strong>. Geef de PID op. En stuur het proces signaal15. Werkt dat niet dan kan het grovere signaal 9 gebruikt worden. Met de <strong>R</strong> toets kan het proces meer of minder prioriteit gegeven worden. -20 (hoog) tot 19 (laag). Alleen root kan minwaarden geven en -20 betekent echt dat alleen het betreffende proces aandacht krijgt. Gebruik <strong>?</strong> om een overzicht van sneltoetsen te krijgen. De <strong>Q</strong> sluit top af. <strong>man</strong> of <strong>info top</strong> en <strong>man</strong> of<strong> info free</strong> vertelt u nog meer.</p>
<p><strong>Conclusie</strong></p>
<p>Top zal u laten zien of werkgeheugen uitbreiden nodig is. Of dat uw CPU het niet aankan. Of anders dat het specifieke processen zijn die een <em>bottleneck</em> veroorzaken. Wellicht moeten die programma&#8217;s eens geupgrade of opnieuw gecompileerd worden. Kortom: hoe simpel top (en free) ook lijken, ze geven uw een hands-on op de systeemprestaties. Na het lezen van dit artikel (mede geÏnspireerd door een artikel van Sander van Vugt in Linux Magazine maart 2009), begrijpt u meer van wat u met top en free kunt zien.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2010/06/13/unbuntu-geheugen-beheer-met-free-en-top/feed/</wfw:commentRss>
		</item>
		<item>
		<title>qmail op strato server van ene server naar andere server bijvoorbeeld</title>
		<link>http://www.mainserverpvb.com/2010/01/29/qmail-op-strato-server-van-ene-server-naar-andere-server-bijvoorbeeld/</link>
		<comments>http://www.mainserverpvb.com/2010/01/29/qmail-op-strato-server-van-ene-server-naar-andere-server-bijvoorbeeld/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 13:49:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Strato V-Server]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2010/01/29/qmail-op-strato-server-van-ene-server-naar-andere-server-bijvoorbeeld/</guid>
		<description><![CDATA[Ik doe de mail altijd via webmail van horde op de servers van strato.  Nu wilt het nog weleens voorkomen dat de server verhuis naar een ander.  Wat je dan wilt is dat de email wel mee genomen wordt naar de andere server. 
Dit is te doen je moet dan via ftps inloggen op de server WinSCP is [...]]]></description>
			<content:encoded><![CDATA[<p>Ik doe de mail altijd via webmail van horde op de servers van strato.  Nu wilt het nog weleens voorkomen dat de server verhuis naar een ander.  Wat je dan wilt is dat de email wel mee genomen wordt naar de andere server. </p>
<p>Dit is te doen je moet dan via ftps inloggen op de server WinSCP is hiervoor geschikt.  Op een strato virtuel server staat deze map op :  </p>
<p> Var/qmail/mailnames/..domeinnaam../..emailadres../Maildir/cur   .</p>
<p>zo staan er ook andere mapen in .sentmail eigen gemaakte mappen eventueel. ook staan de bijlages in de bestanden.  </p>
<p>nu is het een kwestie van kopieren en klaar is kees.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2010/01/29/qmail-op-strato-server-van-ene-server-naar-andere-server-bijvoorbeeld/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Plesk spf instellen als voorbeeld op een strato server.</title>
		<link>http://www.mainserverpvb.com/2009/10/11/plesk-spf-instellen-als-voorbeeld-op-een-strato-server/</link>
		<comments>http://www.mainserverpvb.com/2009/10/11/plesk-spf-instellen-als-voorbeeld-op-een-strato-server/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 18:48:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Strato V-Server]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2009/10/11/plesk-spf-instellen-als-voorbeeld-op-een-strato-server/</guid>
		<description><![CDATA[Veel van mijn emails kwamen in een spam filter terecht van Hotmail of Gmail tot mijn grote spijt.  Dit bleek na lang speurwerk te liggen aan een zogenaamde SPF instellingen.
 Sender Policy Framework (afgekort SPF) is een protocol dat tot doel heeft te helpen spam te verminderen. Men hoopt spam te verminderen door vast te stellen [...]]]></description>
			<content:encoded><![CDATA[<p>Veel van mijn emails kwamen in een spam filter terecht van Hotmail of Gmail tot mijn grote spijt.  Dit bleek na lang speurwerk te liggen aan een zogenaamde SPF instellingen.</p>
<p> Sender Policy Framework (afgekort SPF) is een protocol dat tot doel heeft te helpen spam te verminderen. Men hoopt spam te verminderen door vast te stellen of de verzender van een mailbericht gerechtigd is om een bericht te verzenden.</p>
<p>Binnen het SPF protocol wordt aan het DNS-record een extra informatieveld van een domein toegevoegd. In dit record wordt vermeld welke mailservers namens dit domein mail mogen verzenden. Staat een mailserver niet in deze opsomming en verzendt deze toch mail met het betreffende domein als afzender, dan wordt de mail als onrechtmatig beschouwd.</p>
<p>SPF levert een bescheiden bijdrage aan het beperken van spam. Het helpt mailservers wel om mail te onderscheppen welke door bijvoorbeeld een zombie-pc is verzonden, maar niet tegen mail welke verzonden is door mailservers die in het betreffende domeinrecord vermeld zijn. Spammers maken daardoor steeds vaker gebruik van officieel geregistreerde domeinen waarvan zij ook de mailservers in handen hebben.</p>
<p>Voor nieuwe sites geldt:</p>
<p>&lt;domain&gt;. TXT &#8220;v=spf1 a mx mx:mail.&lt;domain&gt; ip4:&lt;ip&gt; -all&#8221;<br />
Ga naar de plesk om geving van de server ( domein instellen komt later !!!)</p>
<p>Ga naar server dan DNS instellingen .   Server &gt; DNS &gt;</p>
<p>* voeg een TXT record toe  laat  domein naam leeg in het TXT record vul je het volgende in </p>
<p>&#8220;v=spf1 a mx mx:mail.&lt;domain&gt; ip4:&lt;ip&gt; -all&#8221;  ( LET OP : ZONDER DE AANHALINGSTEKENS !!)</p>
<p>Als  je nu een  nieuw domein zou aanmaken en bovengenoemde gedeelte heb ingevuld.  Dan wordt dit al gedaan voor je<br />
(als je ip veranderd  van server, moet je het handmatig aanpassen !)</p>
<p>Voor bestaande sites  dus sites die al in plesk zijn ondergebracht :</p>
<p>Voor elk domein waarmee  je email wilt versturen moet je TXT record toevoegen !!</p>
<p>mydomain.com. TXT &#8220;v=spf1 a mx mx:mail.mydomain.com. ip4:1.2.3.4 -all&#8221;<br />
waar  1.2.3.4 is IP adres  van je email server. ( De aanhalingstekens niet mee nemen !!  )</p>
<p>Dus het je krijg het volgende voorbeeld:<br />
mydomain.com. TXT &#8220;v=spf1 a mx mx:mail.mydomain.com ip4:N.N.N.N 1 -all&#8221;</p>
<p>* verander mydomain.com  met jouw domein en  N.N.N.N met het ip van het domain&#8217;s IP</p>
<p>* met het testen is het beter om  &#8221;~all&#8221; and not &#8220;-all&#8221;  te gebruiken.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2009/10/11/plesk-spf-instellen-als-voorbeeld-op-een-strato-server/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Direct Email versturen op een strato server  bij je standaard isp</title>
		<link>http://www.mainserverpvb.com/2009/10/09/direct-email-versturen-op-een-strato-server-bij-je-standaard-isp/</link>
		<comments>http://www.mainserverpvb.com/2009/10/09/direct-email-versturen-op-een-strato-server-bij-je-standaard-isp/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 12:19:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[diverse]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2009/10/09/direct-email-versturen-op-een-strato-server-bij-je-standaard-isp/</guid>
		<description><![CDATA[
Direct Email versturen op een strato server 
Met dank aan de kpn moet er voor je direct mail kunt versturen met je strato server eerst een en ander aangepast worden.
Ik ga daarvoor poort 587 in gebruik nemen. Meer over deze poort vind je hier (engelstalig) http://www.ietf.org/rfc/rfc2476.txt. Voor poort 587 is authorisatie verplicht, maar dat wil je [...]]]></description>
			<content:encoded><![CDATA[<h3 id="post-28" class="post-title"><a rel="bookmark" href="http://stratoblog.vanderhoning.net/?p=28"></a></h3>
<p class="post-content">Direct Email versturen op een strato server </p>
<p>Met dank aan de kpn moet er voor je direct mail kunt versturen met je strato server eerst een en ander aangepast worden.</p>
<p>Ik ga daarvoor poort 587 in gebruik nemen. Meer over deze poort vind je hier (engelstalig) <a href="http://www.ietf.org/rfc/rfc2476.txt">http://www.ietf.org/rfc/rfc2476.txt</a>. Voor poort 587 is authorisatie verplicht, maar dat wil je zowiezo.</p>
<p>Instellen gaat als volgt:</p>
<p>Log met putty in op je strato server.</p>
<p><font face="Courier New" color="#008000">cd /etc/xinetd.d</font></p>
<p><font face="Courier New" color="#008000">cp smtp_psa smtp_additional</font></p>
<p><font face="Courier New" color="#008000">vi smtp_additional</font></p>
<p>Dit bestand ziet er als volgt uit:</p>
<p><font face="Courier New" color="#008000">service smtp<br />
{<br />
socket_type = stream<br />
protocol = tcp<br />
wait = no<br />
disable = no<br />
user = root<br />
instances = UNLIMITED<br />
server = /var/qmail/bin/tcp-env<br />
server_args = /var/qmail/bin/relaylock /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true<br />
} </font></p>
<p>De eerste regel passen we aan naar service submission .</p>
<p>Nu moeten we met <font face="Courier New" color="#008000">/etc/init.d/xinetd restart</font> even de mailservice herstarten en kunnen we met telnet localhost 587 even een test doen.</p>
<p>Vervolgens moeten we nog een test doen vanaf de eigen pc. Dus <font face="Courier New" color="#008000">telnet domeinaam.ext 587</font>. Als je nu een zwart telnet scherm krijgt met een gestreste cursor als je wat probeert te typen moeten we nog een aanpassing maken in /etc/xinetd.d/smtp_additional.</p>
<p>Dus in putty nogmaals <font face="Courier New" color="#008000">vi smtp_additional</font>. En in de laatste regel die begint met server_args = plaatsen we direct na de = en voor de rest van de regel de volgende tekst: -Rt0</p>
<p>smtp_additional ziet er nu als volgt uit:</p>
<p><font face="Courier New" color="#008000">service submission<br />
{<br />
socket_type = stream<br />
protocol = tcp<br />
wait = no<br />
disable = no<br />
user = root<br />
instances = UNLIMITED<br />
server = /var/qmail/bin/tcp-env<br />
server_args = -Rt0 /var/qmail/bin/relaylock /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true<br />
} </font></p>
<p>Na nogmaals <font face="Courier New" color="#008000">/etc/init.d/xinetd restart</font> moet ook een <font face="Courier New" color="#008000">telnet domeinnaam.ext 587</font> werken.</p>
<p>De -Rt0 patch kun je eventueel ook toepassen op smtp_psa zodat ook de standaard smtp sneller en beter gaat werken.</p>
<p>Afhankelijk van je plesk instellingen moet je eventueel nog de firewall aanpassen en je thuis ip adres toevoegen aan de whitelist maar dat is volgens mij optioneel.</p>
<p>Nu kun je dus uitgaande mail via je strato server versturen. Denk er wel aan dat je bij de uitgaande mailinstellingen poort 587 gebruikt in plaats van 25 en dat authorisatie verplicht is.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2009/10/09/direct-email-versturen-op-een-strato-server-bij-je-standaard-isp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>klikbare links in een flash</title>
		<link>http://www.mainserverpvb.com/2009/10/04/klikbare-links-in-een-flash/</link>
		<comments>http://www.mainserverpvb.com/2009/10/04/klikbare-links-in-een-flash/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 19:41:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[diverse]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2009/10/04/klikbare-links-in-een-flash/</guid>
		<description><![CDATA[Maar je kan het beste op de timeline de code zetten.
Om dat te doen doe je dit.
Ga naar je scherm in flash.
Klik op het bolletje op layer 1.
Druk op F9 (en een venster zal openspringen).
Zet hierin:

ActionScript 3 Code:

instancename.onRelease = function()
{
getURL(&#8220;http://www.google.com&#8221;,&#8220;_self&#8221;);
}
Het enige wat je nog moet doen is je plaatje/object of enig ander object in je [...]]]></description>
			<content:encoded><![CDATA[<p>Maar je kan het beste op de timeline de code zetten.<br />
Om dat te doen doe je dit.<br />
Ga naar je scherm in flash.<br />
Klik op het bolletje op layer 1.<br />
Druk op F9 (en een venster zal openspringen).</p>
<p>Zet hierin:</p>
<p style="margin: 5px 20px 20px">
<p style="margin-bottom: 2px" class="smallfont">ActionScript 3 Code:</p>
<p style="margin-bottom: 2px" class="smallfont">
<p style="font-family: monospace" class="actionscript3">instancename<span style="color: #000000; font-weight: bold">.</span>onRelease = <span style="color: #339966; font-weight: bold">function</span><span style="color: #000000">(</span><span style="color: #000000">)</span><br />
<span style="color: #000000">{</span><br />
getURL<span style="color: #000000">(</span><span style="color: #009900">&#8220;http://www.google.com&#8221;</span><span style="color: #000000; font-weight: bold">,</span><span style="color: #009900">&#8220;_self&#8221;</span><span style="color: #000000">)</span><span style="color: #000000; font-weight: bold">;</span><br />
<span style="color: #000000">}</span><br />
Het enige wat je nog moet doen is je plaatje/object of enig ander object in je flash scherm een instance name geven. En je moet dezelfde naam gebruiken waar ik nu bij de code &#8216;instancename&#8217; heb gezet.</p>
<p><strong>Hoe geef ik mijn object een instance name:</strong><br />
Ga naar je stage en klik daar op het object wat je de instance name wilt geven.<br />
Maak er (als dat nog niet is gebeurd) een movieclip van:<br />
-klik op F8<br />
-Geef deze een naam<br />
-selecteer MovieClip<br />
-druk op ok<br />
Ga terug naar je stage en klik 1 keer op deze movieclip<br />
Druk Ctrl+F3 in en voeg in bij &#8216;instance name&#8217; de naam die je wilt meegeven om dat object aan te spreken.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2009/10/04/klikbare-links-in-een-flash/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Excel wachtwoord vergeten blanbeveiliging opheffen</title>
		<link>http://www.mainserverpvb.com/2009/08/24/excel-wachtwoord-vergeten-blanbeveiliging-opheffen/</link>
		<comments>http://www.mainserverpvb.com/2009/08/24/excel-wachtwoord-vergeten-blanbeveiliging-opheffen/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 19:21:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2009/08/24/excel-wachtwoord-vergeten-blanbeveiliging-opheffen/</guid>
		<description><![CDATA[0]]></description>
			<content:encoded><![CDATA[<p>Ook wel eens een probleem gehad  je hebt een bladbeveiliging gedaan op een excel document. Maar je bent het wachtwoord vergeten. Geen nood maak een makro aan en kopieer de onderstaande visualbasic code, en run deze.  Het kan even duren maar naar verloop van tijd komt er een melding met het wachwoord.  Ideal voor vergeet achtige mensen. </p>
<p class="MsoNormal"><span lang="EN-US">Sub test()</span><span lang="EN-US">  </span></p>
<p class="MsoNormal"><span lang="EN-US">  Dim i As Integer, j As Integer, k As Integer</span></p>
<p class="MsoNormal"><span lang="EN-US">  Dim l As Integer, m As Integer, n As Integer</span></p>
<p class="MsoNormal"><span lang="EN-US">  Dim i1 As Integer, i2 As Integer, i3 As Integer</span></p>
<p class="MsoNormal"><span lang="EN-US">  Dim i4 As Integer, i5 As Integer, i6 As Integer</span></p>
<p class="MsoNormal"><span lang="EN-US">  </span>On Error Resume Next</p>
<p class="MsoNormal"><span lang="EN-US">  For i = 65 To 66: For j = 65 To 66: For k = 65 To 66</span></p>
<p class="MsoNormal"><span lang="EN-US">  For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66</span></p>
<p class="MsoNormal"><span lang="EN-US">  For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66</span></p>
<p class="MsoNormal"><span lang="EN-US">  For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126</span><span lang="EN-US">       </span></p>
<p class="MsoNormal"><span lang="EN-US"> ActiveSheet.Unprotect Chr(i) &#038; Chr(j) &#038; Chr(k) &#038; _</span></p>
<p class="MsoNormal"><span lang="EN-US">      Chr(l) &#038; Chr(m) &#038; Chr(i1) &#038; Chr(i2) &#038; Chr(i3) &#038; _</span></p>
<p class="MsoNormal"><span lang="EN-US">      Chr(i4) &#038; Chr(i5) &#038; Chr(i6) &#038; Chr(n)</span></p>
<p class="MsoNormal"><span lang="EN-US">  If ActiveSheet.ProtectContents = False Then</span></p>
<p class="MsoNormal"><span lang="EN-US">      MsgBox &#8220;One usable password is &#8221; &#038; Chr(i) &#038; Chr(j) &#038; _</span></p>
<p class="MsoNormal"><span lang="EN-US">          Chr(k) &#038; Chr(l) &#038; Chr(m) &#038; Chr(i1) &#038; Chr(i2) &#038; _</span></p>
<p class="MsoNormal"><span lang="EN-US">          Chr(i3) &#038; Chr(i4) &#038; Chr(i5) &#038; Chr(i6) &#038; Chr(n)</span></p>
<p class="MsoNormal"><span lang="EN-US">   </span>Sheets.Add.Name = &#8220;wachtwoord&#8221;</p>
<p class="MsoNormal">   ActiveWorkbook.Sheets(&#8221;wachtwoord&#8221;).Select</p>
<p class="MsoNormal">   <span lang="EN-US">Range(&#8221;a1&#8243;).FormulaR1C1 = Chr(i) &#038; Chr(j) &#038; _</span></p>
<p class="MsoNormal"><span lang="EN-US">          Chr(k) &#038; Chr(l) &#038; Chr(m) &#038; Chr(i1) &#038; Chr(i2) &#038; _</span></p>
<p class="MsoNormal"><span lang="EN-US">          Chr(i3) &#038; Chr(i4) &#038; Chr(i5) &#038; Chr(i6) &#038; Chr(n)</span></p>
<p class="MsoNormal"><span lang="EN-US">       Exit Sub</span></p>
<p class="MsoNormal"><span lang="EN-US">  End If</span></p>
<p class="MsoNormal"><span lang="EN-US">  Next: Next: Next: Next: Next: Next</span></p>
<p class="MsoNormal"><span lang="EN-US">  Next: Next: Next: Next: Next: Next</span></p>
<p class="MsoNormal">End Sub</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2009/08/24/excel-wachtwoord-vergeten-blanbeveiliging-opheffen/feed/</wfw:commentRss>
		</item>
		<item>
		<title>uitleg werking Regular Expressions PHP</title>
		<link>http://www.mainserverpvb.com/2009/08/18/uitleg-werking-regular-expressions-php/</link>
		<comments>http://www.mainserverpvb.com/2009/08/18/uitleg-werking-regular-expressions-php/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 16:45:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP scripts]]></category>

		<guid isPermaLink="false">http://www.mainserverpvb.com/2009/08/18/uitleg-werking-regular-expressions-php/</guid>
		<description><![CDATA[0]]></description>
			<content:encoded><![CDATA[<p><strong><font size="6" face="Verdana,Bold"><font size="6" face="Verdana,Bold"></p>
<p align="left">Regular Expressions</p>
<p></font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Het gebruik van reguliere expressies (zoals ze in het Nederlands heten), is een manier om data mee te valideren, en modificeren. Simpel gezegd houd dat in dat je met reguliere expressies zowel kunt controleren of data wel correct is, als de data naar wens aanpassen. In dit artikel zal in ingaan op reguliere expressies, inallerlei omstandigheden.</p>
<p></font></font><strong><font size="4" face="Verdana,Bold"><font size="4" face="Verdana,Bold"></p>
<p align="left">Waarom reguliere expressies gebruiken?</p>
<p align="left"><font size="3" face="Verdana"><font size="3" face="Verdana">Maar waarom zijn reguliere expressies nu zo nuttig? Reguliere expressies zijn nuttig omdat ze in allerlei situaties oplossingen bieden: Zodra je de techniek kent kun je het veel toepassen. Denk bijvoorbeeld aan </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">url rewriting</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">validatie </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">en  </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">modificatie </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">van data binnen PHP en Javascript ASPX .NET, maar ook andere  programmeertalen: Sterker nog, bijna iedere taal bied ondersteuning voor dereguliere expressies. Daarom is het zo belangrijk om reguliere expressies te kennen.</font></font></p>
<p></font></font></strong><strong><font size="4" face="Verdana,Bold"><font size="4" face="Verdana,Bold"></p>
<p align="left">Eén van de toepassingen</p>
<p></font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Om de werking van reguliere expressies te kunnen uitleggen, leg ik eerst een van de toepassingen van reguliere expressies voor: We beginnen met het valideren van data binnen PHP. Hiervoor kent PHP zelfs meerdere functies:  <strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">ereg(i) </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">preg_match</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">. De i in de naam van de ereg functie geeft aan of defunctie wel of niet hoofdletter gevoelig is, zoals wel bij meerdere PHP functies van toepassing is. We gebruiken de preg_match functie, omdat deze sneller is en meer mogelijkheden bied, over deze mogelijkheden later meer. Om de werking duidelijk uit te kunnen leggen, begin ik met een voorbeeldje:</font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">&lt;?php</p>
<p align="left">$match = &#8220;Hallo wereld&#8221;;</p>
<p align="left">if(preg_match(&#8221;/Hallo/i&#8221;,$match)) {</p>
<p align="left">print &#8220;De opgegeven string matched.&#8221;;</p>
<p align="left">} else {</p>
<p align="left">print &#8220;De opgegeven string matched.&#8221;;</p>
<p align="left">}</p>
<p align="left">?&gt;</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">We zijn in het script een variabele match: We gaan kijken of deze een expressie  matched. Daaronder zien wij een if-lus: Wat doen we als de expressie wel matched, en wat als de expressie niet matched. In dit geval is dat gewoon een (duidelijke) uitvoer.  Het belangrijkste deel voor nu is het volgende:</p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">/Hallo/i</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Je ziet de slashes: Tussen deze slashes staat de expressie zelf, achter de slashes staan de mogelijke <strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">modifiers</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">. Hierover later meer, maar de </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">i </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">die er nu staat,  geeft aan dat de expressie </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">niet </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">hoofdlettergevoelig is. De expressie die nu te vinden is, is makkelijk: Wanneer er ‘Hallo’ in de string staat, dan matched de string wel, anders niet. Maar er zijn natuurlijk veel meer mogelijkheden, om deze zo duidelijk mogelijk te maken, enkele expressies op een rijtje:</font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">h.+</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Match alles wat een “h” bevat, gevolgd door één of meer andere tekens. Het  plusteken betekend namelijk één of meerdere keren herhalen, en de punt betekend alle mogelijke tekens.</p>
<p align="left">Mogelijke matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">hallo</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">henk</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">haha </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">aha</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">criminalspoint </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">ah </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">(er volgen geen letters naar de h). </font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">ha?i</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Match alles waarin een “h” voorkomt, gevolgd door geen of precies één “a”, en daarna en “i”.</p>
<p align="left">Mogelijke matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">hai</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">hi </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">haiii </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">hallo </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">haai</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">.</font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">^h.*</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Alles wat met een “h” begint, gevolgd door mogelijke andere tekens. Het dakje (^) betekend namelijk begin van de string, en de asterisk geen of meerdere malen.  Mogelijke matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">hallo </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">henk</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">aha </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">criminalspoint</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">. </font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">^c.*point$</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Alles wat begint met een “c”, daarna een reeks willekeurige tekens, en daarna</p>
<p align="left">“point”. Het dollarteken geeft dus het einde van de string aan. Mogelijke matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">criminalspoint</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">cpoint </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">crimepoint</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">phppoint </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of  </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">crimepoints</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">.</font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">a{2}</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Alle strings waarin minimal één keer “aa” in voor komt: Getallen tussen accolades betekend: x aantal keer herhalend. Mogelijke matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">aap</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">namaak-aap</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">schaap </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">schaaap</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">anders </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of</font></font></p>
<p></font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic"></p>
<p align="left">criminalspoint<font size="3" face="Verdana"><font size="3" face="Verdana">.</font></font></p>
<p></font></font></em><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">(ha){1,3}</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Je ziet twee nieuwe dingen: De haken geven aan dat het gehele gedeelte moet worden genomen wat er tussen staat, anders gold het gedeelte tussen de accolades alleen voor de “a”, en niet voor de “ha” samen. Twee getallen gescheiden door een accolade betekend: Voorgaande moet tussen a en b keer  voorkomen. Mogelijke matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">haha</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">hahaha </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">behandeling</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">aap </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">helemaal</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">.</font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">^[A-Za-z]+$</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Matched enkel strings die enkel en alleen uit letters bestaan. De rechte haken, houden in: Tekens in de range van. Mogelijke waarde tussen de rechte haken zijn: 0-9, A-Z, a-z, maar ook tekens als spaties, komma’s en punten kunnen in de range staan.  Mogelijk matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">haha </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">criminalspoint </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">henk09 </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">7103AA</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">.</font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">(criminals|point)</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Matched alle strings waarin of “criminals” voorkomt, of “point”. De verticale streep betekend dus OF. Mogelijke matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">criminalswebsite</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">webpoint </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">criminalspoint</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">crimesite </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">php</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">.</font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">[^0-9]</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Matched alles wat geen getallen bevat. Een dakje binnen rechte haken betekent dus NIET.Mogelijke matches: <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">criminalspoint </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">website</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, maar niet </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">henk09 </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">of </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">7103AA</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">.</font></font></p>
<p></font></font><strong><font size="4" face="Verdana,Bold"><font size="4" face="Verdana,Bold"></p>
<p align="left">Praktische voorbeelden</p>
<p></font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Nu ik jullie de syntax van de reguliere expressies min of meer heb uitgelegd, zal ik enkele praktische voorbeelden geven om duidelijker te maken hoe de expressies werken.</p>
<p align="left"><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">De loginnaam</font></font></strong></p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">We beginnen met een reguliere expressie voor een loginnaam. Deze schrijven we</p>
<p align="left">als volgt:</p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">^[A-Za-z0-9_-]{4,16}$</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">De loginnaam mag enkel bestaan uit te tekens A-Z, a-z, 0-9, een underscore en een streepje. De loginnaam moet minimaal vier tekens bevatten, en maximaal zestien. Als we de expressie bekijken, voldoet die aan alle eisen!</p>
<p></font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold"></p>
<p align="left">De postcode</p>
<p></font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Een iets ingewikkeldere expressie is die voor een postcode, deze zal er als volgt uitzien.</p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">^[0-9]{4}( )?[A-Za-z]{2}$</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Deze expressie ziet er al aardig ingewikkeld uit. Maar als we hem ontleden valt het wel mee. De string moet beginnen met vier cijfers. Daarop mag één spatie volgen, maar dat hoeft niet (sommige mensen schrijven postcodes met spatie, andere zonder). Vervolgens dienen er nog twee kleine of grote letters te volgen. Al met al matched deze expressie strings als <em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">9999AA</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">9999 AA </font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic">1111bb</font></font></em><font size="3" face="Verdana"><font size="3" face="Verdana">, allemaal geldige postcodes!</font></font></p>
<p></font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold"></p>
<p align="left">Het e-mail adres</p>
<p></font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Nu gaan we voor een ingewikkelde expressie: Die van een e-mail adres. We moeten eerst weten waar een e-mail adres precies uit bestaat.  Een e-mail adres bestaat in ieder geval uit een apenstaartje, gevolgd door een domeinnaam, en een top-level domeinnaam. Top-level domeinnamen bestaan uit twee tot vier tekens (enkele uitzonderingen daar gelaten), en enkel uit letters. Domeinnamen mogen bestaan uit letters, cijfers en een streepje. E-mail adressen mogen dan ook weer onder subdomeinen vallen, waardoor het domeinnaam als het ware ook punten mag bevatten. Maar de domeinnaam mag niet eindigen of beginnen met een punt. De gebruikersnaam van de e-mail is simpel: Deze mag bestaan uit letters, cijfers, punten, underscores en streepjes.</p>
<p align="left">Dit voegen we allemaal samen, en dan krijgen we dit:</p>
<p></font></font><font size="3" face="Courier" color="#ff0000"><font size="3" face="Courier" color="#ff0000"><font size="3" face="Courier" color="#ff0000">([A-Za-z0-9._-]+)</font></font></font><font size="3" face="Courier"><font size="3" face="Courier">@</font></font><font size="3" face="Courier" color="#0000ff"><font size="3" face="Courier" color="#0000ff"><font size="3" face="Courier" color="#0000ff">([A-Za-z0-9-]+)([A-Za-z0-9.-]*[A-Za-z0-9-</font></font></font><font size="3" face="Courier" color="#0000ff"><font size="3" face="Courier" color="#0000ff"><font size="3" face="Courier" color="#0000ff"></p>
<p align="left">]+)*<font size="3" face="Courier"><font size="3" face="Courier">\.</font></font><font size="3" face="Courier" color="#008000"><font size="3" face="Courier" color="#008000"><font size="3" face="Courier" color="#008000">([A-Za-z){1,4}</font></font></font></p>
<p></font></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Een flinke reguliere expressie zoals je kunt zien. Voor de duidelijkheid heb ik de</p>
<p></font></font><font size="3" face="Verdana" color="#ff0000"><font size="3" face="Verdana" color="#ff0000"><font size="3" face="Verdana" color="#ff0000"></p>
<p align="left">gebruikersnaam<font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><font size="3" face="Verdana" color="#0000ff"><font size="3" face="Verdana" color="#0000ff"><font size="3" face="Verdana" color="#0000ff">domeinnaam </font></font></font><font size="3" face="Verdana"><font size="3" face="Verdana">en het </font></font><font size="3" face="Verdana" color="#008000"><font size="3" face="Verdana" color="#008000"><font size="3" face="Verdana" color="#008000">top-level domeinnaam </font></font></font><font size="3" face="Verdana"><font size="3" face="Verdana">even gekleurd.</font></font></p>
<p></font></font></font><strong><font size="4" face="Verdana,Bold"><font size="4" face="Verdana,Bold"></p>
<p align="left">Data manipuleren</p>
<p></font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Tot nu toe hebben we het enkel gehad over het valideren van data. Maar reguliere expressies bieden nog meer functionaliteiten: Namelijk het manipuleren van data. Dat wordt bijvoorbeeld gebruikt bij <strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">UBB codes</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">, en bij het </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">rewriten van urls</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">. Om de werking van reguliere expressies bij het manipuleren van data duidelijk te maken, gebruiken we het volgende stukje code.</font></font></p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">&lt;?php</p>
<p align="left">$data = &#8220;Hallo wereld&#8221;;</p>
<p align="left">print preg_replace(&#8221;/Hallo/i&#8221;,”Hoi”,$match);</p>
<p align="left">?&gt;</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana">Zoals je kunt zien, lijkt dit stukje code redelijk veel op het stukje code dat we gebruikten om data te valideren. Om data binnen PHP te manipuleren met reguliere expressies hebben we vele functies tot onze beschikking, dit zijn: </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">ereg(i)_replace</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">preg_replace</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">, </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">preg_replace_callback </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">en </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">preg_filter</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">.</font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Dit zijn er redelijk wat. We gaan ons voorlopig enkel bezighouden met de preg_replace functie. Hoe werkt deze functie nu: Eigenlijk is het heel simpel, alles wat voldoet aan de expressie wordt vervangen. Dit wordt aangevuld met de mogelijkheid een deel van de expressie ‘terug te zetten’ in de vervanging. De syntax van preg_replace is als volgt:</p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">preg_replace(string $expression, string $replacement, string $string);</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Dit spreekt eigenlijk wel voor zich. De functie geeft het resultaat van de vervanging terug. Zoals ik al eerder zei, kun je ook delen uit de expressie terug zetten in de vervanging, dit werkt als volgt, stel we hebben de expressie van de postcode.</p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">&lt;?php</p>
<p align="left">$postcode = &#8220;9999AA&#8221;;</p>
<p align="left">print preg_replace(&#8221;^([0-9]){4}( )?([A-Za-z]){2}$&#8221;,&#8221;De postcode</p>
<p align="left">bestaat uit de cijfers \\1, gevolgd door de letters \\3.&#8221;,$postcode);</p>
<p align="left">?&gt;</p>
<p align="left">Uitvoer script:</p>
<p align="left">De postcode bestaat uit de cijfers 9999, gevolgd voor de letters AA.</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Handig! Zoals je ziet, worden de \\1 en \\3 vervangen voor tekens die zijn gematched. Alle haken in de reguliere expressie stellen een getal voor in de vervanging. In dit geval bevat \\1 dus de cijfers van de postcode, \\2 de mogelijke spatie, en \\3 de letters van de postcode.</p>
<p></font></font><strong><font size="4" face="Verdana,Bold"><font size="4" face="Verdana,Bold"></p>
<p align="left">Reguliere expressies binnen de mod_rewrite module van</p>
<p align="left">Apache</p>
<p></font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">Nu we weten hoe reguliere expressies werken, kunnen we ze gaan toepassen. Een van de veel gebruikte toepassingen is in de </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">mod_rewrite </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">module van Apache. Het is niet voor niet één van de meest genoemde voordelen van Apache ten opzichte van IIS van Microsoft. </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">Mod_rewrite </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">is een zeer handige module,</font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">die met het oog op SEO steeds belangrijker wordt op het internet.</p>
<p></font></font><em><font size="3" face="Verdana,Italic"><font size="3" face="Verdana,Italic"></p>
<p align="left">Opmerking: Om de rewrite module van Apache te gebruiken, moet deze natuurlijk wel aanstaan. Meestal staat deze module standaard aan. <font size="3" face="Verdana"><font size="3" face="Verdana">We beginnen aan de hand van een voorbeeld. Het .htaccess bestand van het voorbeeld ziet er zo uit:</font></font></p>
<p></font></font></em><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">RewriteEngine On</p>
<p align="left">RewriteRule ^gebruikers/([A-Za-z0-9_-]+).html$ profiel.php?p=$1</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Dit kleine scriptje, wat niet veel voorstelt, functioneert al. De bovenste regel zorgt ervoor dat de rewrite module wordt gebruikt. Daarna kunnen we met het echte werk beginnen. Wat doet deze regel nu? De volgende link:</p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">http://www.domein.nl/gebruikers/Stefan.html</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Zal worden omgezet naar deze link:</p>
<p></font></font><font size="3" face="Courier"><font size="3" face="Courier"></p>
<p align="left">http://www.domein.nl/profiel.php?p=Stefan</p>
<p></font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Niet zo ingewikkeld dus. Je ziet dat Apache er een iets andere manier van vervangen op nahoud als <strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">preg_replace </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">van PHP. Waar </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">preg_replace </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">met </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">\\1 </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">werkt, werkt Apache met </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">$1</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">. Dit is niet z’n erg groot verschil. De rewrite module van Apache kent netzoals PHP ook </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">modifiers</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">, maar daar ga ik in deze tutorial niet meer op in. Later in de tutorial ga ik nog wel in op </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">modifiers </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">die PHP kent..</font></font></p>
<p></font></font><strong><font face="Verdana,Bold"></p>
<p align="left">Andere mogelijkheden van de rewrite module</p>
<p></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Er zijn nog meer mogelijkheden dan enkel de <strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">RewriteRule </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">opdracht. Hieronder enkele mogelijkheden:</font></font></p>
<p></font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold"></p>
<p align="left">RewriteBase <font size="3" face="Verdana"><font size="3" face="Verdana">Met deze command kun je alle Rewrites naar een bepaalde map sturen. Mochten alle bestand dus ergens anders staan dan de URL’s doen vermoeden, kun je RewriteBase gebruiken om ze gemakkelijk door te sturen. </font></font></p>
<p></font></font></strong></p>
<p align="left"><font size="3" face="Verdana"><font size="3" face="Verdana">Voorbeeld: </font></font><font size="3" face="Courier"><font size="3" face="Courier">RewriteBase /html</font></font></p>
<p><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">RewriteCond </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">Met deze optie heb je de mogelijkheid voorwaarden te stellen aan een RewriteRule. </font></font><strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">RewriteOptions </font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">Hiermee kun je enkele instellingen veranderen, zoals het maximale aantal rewrites die een URL kan doorgaan. Dit zou enkel nodig zijn wanneer je meer als 10 rewrites nodig hebt.</font></font><font size="3" face="Verdana"><font size="3" face="Verdana"></p>
<p align="left">Wil je nu meer weten over <strong><font size="3" face="Verdana,Bold"><font size="3" face="Verdana,Bold">mod_rewrite</font></font></strong><font size="3" face="Verdana"><font size="3" face="Verdana">, kijk dan even op de website van Apache:</font></font></p>
<p></font></font><font size="3" face="Verdana" color="#0000ff"><font size="3" face="Verdana" color="#0000ff"><font size="3" face="Verdana" color="#0000ff"></p>
<p align="left">http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html <font size="3" face="Verdana"><font size="3" face="Verdana">(Engels)</font></font><font size="3" face="Verdana"></font></p>
<p></font></font></font></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mainserverpvb.com/2009/08/18/uitleg-werking-regular-expressions-php/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
 
