Printer Friendly CSS

Iets waar moderne websites het lastig mee hebben is om als je de webpagina afdrukt, deze vaak te veel nutteloze informatie afdrukt. Een pagina printer-friendly maken is echter niet zo moeilijk. In deze post leg ik uit hoe je een printer-friendly CSS bestand toevoegd aan je site.

Lees verder

Wat is er nieuw in PHP 8.0

Onlangs is PHP 8.0 uitgekomen. Hier zijn de meest interesante nieuwtjes

Union Types

PHP is een dynamicaly typed programmeertaal, daardoor kan een variabele soms van een ander type zijn. Met union types kan je aanduiden dat een variabele van 1 van de toegestane types is

// Union type example
public function foo(Foo|Bar $var): float|int;

JIT

De JIT is weer aangepast, waardoor PHP nog sneller is.

De Match Expressie

De match expressie is een beetje zoals de `switch` expressie.

// match example
$result = match($input) {
0 => "Hallo"
1,2 => "Wereld" 
}

ext-json standaard

De JSON extentie is nu altijd deel van PHP.

Tiny Perl CMS

Ik heb een klein, basis CMS systeem gemaakt in perl. Voornamelijk om perl uit te testen.

Het is eenorm eenvoudig, het heeft ook geen admin interface, dus zoals het script nu is
moet je pagina’s meteen in de databank aanmaken.

Hieronder zie je de sourcecode.

#!/usr/bin/perl
use warnings;
use strict;
use CGI;
use DBI;

my $driver = "mysql";
my $database = "database_naam";
my $dsn = "DBI:$driver:database=$database";
my $userid = "database_user";
my $password = "database_password";

my $dbh = DBI->connect($dsn, $userid, $password ) or die $DBI::errstr;

my $cgi = CGI->new;
print $cgi->header;

# header
print <<'EOF';
<!DOCTYPE="html">
<html>
<head>
  <title>TinyPerlCMS</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta charset="UTF-8" />
</head>
<style>
  body {
    max-width: 800px;
    padding: 1em;
    border: 1px solid black;
    margin: 0 auto;
  }

  img {
    max-width: 100%;
  }
</style>
<body>
EOF

my $p = $cgi->param('p') || '1'; # default id 1, de homepage

