<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://mediawiki.a-eskwadraat.nl/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://mediawiki.a-eskwadraat.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jitse</id>
		<title>A-Eskwiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://mediawiki.a-eskwadraat.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jitse"/>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Special:Contributions/Jitse"/>
		<updated>2026-08-10T10:14:53Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.2</generator>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/HTTPD</id>
		<title>HTTPD</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/HTTPD"/>
				<updated>2017-06-07T10:56:50Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tijdelijke documentatie: Hoe koppel je HTTPD aan IPA.&lt;br /&gt;
&lt;br /&gt;
Voer de volgende vier commando's uit om een keytab te verkrijgen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kinit admin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipa service-add HTTP/&amp;lt;hostname&amp;gt;.a-eskwadraat.nl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipa-getkeytab -s ipa01.a-eskwadraat.nl -p HTTP/&amp;lt;hostname&amp;gt;.a-eskwadraat.nl -k /etc/httpd/conf/http.keytab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache /etc/httpd/conf/http.keytab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voeg dit toe aan de apache config.&lt;br /&gt;
&amp;lt;pre&amp;gt;    &lt;br /&gt;
  AuthType Kerberos&lt;br /&gt;
  AuthName &amp;quot;Kerberos Login&amp;quot;&lt;br /&gt;
  KrbMethodNegotiate on&lt;br /&gt;
  KrbMethodK5Passwd on&lt;br /&gt;
  KrbServiceName HTTP&lt;br /&gt;
  KrbAuthRealms A-ESKWADRAAT.NL&lt;br /&gt;
  Krb5KeyTab /etc/httpd/conf/http.keytab&lt;br /&gt;
  KrbSaveCredentials off&lt;br /&gt;
  Require valid-user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Afbeeldingen</id>
		<title>Afbeeldingen</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Afbeeldingen"/>
				<updated>2016-12-01T10:42:34Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vakidioot]]&lt;br /&gt;
Iedereen houdt van plaatjes! Zorg er wel voor dat ze groot genoeg zijn. &amp;lt;s&amp;gt;Check ze met [http://www.isditplaatjegoedgenoeg.nl/ isditplaatjegoedgenoeg.nl] en&amp;lt;/s&amp;gt; gebruik je gezonde verstand.&lt;br /&gt;
&lt;br /&gt;
==Afbeeldingen invoegen==&lt;br /&gt;
Mocht je plaatjes in een artikel wilt gooien, dan doe je iets als dit:&lt;br /&gt;
&lt;br /&gt;
 \includegraphics{''&amp;lt;bestandsnaam zonder extensie&amp;gt;''}&lt;br /&gt;
&lt;br /&gt;
{{opmerking|Wanneer je de extensie bij de bestandsnaam vermeldt, gaat het mis op het moment dat de eindredacteur de complete Vakidioot in elkaar zet. In de regel worden eindredacteuren niet vrolijk van foutmeldingen. Laat extensies dus altijd achterwege wanneer je met de Vakidioot-class werkt!}}&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Ssh-extern</id>
		<title>Ssh-extern</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Ssh-extern"/>
				<updated>2016-04-18T21:41:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ssh-extern}}&lt;br /&gt;
[[category:sysop]]&lt;br /&gt;
Op dit moment is paul de host waarop van buitenaf ingelogd wordt. Paul is verder niet in gebruik als workstation maar is een dedicated ssh-server.&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/A-Eskwadraat_Systeem</id>
		<title>A-Eskwadraat Systeem</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/A-Eskwadraat_Systeem"/>
				<updated>2016-04-18T21:38:57Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Het A-Eskwadraat systeem bestaat uit verschillende onderdelen. In de [[Media:OverzichtSysteem.png|figuur]] hiernaast is een overzicht te zien.&amp;lt;br/&amp;gt;[[File:OverzichtSysteem.png|border|right|super|500px|Overzicht A-Eskwadraat systeem]]&lt;br /&gt;
&lt;br /&gt;
== Workstations ==&lt;br /&gt;
&lt;br /&gt;
Op dit moment hebben we 4 [[Workstations|workstations]]&amp;amp;nbsp;in de werkkamer, [[Pafnuty|Pafnuty]] (4 seats), [[Dennis|Dennis]] (4 seats), [[Hendrik|Hendrik]] (4 seats) en [[Paul|Paul]] (1 seat). Een aantal zijn [[Multiseat|multiseats]], oftewel je hebt meerdere werkplekken op 1 computer. Ze draaien allen CentOS 7.&lt;br /&gt;
&lt;br /&gt;
Verder hebben we ook nog de workstation in de kamer en de workstation in het boekenhok. Ook deze draaien CentOS 7. De computer in het boekenhok is verder niet aangesloten op het netwerk en is in ware een stand-alone.&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
De server die we draaien heet [[Haskell|Haskell]]. Het Operating System dat er op draait is Proxmox. Alle computers zijn aangesloten op Haskell. In Haskell bevindt zich alle storage en alle Virtual Machines. Een [https://en.wikipedia.org/wiki/Virtual_machine virtual machine] is een operating system die wordt gedraaid op virtuele hardware. Op elke virtual machine worden verschillende services gedraaid. Dit wordt gedaan, zodat niet het hele systeem eruit ligt als 1 service crasht. In dat geval crasht alleen de virtual machine.&lt;br /&gt;
&lt;br /&gt;
Nog bijzonder, elke avond komt er een [[Backup|backup]]&amp;amp;nbsp;van het A-Eskwadraat systeem&amp;amp;nbsp;bij de universiteit terecht. Namelijk bij &amp;lt;span style=&amp;quot;line-height: 20.8px;&amp;quot;&amp;gt;claude.science.uu.nl&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Firewall &amp;amp; Router ==&lt;br /&gt;
&lt;br /&gt;
De [[Firewall|firewall]] &amp;amp; [[Router|router]] functie ligt bij ernst. Dit is een losse computer, die niks anders doet. In wezen staat [[Ernst|Ernst]] tussen de grote boze buitenwereld en de werkkamer van A-Eskwadraat.&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Accounts</id>
		<title>Accounts</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Accounts"/>
				<updated>2016-04-18T21:34:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: /* Accounts aanmaken */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sysop]]&lt;br /&gt;
Hier worden het accountbeleid en -management van [[Sysop]] bij A–Eskwadraat beschreven.&lt;br /&gt;
&lt;br /&gt;
== Algemeen ==&lt;br /&gt;
=== Groepen ===&lt;br /&gt;
&lt;br /&gt;
Accounts zijn verdeeld in een aantal groepen (groups):&lt;br /&gt;
&lt;br /&gt;
* '''''iba''''': [[IBA]]-commissies die extra computerrechten hebben: [[sysop]], [[WWW|www]] en [[hektex]].&lt;br /&gt;
* '''''gods''''': mensjes met extra rechten (omdat ze in iba zitten/gezeten hebben).&lt;br /&gt;
* '''''bestuur''''': bestuurs(functie)accounts.&lt;br /&gt;
* '''''cies''''': commissies.&lt;br /&gt;
* '''''mortals''''': gewone gebruikers.&lt;br /&gt;
* '''''extern''''':	externe organisaties, verenigingen, groepen, enz. Ook voor bijzondere accounts zoals webcie-test-account.&lt;br /&gt;
&lt;br /&gt;
Alle andere groepen zijn systeemgroepen.&lt;br /&gt;
&lt;br /&gt;
De homedirectories zijn ingedeeld per categorie. Elke categorie bestrijkt een of meer groepen:&lt;br /&gt;
* '''''/home/bestuur''''': ''bestuur''.&lt;br /&gt;
* '''''/home/cies''''': ''cies''.&lt;br /&gt;
* '''''/home/extern''''': ''extern''.&lt;br /&gt;
* '''''/home/mensjes''''': ''gods'' en ''mortals''.&lt;br /&gt;
* '''''/home/system''''': alle systeemgroepen.&lt;br /&gt;
&lt;br /&gt;
Groeplidmaatschappen kunnen worden beheerd in de [[IPA]] webinterface. Gebruik dit echter niet voor commissieleden, hiervoor is ''[[cieleden]]''.&lt;br /&gt;
&lt;br /&gt;
=== Gebruikersbeheer ===&lt;br /&gt;
&lt;br /&gt;
Gebruikersinformatie wordt beheerd in de [[IPA]] webinterface.&lt;br /&gt;
&lt;br /&gt;
== Quota ==&lt;br /&gt;
'''Verouderd, moet nog aangepast worden!'''&lt;br /&gt;
&lt;br /&gt;
''Hoofdartikel: [[Quota]]''&lt;br /&gt;
&lt;br /&gt;
Quota worden automatisch aangemaakt met behulp van ''[[quotaset]]''. Zie dat script, en de configuratiefile ''/etc/local/quotas'' voor meer info; daar dienen quota aangepast te worden (en niet op de gebruikelijke Linux-manier). Tweemaal per dag wordt ''quotamail'' gedraaid, die mensen waarschuwt als ze over hun quotum zitten. Met ''ac'' kan de graceperiode gereset worden.&lt;br /&gt;
&lt;br /&gt;
== Accounts aanmaken ==&lt;br /&gt;
Het aanmaken van accounts gebeurt door Sysop of bestuur. Actieve leden kunnen altijd een account krijgen; commissies krijgen vanzelfsprekend een account. Niet-actieve leden en niet-leden krijgen in principe geen account, omdat de werkplekken bedoeld zijn voor A&amp;amp;ndash;Eskwadraatwerk en er dingen openbaar op het systeem staan die alleen bedoeld zijn voor leden.&lt;br /&gt;
&lt;br /&gt;
Persoonlijke accounts worden aangemaakt met ''mensjeadd''. Hiermee wordt automatisch de naam, lidnummer en e-mailforward ingesteld; de user krijgt een tijdelijk wachtwoord. Dit wachtwoord kan worden aangepast door in te loggen op een workstation of met ssh. Accounts voor cies en externen worden aangemaakt met ''cieadd''.&lt;br /&gt;
&lt;br /&gt;
=== Naamgeving ===&lt;br /&gt;
Let op dat cies op de website en het systeem dezelfde naam hebben!&lt;br /&gt;
; Mensjes:&lt;br /&gt;
: De voornaam van de persoon achter elkaar in kleine letters. Indien deze al bestaat, voeg dan letters van het begin van de achternaam tot er een uniek login ontstaat. In principe wordt er niet van deze standaard afgeweken. Lijkt dit nodig, overleg dan eerst met de rest van [[Sysop]].&lt;br /&gt;
; Doorlopende commissies:&lt;br /&gt;
: De naam van de commissie achter elkaar in kleine letters.&lt;br /&gt;
; Jaarlijkse commissies&lt;br /&gt;
: De naam van de commissie, gevolgd door een van:&lt;br /&gt;
:* het collegejaar waarin de commissie actief is (onder andere voor adviesraad, ec, gala, kb, studiereis, toneel, wintersport);&lt;br /&gt;
:* het kalenderjaar waarin de commissie actief is (onder andere voor alma, intro, masterintro en grotere, losse commissies zoals limo en pion).&lt;br /&gt;
&lt;br /&gt;
== Enablen/disablen ==&lt;br /&gt;
''Zie ook: [[Archiveren#Commissieaccounts_archiveren|Archiveren]]''&lt;br /&gt;
&lt;br /&gt;
Het enablen en disablen van accounts gebeurt via ''[[ac]]''. Bij disablen wordt de login shell veranderd in ''bash-disabled'' en wordt het wachtwoord van het account verwijderd. Bij enablen wordt de shell weer op ''bash'' gezet, maar er wordt niet automatisch een nieuw wachtwoord ingesteld. Het is niet mogelijk om bijvoorbeeld ''su'', [[VPN]] of imap te gebruiken op een account zonder wachtwoord.&lt;br /&gt;
&lt;br /&gt;
Bestuur- en cieaccounts dienen als ze definitef worden opgeruimd niet te worden gedisabled, maar te worden gearchiveerd en verwijderd. Het beleid voor het archiveren van deze accounts is als volgt:&lt;br /&gt;
* Accounts van grote commissies (alma, intro, reis en grotere eenmalige activiteiten) worden na '''drie jaar''' gearchiveerd en verwijderd.&lt;br /&gt;
* Accounts van overige commissies worden na '''twee jaar''' gearchiveerd en verwijderd.&lt;br /&gt;
&lt;br /&gt;
Net als enablen en disablen kan dit in een keer met ''ac''. Gearchiveerde bestanden komen in ''/archief'' terecht. Wanneer een account wordt verwijderd wordt er ook automatisch een mailtje naar Sysop, het bestuur en de desbetreffende account gestuurd. Merk op dat hierna e-mailforwards naar het account niet meer werken. Wordt er om welke reden dan ook een bestuur- of cieaccount gedisabled maar niet verwijderd, dient het bestuur hiervan op de hoogte gesteld te worden.&lt;br /&gt;
&lt;br /&gt;
'''Let op!''' De normale manier waarop Debian een account disablet is door een uitroepteken ''!'' voor het wachtwoord te zetten. Dit is echter niet compatibel met [[LDAP]], gezien dat daar geïnterpreteerd wordt als een cleartext wachtwoord. Daarom verwijderen wij wachtwoorden als een account gedisabled wordt.&lt;br /&gt;
&lt;br /&gt;
== Expiry ==&lt;br /&gt;
'''Let op: verouderd. Account expiry is nog niet gebouwd, wachtwoorden in IPA expiren vanzelf (zie [[wachtwoord]])'''&lt;br /&gt;
&lt;br /&gt;
Er expiren twee dingen onafhankelijk van elkaar: accounts en wachtwoorden. Beide worden dagelijks geregeld door ''[[ac-expire]]''.&lt;br /&gt;
&lt;br /&gt;
=== Account expiry ===&lt;br /&gt;
We gebruiken '''niet''' de shadow manier van expiren, want die werkt niet erg flexibel, en fouten zijn veel te makkelijk gemaakt. Bovendien is het nogal onzin om als je dagelijks een account gebruikt elk jaar te moeten aangeven dat je hem gebruikt.&lt;br /&gt;
&lt;br /&gt;
Alle accounts van ''mortals'' en ''gods'' worden doorlopen. Commissies verlopen niet (maar wachtwoorden van commissieaccounts wel, zie verderop).&lt;br /&gt;
&lt;br /&gt;
Als iemand te lang niet heeft ingelogd wordt het account gedisabled. Dit wordt bepaald aan de hand van een aantal velden in LDAP.  Er zijn attributen voor ''lastPasswordLogin'', ''lastMailLogin'' en ''lastKeyLogin''. Op dit moment (aug '12) wordt alleen de eerste geüpdated. PAM doet dit (''/etc/pam.d'' op de [[workstations]] en op [[square]]).&lt;br /&gt;
&lt;br /&gt;
Let op dat commissieaccounts nog wel handmatig opgeruimd moeten worden (met behulp van ''ciedel'' vanuit ''ac'').&lt;br /&gt;
&lt;br /&gt;
=== Password expiry ===&lt;br /&gt;
Password dienen na een poosje te verlopen. In het LDAP-veld ''shadowLastChange'' staat altijd wanneer een wachtwoord voor het laatst gewijzigd is. Dit wachtwoord is geldig tot ''shadowLastChange''+''shadowMax''. Daarna wordt het wachtwoord verwijderd. Gebruikers krijgen waarschuwingsmails wanneer dit moment in de buurt komt.&lt;br /&gt;
&lt;br /&gt;
Na zelf het wachtwoord te wijzigen mag het wachtwoord ''shadowMin'' dagen niet opnieuw veranderd worden, om terugveranderen te voorkomen. Wanneer wij het wachtwoord resetten wordt ''shadowMin'' ingesteld op 0, want dan willen we juist dat het veranderd wordt.&lt;br /&gt;
&lt;br /&gt;
''shadowMax'', ''shadowMin'' en ''shadowExpire'' zijn attributen per gebruiker. Ze worden door ''ac-expire'' uniform gehouden. De gewenste waarden staan in ''/etc/local/ac-vars''.&lt;br /&gt;
&lt;br /&gt;
UID's die laag zijn mogen nooit last krijgen van verlopen wachtwoorden.&lt;br /&gt;
&lt;br /&gt;
== Printjes ==&lt;br /&gt;
Printjes worden bijgehouden vanuit de [[Cups]] logfiles op de ''vm-cups''. De aantallen worden maandelijks via een cronjob naar het bestuur gemaild voor facturering. De aantallen (voor simplex/duplex) zijn echter niet geheel betrouwbaar.&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T21:31:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op https://iba.a-eskwadraat.nl. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. In het bijzonder zijn alle 'ik ben mijn wachtwoord vergeten'-links weggehaald omdat WordPress geen idee heeft van wachtwoorden, authenticatie verloopt namelijk via een combinatie van &amp;lt;tt&amp;gt;intercept_form_submit&amp;lt;/tt&amp;gt; ([[IPA]]) en de HTTP Authentication-plugin. Configuratie van &amp;lt;tt&amp;gt;intercept_form_submit&amp;lt;/tt&amp;gt; is te vinden in &amp;lt;tt&amp;gt;/etc/httpd/conf.d/sites-available/ibaweblog&amp;lt;/tt&amp;gt; op www-dmz.&lt;br /&gt;
&lt;br /&gt;
== Diff ==&lt;br /&gt;
&lt;br /&gt;
Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T21:30:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: /* Diff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op https://iba.a-eskwadraat.nl. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. In het bijzonder zijn alle 'ik ben mijn wachtwoord vergeten'-links weggehaald omdat WordPress geen idee heeft van wachtwoorden, authenticatie verloopt via &amp;lt;tt&amp;gt;intercept_form_submit&amp;lt;/tt&amp;gt; ([[IPA]]). Configuratie van &amp;lt;tt&amp;gt;intercept_form_submit&amp;lt;/tt&amp;gt; is te vinden in &amp;lt;tt&amp;gt;/etc/httpd/conf.d/sites-available/ibaweblog&amp;lt;/tt&amp;gt; op www-dmz.&lt;br /&gt;
&lt;br /&gt;
== Diff ==&lt;br /&gt;
&lt;br /&gt;
Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T21:30:20Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op https://iba.a-eskwadraat.nl. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. In het bijzonder zijn alle 'ik ben mijn wachtwoord vergeten'-links weggehaald omdat WordPress geen idee heeft van wachtwoorden, authenticatie verloopt via &amp;lt;tt&amp;gt;intercept_form_submit&amp;lt;/tt&amp;gt; ([[IPA]]). Configuratie van &amp;lt;tt&amp;gt;intercept_form_submit&amp;lt;/tt&amp;gt; is te vinden in &amp;lt;tt&amp;gt;/etc/httpd/conf.d/sites-available/ibaweblog&amp;lt;/tt&amp;gt; op www-dmz.&lt;br /&gt;
&lt;br /&gt;
== Diff ==&lt;br /&gt;
&lt;br /&gt;
Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T21:27:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op https://iba.a-eskwadraat.nl. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. In het bijzonder zijn alle 'ik ben mijn wachtwoord vergeten'-links weggehaald omdat WordPress geen idee heeft van wachtwoorden, authenticatie verloopt via intercept_form_submit ([[IPA]]). Configuratie van intercept_form_submit is te vinden in /etc/httpd/conf.d/sites-available/ibaweblog op vm-www-dmz.&lt;br /&gt;
&lt;br /&gt;
== Diff ==&lt;br /&gt;
&lt;br /&gt;
Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T21:03:07Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;Deze template kan gebruikt worden voor hele belangrijke informatie.&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;table class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot;&amp;gt;[[File:Dialog-warning.png|32px]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;center&amp;quot;&amp;gt;'''{{{1}}}'''&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T21:02:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: Undo revision 1162 by Jitse (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;Deze template kan gebruikt worden voor hele belangrijke informatie.&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;table class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot;&amp;gt;[[File:Dialog-warning.png|32px]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td valign=&amp;quot;center&amp;quot;&amp;gt;{{{1}}}&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T21:01:59Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: Undo revision 1163 by Jitse (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deze template kan gebruikt worden voor hele belangrijke informatie.&lt;br /&gt;
{| class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot; | [[File:Dialog-warning.png|32px|Dialog-warning.png]]&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; | {{{'''1'''}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T21:01:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: Undo revision 1164 by Jitse (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deze template kan gebruikt worden voor hele belangrijke informatie.fckLR&lt;br /&gt;
{| class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot; | [[File:Dialog-warning.png|32px|Dialog-warning.png]]&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; | {{{1}}}&lt;br /&gt;
|}&lt;br /&gt;
fckLR&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T21:01:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: Undo revision 1165 by Jitse (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deze template kan gebruikt worden voor hele belangrijke informatie.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot; | [[File:Dialog-warning.png|32px|Dialog-warning.png]]&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; | {{{'''1'''}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T20:57:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;Deze template kan gebruikt worden voor hele belangrijke informatie.&amp;lt;/noinclude&amp;gt; &amp;lt;includeonly&amp;gt;&lt;br /&gt;
{| class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px; font-weight: bold;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot; | &amp;amp;#x5B;&amp;amp;#x5B;File:Dialog-warning.png&amp;amp;#124;32px&amp;amp;#x5D;&amp;amp;#x5D;&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; | &amp;amp;#x7B;&amp;amp;#x7B;&amp;amp;#x7B;1&amp;amp;#x7D;&amp;amp;#x7D;&amp;amp;#x7D;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T20:54:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: Undo revision 1163 by Jitse (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deze template kan gebruikt worden voor hele belangrijke informatie.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot; | [[File:Dialog-warning.png|32px|Dialog-warning.png]]&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; | {{{'''1'''}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T20:53:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: Undo revision 1162 by Jitse (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deze template kan gebruikt worden voor hele belangrijke informatie.fckLR&lt;br /&gt;
{| class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot; | [[File:Dialog-warning.png|32px|Dialog-warning.png]]&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; | {{{1}}}&lt;br /&gt;
|}&lt;br /&gt;
fckLR&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing</id>
		<title>Template:Waarschuwing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Template:Waarschuwing"/>
				<updated>2016-04-18T20:52:32Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deze template kan gebruikt worden voor hele belangrijke informatie.&lt;br /&gt;
{| class=&amp;quot;waarschuwing&amp;quot; style=&amp;quot;border: 1px solid #AAA; width: 80%; margin: 5px auto; background: #FDD; padding: 5px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; width=&amp;quot;40px&amp;quot; | [[File:Dialog-warning.png|32px|Dialog-warning.png]]&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; | {{{'''1'''}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T20:49:36Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op [https://iba.a-eskwadraat.nl [1]]. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken.&lt;br /&gt;
&lt;br /&gt;
== Diff ==&lt;br /&gt;
&lt;br /&gt;
Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T20:49:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op [https://iba.a-eskwadraat.nl [1]]. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. &lt;br /&gt;
&lt;br /&gt;
==Diff==&lt;br /&gt;
Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T20:47:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op [https://iba.a-eskwadraat.nl [1]]. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T20:47:42Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: Undo revision 1157 by Jitse (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op [https://iba.a-eskwadraat.nl [1]]. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-04-18T20:47:09Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op [https://iba.a-eskwadraat.nl [1]]. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &lt;br /&gt;
                    &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Sudo</id>
		<title>Sudo</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Sudo"/>
				<updated>2016-01-14T15:19:20Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sysop]]&lt;br /&gt;
Voor het toekennen van extra privileges wordt sudo gebruikt. De sudo policies worden in [[IPA]] bijgehouden.&lt;br /&gt;
&lt;br /&gt;
===Fedora 20===&lt;br /&gt;
/etc/nsswitch.conf:&lt;br /&gt;
 sudoers: sss&lt;br /&gt;
&lt;br /&gt;
/etc/sssd/sssd.conf:&lt;br /&gt;
 # configure SUDO and GSSAPI authentication&lt;br /&gt;
 sudo_provider = ldap&lt;br /&gt;
 ldap_sudo_search_base = ou=sudoers,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 ldap_sasl_mech = GSSAPI&lt;br /&gt;
 ldap_sasl_authid = host/$HOSTNAME.a-eskwadraat.nl&lt;br /&gt;
 ldap_sasl_realm = A-ESKWADRAAT.NL&lt;br /&gt;
 krb5_server = _srv_&lt;br /&gt;
 &lt;br /&gt;
 [sssd]&lt;br /&gt;
 services = nss, pam, ssh, sudo&lt;br /&gt;
&lt;br /&gt;
Vul op de plek $HOSTNAME de naam van de machine in.&lt;br /&gt;
&lt;br /&gt;
===RHEL 6.X===&lt;br /&gt;
* Voeg de volgende regel aan &amp;lt;code&amp;gt;/etc/nsswitch.conf&amp;lt;/code&amp;gt; toe:&lt;br /&gt;
 sudoers:  files ldap&lt;br /&gt;
* Vervang &amp;lt;code&amp;gt;/etc/sudo-ldap.conf&amp;lt;/code&amp;gt; met het volgende:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
binddn uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl&lt;br /&gt;
bindpw sudopasswd&lt;br /&gt;
&lt;br /&gt;
ssl start_tls&lt;br /&gt;
tls_cacertfile /etc/ipa/ca.crt&lt;br /&gt;
tls_checkpeer yes&lt;br /&gt;
&lt;br /&gt;
bind_timelimit 5&lt;br /&gt;
timelimit 15&lt;br /&gt;
&lt;br /&gt;
uri ldap://ipa01.a-eskwadraat.nl&lt;br /&gt;
sudoers_base ou=SUDOers,dc=a-eskwadraat,dc=nl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Voeg de volgende regel toe aan &amp;lt;code&amp;gt;/etc/rc.d/rc.local&amp;lt;/code&amp;gt;:&lt;br /&gt;
 nisdomainname a-eskwadraat.nl&lt;br /&gt;
&lt;br /&gt;
====Debugging====&lt;br /&gt;
Mocht de standaardconfiguratie niet helpen, zet dan de volgende debug-opties aan:&lt;br /&gt;
* In &amp;lt;code&amp;gt;/etc/ldap.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
 sudoers_debug: 1&lt;br /&gt;
* Voeg het volgende toe aan &amp;lt;code&amp;gt;/etc/sssd/sssd.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[domain/a-eskwadraat.nl]&lt;br /&gt;
debug_level = 6&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RHEL 7.X ===&lt;br /&gt;
&lt;br /&gt;
Configuratie van EL7-clients gaat volledig automagisch.&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2016-01-14T15:18:36Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden (''zou kunnen dat dit niet meer nodig is''). Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
=== httpd ===&lt;br /&gt;
&lt;br /&gt;
Zie [[HBAC]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2016-01-14T15:17:56Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden*. Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
*Het zou kunnnen dat dit niet meer nodig is. Probeer vooral eerst zonder.&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
=== httpd ===&lt;br /&gt;
&lt;br /&gt;
Zie [[HBAC]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2016-01-14T15:17:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden*. Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
*) Het zou kunnnen dat dit niet meer nodig is. Probeer vooral eerst zonder.&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
=== httpd ===&lt;br /&gt;
&lt;br /&gt;
Zie [[HBAC]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2016-01-14T15:17:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden*. Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
=== *) Het zou kunnnen dat dit niet meer nodig is. Probeer vooral eerst zonder. ===&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
=== httpd ===&lt;br /&gt;
&lt;br /&gt;
Zie [[HBAC]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Cieadd</id>
		<title>Cieadd</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Cieadd"/>
				<updated>2016-01-14T15:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:cieadd}} &lt;br /&gt;
'''cieadd''' is het script waarmee cies/externen worden toegevoegd aan IPA. Het script leeft in &amp;lt;code&amp;gt;/usr/local/bin/cieadd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Usage: cieadd [-k KERBEROS-USER] [-e] [-v] -u USERNAME -d DISPLAYNAME&lt;br /&gt;
 &lt;br /&gt;
 Options:&lt;br /&gt;
 -k        username to supply to kinit&lt;br /&gt;
 -e        cie is extern&lt;br /&gt;
 -v        enable verbose output&lt;br /&gt;
 -u        username of cie&lt;br /&gt;
 -d        displayname of cie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gerelateerd: [[Mensjeadd|mensjeadd]]&lt;br /&gt;
[[Category:Sysop scripts]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Mensjeadd</id>
		<title>Mensjeadd</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Mensjeadd"/>
				<updated>2016-01-14T15:02:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mensjeadd}} &lt;br /&gt;
'''mensjeadd''' is het script waarmee mensjes worden toegevoegd aan IPA. Het script leeft in &amp;lt;code&amp;gt;/usr/local/bin/mensjeadd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Usage: mensjeadd [-k KERBEROS-USER] [-v] -u USERNAME&lt;br /&gt;
 &lt;br /&gt;
 Options:&lt;br /&gt;
 -k        username to supply to kinit&lt;br /&gt;
 -v        enable verbose output&lt;br /&gt;
 -u        username of mensje&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gerelateerd: [[Cieadd|cieadd]]&lt;br /&gt;
[[Category:Sysop scripts]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Mensjeadd</id>
		<title>Mensjeadd</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Mensjeadd"/>
				<updated>2016-01-14T15:01:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: Created page with &amp;quot;{{DISPLAYTITLE:mensjeadd}}  '''mensjeadd''' is het script waarmee mensjes worden toegevoegd aan IPA. Het script leeft in &amp;lt;code&amp;gt;/usr/local/bin/mensjeadd&amp;lt;/code&amp;gt;.   Usage: mensje...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:mensjeadd}} &lt;br /&gt;
'''mensjeadd''' is het script waarmee mensjes worden toegevoegd aan IPA. Het script leeft in &amp;lt;code&amp;gt;/usr/local/bin/mensjeadd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Usage: mensjeadd [-k KERBEROS-USER] [-v] -u USERNAME&lt;br /&gt;
 &lt;br /&gt;
 Options:&lt;br /&gt;
  -k        username to supply to kinit&lt;br /&gt;
  -v        enable verbose output&lt;br /&gt;
  -u        username of mensje&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gerelateerd: [[Cieadd|cieadd]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Cieadd</id>
		<title>Cieadd</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Cieadd"/>
				<updated>2016-01-14T14:59:23Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:cieadd}} &lt;br /&gt;
'''cieadd''' is het script waarmee cies/externen worden toegevoegd aan IPA. Het script leeft in &amp;lt;code&amp;gt;/usr/local/bin/cieadd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Usage: cieadd [-k KERBEROS-USER] [-e] [-v] -u USERNAME -d DISPLAYNAME&lt;br /&gt;
 &lt;br /&gt;
 Options:&lt;br /&gt;
 -k        username to supply to kinit&lt;br /&gt;
 -e        cie is extern&lt;br /&gt;
 -v        enable verbose output&lt;br /&gt;
 -u        username of cie&lt;br /&gt;
 -d        displayname of cie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gerelateerd: [[Mensjeadd|mensjeadd]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Cieadd</id>
		<title>Cieadd</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Cieadd"/>
				<updated>2016-01-14T14:59:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:cieadd}} '''cieadd''' is het script waarmee cies/externen worden toegevoegd aan IPA. Het script leeft in &amp;lt;code&amp;gt;/usr/local/bin/cieadd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 Usage: cieadd [-k KERBEROS-USER] [-e] [-v] -u USERNAME -d DISPLAYNAME&lt;br /&gt;
 &lt;br /&gt;
 Options:&lt;br /&gt;
 -k        username to supply to kinit&lt;br /&gt;
 -e        cie is extern&lt;br /&gt;
 -v        enable verbose output&lt;br /&gt;
 -u        username of cie&lt;br /&gt;
 -d        displayname of cie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gerelateerd: [[Mensjeadd|mensjeadd]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Ac</id>
		<title>Ac</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Ac"/>
				<updated>2016-01-14T14:52:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''''ac''''' was een wrapperscript dat gebruikt wordt voor [[Accounts#Gebruikersbeheer|accountbeheer]] en andere scripts aanroept, waaronder ''[[Cieadd|cieadd]]'' en ''[[Ciedel|ciedel]]''.&lt;br /&gt;
[[Category:Sysop scripts]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Ac</id>
		<title>Ac</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Ac"/>
				<updated>2016-01-14T14:51:54Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ac}} '''''ac''''' was een wrapperscript dat gebruikt wordt voor [[Accounts#Gebruikersbeheer|accountbeheer]] en andere scripts aanroept, waaronder ''[[Cieadd|cieadd]]'' en ''[[Ciedel|ciedel]]''.&lt;br /&gt;
[[Category:Sysop scripts]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-01-08T12:39:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}} &lt;br /&gt;
&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op [https://iba.a-eskwadraat.nl [1]]. De blog draait op WordPress en maakt gebruik van een aantal plugins: onder andere HTTP Authentication en WP QuickLaTeX. Er is een aantal hacks toegepast om alles naar behoren te laten werken. Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins. Let op dat de regelnummers niet meer kloppen, deze diff is vrij oud. Zorg dat je eerst '''alle''' onderstaande wijzigingen doorvoert voordat je de nieuwe code in /srv/http/ibaweblog plempt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-01-08T12:36:39Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Waarschuwing|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}} IBA Verklaart is de weblog die te vinden is op [https://iba.a-eskwadraat.nl [1]]. De blog draait op WordPress en maakt gebruik van een aantal plugins: HTTP Authentication en WP QuickLaTeX. Er is wel een aantal hacks toegepast om alles naar behoren te laten werken. Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart</id>
		<title>IBA Verklaart</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IBA_Verklaart"/>
				<updated>2016-01-08T12:35:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|1=Doe niet zomaar een update van WordPress, er gaan dan dingen stuk!}}&lt;br /&gt;
IBA Verklaart is de weblog die te vinden is op [https://iba.a-eskwadraat.nl [1]]. De blog draait op WordPress en maakt gebruik van een aantal plugins: HTTP Authentication en WP QuickLaTeX. Er is wel een aantal hacks toegepast om alles naar behoren te laten werken. Hieronder de wijzigingen t.o.v. een vanilla WordPress + plugins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- ./wordpress/wp-content/plugins/http-authentication/http-authentication.php	2012-06-25 02:19:07.000000000 +0200&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-content/plugins/http-authentication/http-authentication.php	2015-03-10 21:19:17.932667913 +0100&lt;br /&gt;
@@ -24,8 +24,8 @@ class HTTPAuthenticationPlugin {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		add_action('login_head', array($this, 'add_login_css'));&lt;br /&gt;
-		add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
-		add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
+		// add_action('login_footer', array($this, 'add_login_link'));&lt;br /&gt;
+		// add_action('check_passwords', array($this, 'generate_password'), 10, 3);&lt;br /&gt;
 		add_action('wp_logout', array($this, 'logout'));&lt;br /&gt;
 		add_filter('login_url', array($this, 'bypass_reauth'));&lt;br /&gt;
 		add_filter('show_password_fields', array($this, 'allow_wp_auth'));&lt;br /&gt;
@@ -182,7 +182,8 @@ p#http-authentication-link a {&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (! $username) {&lt;br /&gt;
-			return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			//return new WP_Error('empty_username', '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: No user found in server variables.');&lt;br /&gt;
+			return new WP_Error();&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		// Create new users automatically, if configured&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/pluggable.php	2014-12-01 04:21:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/pluggable.php	2015-03-09 14:39:17.000000000 +0100&lt;br /&gt;
@@ -593,7 +593,7 @@ function wp_logout() {&lt;br /&gt;
 	 *&lt;br /&gt;
 	 * @since 1.5.0&lt;br /&gt;
 	 */&lt;br /&gt;
-	do_action( 'wp_logout' );&lt;br /&gt;
+	// do_action( 'wp_logout' );&lt;br /&gt;
 }&lt;br /&gt;
 endif;&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-includes/user.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-includes/user.php	2015-03-09 15:23:31.000000000 +0100&lt;br /&gt;
@@ -112,6 +112,9 @@ function wp_signon( $credentials = array&lt;br /&gt;
  * @return WP_User|WP_Error WP_User on success, WP_Error on failure.&lt;br /&gt;
  */&lt;br /&gt;
 function wp_authenticate_username_password($user, $username, $password) {&lt;br /&gt;
+	$lostpassword_url = 'mailto:sysop@a-eskwadraat.nl?subject=Wachtwoord%20vergeten&amp;amp;body=Lieve%20sysop,%0D%0Aik%20ben%20een%20domme%20koe';&lt;br /&gt;
+	$lostpassword_url = $lostpassword_url . '%20en%20ik%20ben%20mijn%20wachtwoord%20vergeten.%20Kunnen%20jullie%20mij%20helpen%3F';&lt;br /&gt;
+&lt;br /&gt;
 	if ( is_a( $user, 'WP_User' ) ) {&lt;br /&gt;
 		return $user;&lt;br /&gt;
 	}&lt;br /&gt;
@@ -134,7 +137,7 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 	$user = get_user_by('login', $username);&lt;br /&gt;
 &lt;br /&gt;
 	if ( !$user )&lt;br /&gt;
-		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), wp_lostpassword_url() ) );&lt;br /&gt;
+		return new WP_Error( 'invalid_username', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: Invalid username. &amp;lt;a href=&amp;quot;%s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ), $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	/**&lt;br /&gt;
 	 * Filter whether the given user can be authenticated with the provided $password.&lt;br /&gt;
@@ -150,8 +153,9 @@ function wp_authenticate_username_passwo&lt;br /&gt;
 		return $user;&lt;br /&gt;
 &lt;br /&gt;
 	if ( !wp_check_password($password, $user-&amp;gt;user_pass, $user-&amp;gt;ID) )&lt;br /&gt;
+		$lostpassword_url = $lostpassword_url . '%0D%0A%0D%0ALiefs,%20' . $username;&lt;br /&gt;
 		return new WP_Error( 'incorrect_password', sprintf( __( '&amp;lt;strong&amp;gt;ERROR&amp;lt;/strong&amp;gt;: The password you entered for the username &amp;lt;strong&amp;gt;%1$s&amp;lt;/strong&amp;gt; is incorrect. &amp;lt;a href=&amp;quot;%2$s&amp;quot;&amp;gt;Lost your password&amp;lt;/a&amp;gt;?' ),&lt;br /&gt;
-		$username, wp_lostpassword_url() ) );&lt;br /&gt;
+		$username, $lostpassword_url ) );&lt;br /&gt;
 &lt;br /&gt;
 	return $user;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
--- ./wordpress/wp-login.php	2014-12-16 23:19:22.000000000 +0100&lt;br /&gt;
+++ /srv/http/ibaweblog/wp-login.php	2015-03-09 14:48:07.000000000 +0100&lt;br /&gt;
@@ -416,7 +416,7 @@ if ( isset($_GET['key']) )&lt;br /&gt;
 	$action = 'resetpass';&lt;br /&gt;
 &lt;br /&gt;
 // validate action so as to default to the login screen&lt;br /&gt;
-if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
+if ( !in_array( $action, array( 'postpass', 'logout', 'register', 'login' ), true ) &amp;amp;&amp;amp; false === has_filter( 'login_form_' . $action ) )&lt;br /&gt;
 	$action = 'login';&lt;br /&gt;
 &lt;br /&gt;
 nocache_headers();&lt;br /&gt;
@@ -736,7 +736,6 @@ case 'register' :&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;p id=&amp;quot;nav&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_login_url() ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Log in' ); ?&amp;gt;&amp;lt;/a&amp;gt; |&lt;br /&gt;
-&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ) ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
@@ -913,7 +912,6 @@ default:&lt;br /&gt;
 		echo apply_filters( 'register', $registration_url ) . ' | ';&lt;br /&gt;
 	endif;&lt;br /&gt;
 	?&amp;gt;&lt;br /&gt;
-	&amp;lt;a href=&amp;quot;&amp;lt;?php echo esc_url( wp_lostpassword_url() ); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php esc_attr_e( 'Password Lost and Found' ); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php _e( 'Lost your password?' ); ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2015-11-18T19:23:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden. Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
=== httpd ===&lt;br /&gt;
&lt;br /&gt;
Zie [[HBAC]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2015-11-18T19:23:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden. Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
=== httpd ===&lt;br /&gt;
&lt;br /&gt;
Zie [[HBAC|hbac]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Sharelatex</id>
		<title>Sharelatex</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Sharelatex"/>
				<updated>2015-10-27T12:42:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sysop]]&lt;br /&gt;
&lt;br /&gt;
'''Wordt aan gewerkt'''&lt;br /&gt;
&lt;br /&gt;
Sharelatex is een web-based latex omgeving.&lt;br /&gt;
Mist op dit moment nog ldap support, dus is niet mogelijk om te koppelen aan de rest van het systeem.&lt;br /&gt;
&lt;br /&gt;
= Instalatie =&lt;br /&gt;
Installeer ubuntu 12.04 (server)&lt;br /&gt;
&lt;br /&gt;
== Dependencies[https://github.com/sharelatex/sharelatex/wiki] ==&lt;br /&gt;
=== Base ===&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install git build-essential curl python-software-properties zlib1g-dev zip unzip&lt;br /&gt;
&lt;br /&gt;
=== Node.js ===&lt;br /&gt;
 apt-add-repository ppa:chris-lea/node.js&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install nodejs&lt;br /&gt;
 npm install -g grunt-cli&lt;br /&gt;
&lt;br /&gt;
=== Redis ===&lt;br /&gt;
 apt-add-repository ppa:chris-lea/redis-server&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install redis-server&lt;br /&gt;
&lt;br /&gt;
=== MongoDB ===&lt;br /&gt;
 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10&lt;br /&gt;
 echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install mongodb-org&lt;br /&gt;
&lt;br /&gt;
=== Aspell ===&lt;br /&gt;
 apt-get install aspell aspell-en aspell-nl&lt;br /&gt;
&lt;br /&gt;
=== TexLive ===&lt;br /&gt;
&lt;br /&gt;
 wget [http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz]&lt;br /&gt;
 tar -xvf install-tl-unx.tar.gz&lt;br /&gt;
 cd install-tl-*&lt;br /&gt;
 ./install-tl&lt;br /&gt;
 echo 'export PATH=/usr/local/texlive/2014/bin/x86_64-linux:$PATH' &amp;gt; /etc/profile.d/texlive.sh&lt;br /&gt;
 tlmgr install latexmk&lt;br /&gt;
&lt;br /&gt;
Kan dit niet makkelijker met een nfs-mount van haskell:/srv/texlive?&lt;br /&gt;
&lt;br /&gt;
== Sharelatex ==&lt;br /&gt;
Download de laatste release [https://github.com/sharelatex/sharelatex/releases].&lt;br /&gt;
 dpkg -i sharelatex_VERSION_amd64.deb&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Sharelatex</id>
		<title>Sharelatex</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Sharelatex"/>
				<updated>2015-10-27T12:41:53Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sysop]]&lt;br /&gt;
&lt;br /&gt;
'''Wordt aan gewerkt'''&lt;br /&gt;
&lt;br /&gt;
Sharelatex is een web-based latex omgeving.&lt;br /&gt;
Mist op dit moment nog ldap support, dus is niet mogelijk om te koppelen aan de rest van het systeem.&lt;br /&gt;
&lt;br /&gt;
= Instalatie =&lt;br /&gt;
Installeer ubuntu 12.04 (server)&lt;br /&gt;
&lt;br /&gt;
== Dependencies[https://github.com/sharelatex/sharelatex/wiki] ==&lt;br /&gt;
=== Base ===&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install git build-essential curl python-software-properties zlib1g-dev zip unzip&lt;br /&gt;
&lt;br /&gt;
=== Node.js ===&lt;br /&gt;
 apt-add-repository ppa:chris-lea/node.js&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install nodejs&lt;br /&gt;
 npm install -g grunt-cli&lt;br /&gt;
&lt;br /&gt;
=== Redis ===&lt;br /&gt;
 apt-add-repository ppa:chris-lea/redis-server&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install redis-server&lt;br /&gt;
&lt;br /&gt;
=== MongoDB ===&lt;br /&gt;
 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10&lt;br /&gt;
 echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install mongodb-org&lt;br /&gt;
&lt;br /&gt;
=== Aspell ===&lt;br /&gt;
 apt-get install aspell aspell-en aspell-nl&lt;br /&gt;
&lt;br /&gt;
=== TexLive ===&lt;br /&gt;
&lt;br /&gt;
 wget [http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz]&lt;br /&gt;
 tar -xvf install-tl-unx.tar.gz&lt;br /&gt;
 cd install-tl-*&lt;br /&gt;
 ./install-tl&lt;br /&gt;
 echo 'export PATH=/usr/local/texlive/2014/bin/x86_64-linux:$PATH' &amp;gt; /etc/profile.d/texlive.sh&lt;br /&gt;
 tlmgr install latexmk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ins&amp;gt;Kan dit niet makkelijker met een nfs-mount van haskell:/srv/texlive?&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sharelatex ==&lt;br /&gt;
Download de laatste release [https://github.com/sharelatex/sharelatex/releases].&lt;br /&gt;
 dpkg -i sharelatex_VERSION_amd64.deb&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Sharelatex</id>
		<title>Sharelatex</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Sharelatex"/>
				<updated>2015-10-27T12:40:53Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sysop]]&lt;br /&gt;
&lt;br /&gt;
'''Wordt aan gewerkt'''&lt;br /&gt;
&lt;br /&gt;
Sharelatex is een web-based latex omgeving.&lt;br /&gt;
Mist op dit moment nog ldap support, dus is niet mogelijk om te koppelen aan de rest van het systeem.&lt;br /&gt;
&lt;br /&gt;
= Instalatie =&lt;br /&gt;
Installeer ubuntu 12.04 (server)&lt;br /&gt;
&lt;br /&gt;
== Dependencies[https://github.com/sharelatex/sharelatex/wiki] ==&lt;br /&gt;
=== Base ===&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install git build-essential curl python-software-properties zlib1g-dev zip unzip&lt;br /&gt;
&lt;br /&gt;
=== Node.js ===&lt;br /&gt;
 apt-add-repository ppa:chris-lea/node.js&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install nodejs&lt;br /&gt;
 npm install -g grunt-cli&lt;br /&gt;
&lt;br /&gt;
=== Redis ===&lt;br /&gt;
 apt-add-repository ppa:chris-lea/redis-server&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install redis-server&lt;br /&gt;
&lt;br /&gt;
=== MongoDB ===&lt;br /&gt;
 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10&lt;br /&gt;
 echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install mongodb-org&lt;br /&gt;
&lt;br /&gt;
=== Aspell ===&lt;br /&gt;
 apt-get install aspell aspell-en aspell-nl&lt;br /&gt;
&lt;br /&gt;
=== TexLive ===&lt;br /&gt;
&lt;br /&gt;
 wget [http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz]&lt;br /&gt;
 tar -xvf install-tl-unx.tar.gz&lt;br /&gt;
 cd install-tl-*&lt;br /&gt;
 ./install-tl&lt;br /&gt;
 echo 'export PATH=/usr/local/texlive/2014/bin/x86_64-linux:$PATH' &amp;gt; /etc/profile.d/texlive.sh&lt;br /&gt;
 tlmgr install latexmk&lt;br /&gt;
&lt;br /&gt;
Kan dit niet makkelijker met een nfs-mount van haskell:/srv/texlive?&lt;br /&gt;
&lt;br /&gt;
== Sharelatex ==&lt;br /&gt;
Download de laatste release [https://github.com/sharelatex/sharelatex/releases].&lt;br /&gt;
 dpkg -i sharelatex_VERSION_amd64.deb&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Qemu-kvm</id>
		<title>Qemu-kvm</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Qemu-kvm"/>
				<updated>2015-10-21T18:41:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:software]]&lt;br /&gt;
[[category:sysop]]&lt;br /&gt;
Zorgt samen met [[libvirt]] voor de [[virtualisation]] op haskell.&lt;br /&gt;
&lt;br /&gt;
== Config ==&lt;br /&gt;
Om qemu-kvm en libvirt te kunnen gebruiken moet SE-linux correct geconfigureerd worden. &lt;br /&gt;
Momenteel is SE-linux disabled op Haskell.&lt;br /&gt;
&lt;br /&gt;
== zvol ==&lt;br /&gt;
&lt;br /&gt;
Met qemu en zfs is het mogelijk om een zogenaamde zvol te gebruiken als virtuele hardeschijf. Om hier gebruik van te maken dien je eerst een vm aan te maken in proxmox. Vervolgens maak je een zvol aan op haskell, met:&lt;br /&gt;
&lt;br /&gt;
 zfs create -V [size] storage/vm/[naam]&lt;br /&gt;
&lt;br /&gt;
Vervolgens kun je de vm aanpassen om gebruik te maken van deze storage. Vooralsnog dien je hiervoor de config handmatig aan te passen, dat kan in /etc/pve/qemu-server/[id].conf en kan de storage line aangepast worden naar:&lt;br /&gt;
&amp;lt;pre&amp;gt;scsi0: /dev/zvol/storage/vm/[naam],format=raw,cache=writeback,discard=on,backup=no,size=[size]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Voeg ook de volgende regel toe:&lt;br /&gt;
&amp;lt;pre&amp;gt;scsihw: virtio-scsi-pci&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Qemu-kvm</id>
		<title>Qemu-kvm</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Qemu-kvm"/>
				<updated>2015-10-21T18:35:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:software]]&lt;br /&gt;
[[category:sysop]]&lt;br /&gt;
Zorgt samen met [[libvirt]] voor de [[virtualisation]] op haskell.&lt;br /&gt;
&lt;br /&gt;
== Config ==&lt;br /&gt;
Om qemu-kvm en libvirt te kunnen gebruiken moet SE-linux correct geconfigureerd worden. &lt;br /&gt;
Momenteel is SE-linux disabled op Haskell.&lt;br /&gt;
&lt;br /&gt;
== zvol ==&lt;br /&gt;
&lt;br /&gt;
Met qemu en zfs is het mogelijk om een zogenaamde zvol te gebruiken als virtuele hardeschijf. Om hier gebruik van te maken dien je eerst een vm aan te maken in proxmox. Vervolgens maak je een zvol aan op haskell, met:&lt;br /&gt;
&lt;br /&gt;
 zfs create -V [size] storage/vm/[naam]&lt;br /&gt;
&lt;br /&gt;
Vervolgens kun je de vm aanpassen om gebruik te maken van deze storage. Vooralsnog dien je hiervoor de config handmatig aan te passen, dat kan in /etc/pve/qemu-server/[id].conf en kan de storage line aangepast worden naar:&lt;br /&gt;
&amp;lt;pre&amp;gt;scsi0: /dev/zvol/storage/vm/[naam],format=raw,cache=writeback,discard=on,backup=no,size=[size]&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2015-10-19T15:40:09Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden. Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2015-10-19T15:39:58Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden. Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;s&amp;gt;Replication&amp;lt;br/&amp;gt;&amp;lt;/s&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
*&amp;lt;s&amp;gt;ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&amp;lt;/s&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Wachtwoord</id>
		<title>Wachtwoord</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Wachtwoord"/>
				<updated>2015-09-21T13:16:21Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Account ==&lt;br /&gt;
&lt;br /&gt;
Gebruikers hebben bij A-Eskwadraat een wachtwoord om in te loggen op het systeem en de verschillende diensten die sysop beschikbaar stelt.&lt;br /&gt;
&lt;br /&gt;
=== Wijzigen ===&lt;br /&gt;
&lt;br /&gt;
Het wachtwoord wijzigen kan middels het volgende commando:&lt;br /&gt;
&lt;br /&gt;
 passwd&lt;br /&gt;
&lt;br /&gt;
Deze zal je vragen om je huidige wachtwoord, en vervolgens 2 keer om je nieuwe wachtwoord. Hou er rekening mee dat de invoer bij het commando `passwd` niet zichtbaar is.&lt;br /&gt;
&lt;br /&gt;
=== Restricties ===&lt;br /&gt;
&lt;br /&gt;
De volgende restricties zijn van toepassing op (nieuwe) wachtwoorden:&lt;br /&gt;
&lt;br /&gt;
*Maximale levensduur: 1100 dagen&lt;br /&gt;
*Minimale levensduur: 1 uur&lt;br /&gt;
*Aantal opgeslagen oude wachtwoorden: 2&lt;br /&gt;
*Minimale lengte: 8 karakters&lt;br /&gt;
*Aantal verschillende karakters: minstens 3 van de volgende: hoofdletters, kleine letters, cijfers, speciale tekens&lt;br /&gt;
[[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/Main_Page"/>
				<updated>2015-06-23T17:54:57Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welkom op de [http://nl.wikipedia.org/wiki/A-Eskwadraat A–Eskwadraat] IBA Wiki'''&lt;br /&gt;
&lt;br /&gt;
Commissies in [[IBA|IBA]] zijn:&lt;br /&gt;
&lt;br /&gt;
*[[Sysop|Sysop]]&lt;br /&gt;
**Documentatie is te vinden in [[:Category:Sysop]].&lt;br /&gt;
*[[WebCie|WebCie]]&lt;br /&gt;
**Documentatie is te vinden in [[:Category:WebCie]].&lt;br /&gt;
*[[TeXniCie|TeXniCie]]&lt;br /&gt;
**Documentatie is te vinden in [[:Category:TeXniCie]].&lt;br /&gt;
**Documentatie '''in de maak''' is te vinden in [[:Category:TeXniCie_TOBE]]&lt;br /&gt;
&lt;br /&gt;
Andere commissies die gebruik maken van de wiki:&lt;br /&gt;
&lt;br /&gt;
*[[Escapade|Escapade]]&lt;br /&gt;
**Documentatie is te vinden in [[:Category:Escapade]].&lt;br /&gt;
*[[Vakidioot|Vakidioot]]&lt;br /&gt;
**Documentatie is te vinden in [[:Category:Vakidioot]].&lt;br /&gt;
*[[UsabiliCie|UsabiliCie]]&lt;br /&gt;
**Documentatie is te vinden in [[:Category:UsabiliCie]].&lt;br /&gt;
*[[Webredactie]]&lt;br /&gt;
**Documentatie is te vinden in [[:Category:Webredactie]].&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	<entry>
		<id>https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA</id>
		<title>IPA</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.a-eskwadraat.nl/wiki/index.php/IPA"/>
				<updated>2015-06-23T17:36:42Z</updated>
		
		<summary type="html">&lt;p&gt;Jitse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FreeIPA is a Red Hat sponsored open source project which aims to provide an easily managed Identity, Policy and Audit (IPA) suite primarily targeted towards networks of Linux and Unix computers. FreeIPA can be compared to Novell's Identity Manager or Microsoft's Active Directory in that the goals and mechanisms used are similar.&lt;br /&gt;
&lt;br /&gt;
FreeIPA currently uses 389 Directory Server for its LDAP implementation, MIT's Kerberos 5 for authentication and single sign-on, the Apache and Python for the management framework and Web UI, and (optionally) Dogtag for the integrated CA and BIND with a custom plugin for the integrated DNS. Development versions also use Samba to integrate with Microsoft's Active Directory by way of Cross Forest Trusts.&lt;br /&gt;
&lt;br /&gt;
While each of the major components of FreeIPA is a pre-existing open source project it is the bundling of these components into a single manageable suite with a Comprehensive Management Interface that make FreeIPA more comparable to its proprietary software cousins, Identity Manager and Active Directory.&lt;br /&gt;
&lt;br /&gt;
FreeIPA aims to provide support not just for Linux and Unix based computers but ultimately Microsoft Windows and Apple Macintosh computers also.&lt;br /&gt;
&lt;br /&gt;
== Server installatie ==&lt;br /&gt;
&lt;br /&gt;
Installeer &amp;lt;code&amp;gt;ipa-server&amp;lt;/code&amp;gt; met alle dependencies. Zorg ervoor dat alle benodigde firewall-poorten open staan, na een schone kickstart hoeft enkel poort 7389 tcp nog geopend te worden. Vervolgens, om ipa-server te installeren ''zonder'' NTP-server:&lt;br /&gt;
&lt;br /&gt;
 ipa-server-install -N&lt;br /&gt;
&lt;br /&gt;
Na de installatie moet de server nog een beveiligings-certificaat krijgen. Voer hiervoor het volgende commando uit:&lt;br /&gt;
&lt;br /&gt;
 ipa-getcert request -d /etc/pki/nssdb/ -n ipaserver-cert&lt;br /&gt;
&lt;br /&gt;
Sudo gegevens zijn niet anoniem uit IPA te halen, daarom moet er voor de standaard user &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; een wachtwoord ingesteld worden. Doe dit met&lt;br /&gt;
&lt;br /&gt;
 ldappasswd -Y GSSAPI uid=sudo,cn=sysaccounts,cn=etc,dc=a-eskwadraat,dc=nl -s sudopasswd&lt;br /&gt;
&lt;br /&gt;
=== Firewall ===&lt;br /&gt;
&lt;br /&gt;
IPA heeft een aantal poorten nodig om correct te werken:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''''Service'''''&lt;br /&gt;
| '''''Poort'''''&lt;br /&gt;
| '''''Type'''''&lt;br /&gt;
|-&lt;br /&gt;
| HTTP/HTTPS&lt;br /&gt;
| 80,443&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| LDAP/LDAPS&lt;br /&gt;
| 389,636&lt;br /&gt;
| tcp&lt;br /&gt;
|-&lt;br /&gt;
| Kerberos&lt;br /&gt;
| 88,464&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| DNS&lt;br /&gt;
| 53&lt;br /&gt;
| tcp,udp&lt;br /&gt;
|-&lt;br /&gt;
| NTP&lt;br /&gt;
| 123&lt;br /&gt;
| udp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Client installatie ==&lt;br /&gt;
&lt;br /&gt;
{{opmerking| Bij migratie naar een andere IPA-server moet &amp;lt;code&amp;gt;/etc/ipa&amp;lt;/code&amp;gt; leeg zijn.}}&lt;br /&gt;
&lt;br /&gt;
=== ipa-client-install ===&lt;br /&gt;
&lt;br /&gt;
Installeer een IPA-client als volgt (uiteraard als root):&lt;br /&gt;
&lt;br /&gt;
 ipa-client-install&lt;br /&gt;
&lt;br /&gt;
Er wordt tijdens de installatie gevraagd om een gebruikersnaam, gebruik daarvoor gewoon je eigen account.&lt;br /&gt;
&lt;br /&gt;
'''''Reboot het systeem als de installatie voltooid is.'''''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
&lt;br /&gt;
Zie [[Sudo|sudo]].&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
Aan het standaard schema van IPA is de objectClass 'aesAccount' met attribuut 'memberId'. Zie de volgende LDIF:&lt;br /&gt;
&lt;br /&gt;
 dn: cn=schema&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: attributetypes&lt;br /&gt;
 attributetypes:( 1.3.6.1.4.1.44413.1.1.1 NAME 'memberId' DESC 'MemberId of person' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
 -&lt;br /&gt;
 add: objectclasses&lt;br /&gt;
 objectclasses: ( 1.3.6.1.4.1.44413.1.2.1 NAME 'aesAccount' SUP top AUXILIARY &lt;br /&gt;
 DESC 'A-Eskwadraat account information' MAY  ( memberId ) )&lt;br /&gt;
&lt;br /&gt;
=== Lidnummer toevoegen ===&lt;br /&gt;
&lt;br /&gt;
'mensjeadd' vraagt bij het aanmaken van een account om een lidnummer. Mocht er onverhoopt iets misgaan, met de onderstaande LDIF is het mogelijk om een lidnummer aan een account toe te voegen:&lt;br /&gt;
&lt;br /&gt;
 dn: uid=$login,cn=users,cn=accounts,dc=a-eskwadraat,dc=nl&lt;br /&gt;
 changetype: modify&lt;br /&gt;
 add: memberId&lt;br /&gt;
 memberId: $lidnummer&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
&lt;br /&gt;
Er zijn op dit moment drie IPA-servers met de volgende replication agreements:&lt;br /&gt;
&lt;br /&gt;
*ipa01 &amp;amp;lt;=&amp;amp;gt; ipa02&lt;br /&gt;
*ipa01 &amp;amp;lt;=&amp;amp;gt; ipa03&lt;br /&gt;
*ipa02 &amp;amp;lt;=&amp;amp;gt; ipa03&lt;br /&gt;
[[Category:Software]] [[Category:Sysop]]&lt;/div&gt;</summary>
		<author><name>Jitse</name></author>	</entry>

	</feed>