my $sth = $dbh->prepare("SELECT content, title
                        FROM pages
                        WHERE id = ? LIMIT 1"); #limit 1, voor de zekerheid
$sth->execute( $p ) or die $DBI::errstr;
if ($sth->rows == 0){
print "<h1>Error 404: Page not found</h1><p>The page you where looking for was not found. <a href='?p=1'>Go to the homepage</a></p>";
} else {
  while (my @row = $sth->fetchrow_array()) {
     my ($content, $title ) = @row;
     print "<h1>$title</h1>\n $content\n";
     if ($p != '1'){ # check als het niet de homepage is, om link naar homepage te tonen
     print '<a href="?p=1">Back</a>' 
     }
  }
}
$sth->finish();

#footer
print <<'EOF';
</body>
</html>
EOF

exit 0;

database structuur:

CREATE TABLE `pages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(64) NOT NULL, -- grote kan aangepast worden
  `content` varchar(10000) NOT NULL, -- grote kan aangepast worden
  PRIMARY KEY (`id`)
)

Jederu cloud review

Ongeveer een week geleden kondigde een kennis van me aan dat hij een cloud-service ging starten, welke gericht was op hobbyisten. Ik mocht het dan ook al wat eerder uit proberen, dus leek het mij een goed idee om hem wat te steunen met een review.

Containers als vps

Jederu’s cloud service is een dienst die docker-containers als een vps aanbied, dit is zeer gunstig, omdat ze ervoor zorgen dat je snel aan de slag kan met je idee. Ook krijg je enkel de poorten die je nodig hebt, met poort 22 voor ssh er standaard bij. Dit maakt het out-of-the-box wat veiliger (je hoeft geen firewall te installeren), maar heeft wel een nadeel: poorten worden gemapt aan een random poort op de host-server. Hiervoor is er wel een proxy-dienst inbegrepen, waardoor je hier eigenlijk minimale last van ondervind.

De performance

De performance op de kleinste container is beperkt tot 0.25 cpu, en 256mb ram. Dit lijkt weinig, maar is ruim voldoende aangezien het gaat om docker container. Ik ondervond ook geen echte slowdowns bij het installeren van een LAMP stack.

De images.

Op het moment van testen waren er 3 images: Ubuntu 18.04, Debian 10 en een NodeJS image, al is Jens er wel bezig aan images zoals een LAMP server. Op de Ubuntu/Debian images kan je uiteraard installeren wat je wilt.

Conclusie

Als je opzoek bent voor een hobby-servertje, Ideaal voor het hosten van een kleine website of wat software-bots. Ik raad het je zeker aan omdat bijna alle features die door mij en andere gebruikers gevraagd zijn geïmplementeerd worden, of op de planning staan om erin te komen.

Zijn wachtwoorden verleden tijd

Een goed en veilig wachtwoord is belangerijk, zeker in tijden dat al onze activiteiten digitaal zijn, maar is een wachtwoord wel veilig genoeg, met toepassingen zoals 2fa, vingerafdrukken, gezichtsherkennig in bijna elk toestel.

Ideaal heb je om jezelf de authenticeren 3 componenten:

  • Iets dat je weet (bv een wachtwoord)
  • Iets dat je hebt (bv een hardware-sleutel)
  • Iets dat je bent (bv je vingerafdruk)

Nu is slechts 1 van deze componenten nodig hebben niet veilig genoeg. Je hebt best alle 3, of minstens 2 van deze componenten nodig, want een wachtwoord kan gekraakt worden, een hardware sleutel kan gestolen worden, en je vingerafdruk kan tegenwoordig ook al zeer eenvoudig gestolen worden.

Een goed wachtwoord

Alles begint met een goed wachtwoord. Een goed wachtwoord heb je als het (bijna) onmogenlijk is voor een computer om te kraken, dus niet de naam van je kat en een nummer erachter, maar wel bv een wilikeurig gegenereerd wachtwoord. Het nadeel van een wilikeurig gegenereerd wachtwoord, is dat het moeilijk te onthouden is, je kan wel een wachtwoordbeheerder gebruiken, maar deze hebben een ander nadeel: je stopt alle wachtwoorden bij elkaar, en versleuteld het met een hoofwachtwoord, dat je wel moet onthouden. Ook heb je bij online wachtwoordbeheerders het nadeel dat je jouw wachtwoorden op een server op het internet opslaat, een wachtwoordbeheerder als keepass, welke volledig offline werkt, heeft dat niet.

Een manier om een goed wachtwoord te maken is met behulp van diceware.

Diceware is a method for creating passphrases, passwords, and other cryptographic variables using ordinary dice as a hardware random number generator. For each word in the passphrase, five rolls of the dice are required. The numbers from 1 to 6 that come up in the rolls are assembled as a five-digit number, e.g. 43146. That number is then used to look up a word in a word list. In the English list 43146 corresponds to munch. By generating several words in sequence, a lengthy passphrase can be constructed. – Wikipedia (https://en.wikipedia.org/wiki/Diceware)

Met diceware maak je dus een wachtwoord aan de hand van een reeks woorden, die je wilikeurig selecteerd uit een lijst. Dit wachtwoord is zowel lang, als relatief eenvoudig te onthouden. In deze video van Computerphile word het duidelijk uitgelegd..

Hardware sleutels

Hardware sleutels zoals een Yubikey of dergelijke, zijn USB-toestellen die je in jouw computer stopt en nodig zijn om aan te melden. De sleutel word op de usb-sleutel gemaakt en opgeslagen. Het nadeel hiervan is dat ze vaak duur zijn, en dat je er best 2 of meer hebt (zodat je zeker 1 als backup hebt.)

Biometrics

Op onze telefoons (en tegenwoordig ook onze computers) kunnen we al jaren inloggen met onze vingers of zelfs ons gezicht. Vaak word dit als enige authenticatie gebruikt, wat nadelig is aangezien dit tokens zijn die niet kunnen ingetrokken worden, ze zijn uiterst uniek, maar kunnen nog altijd worden vervalst.

In bepaalde situaties zijn er ook sensors die naast de vingerafdruk, ook zoeken naar tekens van leven. Deze worden vaak gebruikt in datacenters.

Linux LAMP server tutorial

In deze tutorial leg ik je uit hoe je van jouw linux computer of server een webserver maakt met behulp van LAMP.

LAMP staat voor Linux Apache Mysql Php, dat zijn de onderdelen waar de meeste webservers gebruik van maken. Ik ga in deze tutorial gebruik maken van Ubuntu 18.04, maar deze stappen zijn voor de meeste ubuntu- en debian versies gelijk.

Apache installeren

Apache is de webserver. Deze is de meest gebruikte webserver en is dan ook zeer gemakkelijk en uitgebreid te configureren. Installeren doe je met het volgende commando:

sudo apt install apache2 -y

Als je nu naar het ip-adres van jouw server surft, dan zul je een pagina zoals hieronder te zien krijgen:

je kan deze pagina aanpassen door de inhoud in /var/www/html/ aan te passen.

PHP

Php zorgt ervoor dat je dynamishe inhoud kan gebruiken op jouw webserver. De installatie is zeer eenvoudig en doe je met onderstaand commando:

sudo apt install php libapache2-mod-php -y

Als je nu naar de /var/www/html/ map gaat en het index.html bestand verwijderd, en er een index.php bestand in de plaats zet met volgende inhoud:

<?php phpinfo(); ?>

En dan opnieuw naar het ip van jouw server gaat, dan zul je een pagina vol info over php zien, wat tevens ook wilt zeggen dat php goed is ingesteld.

MySQL

MySQL zorg ervoor dat je databases kan gebruiken. de Installatie is eenvoudig met de volgende commando’s:

sudo apt-get install mysql-server php-mysql -y
sudo service apache2 restart

Hierna moet je mysql nog instellen, en dat doe je als volgt:

sudo mysql_secure_installation

Je zult volgende vragen te zien krijgen:

  • “Enter current password for root (enter for none):” – druk hier op enter
  • “Set root password?” – typ hier y, typ dan het wachtwoord voor de root user.
  • “Remove anonymous users” – typ hier weer y
  • “Remove test database and access to it?” – Typ hier weer y
  • “Reload privilege tables now?” – je raad het al, typ y

Nu zou je mysql moeten kunnen gebruiken.

Zo, nu heb je successvol een LAMP stack geinstalleerd!

Edit 2020-04-11: Het commando om php te installeren was fout. Dit is nu aangepast.

Linux remote desktop met X2GO

Met X2GO kan je van vanaf elke computer verbinding maken met jouw computer. Het enige dat je eigenlijk nodig hebt is een SSH-verbinding die X11-forwarding ondersteund, en de X2GO client, wel kan je een daemon op de “server” computer installeren die de sessies achteraf opruimd, wat anders niet gebeurd.

Deze tutorial gaat er van uit dat je zelf verantwoordelijkheid neemt over het goed instellen van een firewall, en de beveiliging van de ssh-server.

Installatie

SSH server

Eerst moet je een SSH-server instellen. Als dit al gedaan is dan kan je deze stap overslaan. Met het volgende commando kan je de openssh-server installeren:

sudo apt install openssh-server -y 

Zodra dit gedaan is, zou je op een andere computer in een terminal (of cmd-venster op windows) een ssh verbinding kunnen starten.

 ssh gebruikersnaam@ip-van-computer

Als dat lukt kan je uitloggen met logout.

X2GO daemon

De Daemon installeer je op de HOST computer.

De installatie van de X2GO daemon hangt een beetje af van je linux-distributie. Ik ga de stappen voor Debian volgen, als je en andere distributie gebruikt kan je hier jouw instructies vinden.

Eerst moet je het X2GO repository toevoegen. Dat doe je met de volgende stappen. Deze stappen voer je uit als root:

De ondertekeningssleutel toevoegen:

apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E

Open nu in een textverwerker als nano of emacs het bestand /etc/apt/sources.list.d/x2go.list en voeg daar volgende inhoud aan toe:

# X2Go Repository (release builds)
deb http://packages.x2go.org/debian buster extras main
# X2Go Repository (sources of release builds)
deb-src http://packages.x2go.org/debian buster extras main

# X2Go Repository (Saimaa ESR builds)
#deb http://packages.x2go.org/debian buster extras saimaa
# X2Go Repository (sources of Saimaa ESR builds)
#deb-src http://packages.x2go.org/debian buster extras saimaa

# X2Go Repository (nightly builds)
#deb http://packages.x2go.org/debian buster extras heuler
# X2Go Repository (sources of nightly builds)
#deb-src http://packages.x2go.org/debian buster extras heuler

Daarna kan je de installatie uitvoeren met

sudo apt-get install x2goserver x2goserver-xsession

X2GO Client

Net zoals de installatie voor de X2GO daemon, hangt de installatie hiervan af van je OS/distributie. Ik gebruik hier de stappen voor Ubuntu, de stappen voor andere distributies of voor windows vind je hier

Je kan de X2GO client installeren met het volgende:

apt-get install x2goclient

X2Go Gebruiken

Als je de X2Go client start, zal je een scherm zoals hieronder staat te zien krijgen. als je in de menubalk op “sessie” > “nieuwe sessie” klikt, kan je een nieuwe sessie aanmaken.

Ik maak gebruik van een virtuele machine, vandaar de naam, maar de instellingen zoals de host etc moet je natuurlijk aanpassen naar wat voor jou de juiste gegevens zijn (bv het IP van jouw computer)

Zodra alles goed staat, zal je een vak zien aan de rechterkan van het scherm, met de naam van de sessie, en wat informatie. Als je hier dubbel op klikt kan je verbinding maken.

Zo, nu kan je van overal verbinding maken met jouw eigen computer via een ssh-verbinding.

Corona computervirus

Het was natuurlijk niet ondenkbaar, maar het is dus wel gebeurt: Een computervirus dat zich versprijd tussen het nieuws van de corona-maatregelen. Zo heeft sophos in Italie een spam-campagne gevonden dat berichten doorstuurde, met daarin malware.

Deze scamberichten deden alsof de van de WHO kwamen, en vroegen de ontvangers voor hun e-mail wachtwoorden, wat niemand natuurlijk ooit zou doen.