MySQL Replicatie inrichten

Zorg dat je twee sessies open hebt staan op de master. In de ene sessie blokkeer je schrijf-acties naar de database:

mysql> FLUSH TABLES WITH READ LOCK;

In de tweede sessie maak je een dump van je database:

# mysqldump -u username -p database > database.sql

In de eerste sessie haal je de master-gegevens op die je later nodig hebt:

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.019726 |      616 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Schrijf-acties kunnen nu weer toegestaan worden:

mysql> UNLOCK TABLES;

Zorg dat de slave replicatie mag doen:

mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

Kopieer nu de dump-file naar de nieuwe slave, en importeer deze:

# scp user@master:/home/user/database.sql .
# mysql -u username -p database < database.sql

Configureer de slave configuratie van MySQL:

mysql> CHANGE MASTER TO \
    MASTER_HOST='master', \
    MASTER_USER='username', \
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.019726',
    MASTER_LOG_POS=616;

Controleer de slave configuratie:

mysql> SHOW SLAVE STATUS;

 

Certificate Signing Request

Key file:

$ openssl genrsa -des3 -out key.withpass 2048
Generating RSA private key, 2048 bit long modulus
..............+++
.........+++
e is 65537 (0x10001)
Enter pass phrase for key.withpass:
Verifying - Enter pass phrase for key.withpass:

Passphrase verwijderen:

$ openssl rsa -in key.withpass -out key
Enter pass phrase for key:
writing RSA key
$ rm key.withpass

Request:

$ openssl req -new -key key -out csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: CC
State or Province Name (full name) [Some-State]: State
Locality Name (eg, city) []: City
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organization
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []: hostname.example.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Optioneel, self-signed certificate:

openssl x509 -req -days 365 -in csr -signkey key -out crt

PHP Sessies en paden

Wat een gedoe, twee of meer applicaties met eigen sessies onder dezelfde hostname. Dan moet je paden mee geven in de cookies. En wel vóór het starten van de sessie.

Maar omdat de sessie-cookie niet zomaar wordt bijgewerkt met iedere request moet na het starten van de sessie de lifetime nog worden bijgewerkt. ’t Is nu eenmaal niet anders. Oh, en het schijnt belangrijk te zijn om een sessie-naam te definiëren

Dus de enige juiste manier, volgens mij, om een sessie te (her)starten:

$name = 'myapp';
$timeout = 600;
$domain = preg_replace('/^[^\.]+/', '', $_SERVER['HTTP_HOST']);
$path = preg_replace('/[^\/]*$/', '', $_SERVER['REQUEST_URI']);
$https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && ($_SERVER['HTTPS'] != 'off');

session_name($name);
session_set_cookie_params($timeout, $path, $domain, $https, !$https);
session_start();
setcookie(session_name(), session_id(), time()+$timeout, $path, $domain, $https, !$https);

Of je gooit de hele sessie-afhandeling van PHP overboord, en bouwt zelf wat beters.

Thunderbird, Google en event invitations

Pffrt. Waarom moet dat nou zo moeilijk zijn? Kan de Google Calendar plugin mij niet gewoon voor alle agenda-uitnodigingen de optie geven om te accepteren?

Fixed mostly the same way, but did not delete anything
Used config editor and changed calendar.google.enableEmailInvitations “yes”
Restarted TB
Right clicked Google Calendar and selected properties
Under properties there was a new choice for e-mail and I selected the email address I wished to add invites from.
Worked great

bron

Embedded base64 images

Ik ben er net achter gekomen dat het sinds HTML 4.01 mogelijk is om plaatjes in base64 te embedden in HTML code. Maar dat is handig zeg! Neem het volgende stukje:

<img alt="" src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAAXNSR0IArs4c6QAAADBQTFRFKhAI
YB0VRiUdgDkvfEIyZ1BKhlJLmVBHklZEsnpv0Z6Q8sCzyNnb+N3K3urv+vTozid+tgAAAAlwSFlz
AAAK8AAACvABQqw0mAAAAAd0SU1FB9oMCggIMUIoQwYAAAJWSURBVCjPVZHBa9RAFManAT15SVfQ
4zpseg8vNHu1Gcoew8IWCuKhXQbqdUsn8drFne1RrdukerCC2An2JJRuKAjSW8g/UEJP9iBhPHiU
Nk4St9UHefB+fO99b15QUkeelzmVVYGqnCb/RQ2Ts9VebzdI8xuYpsl3Y3W3h41u3SYrZe7iZQNj
w733b7uCmoLNXiJTKSVSn8ybCxrS7tCV7pNaWbIzhLsuuttfeVnBtFJ+RbiPNGxgd7VW5omUbhMt
NHETreHdvHKXiVQ+aE3Tmi2yZNzMTFSrjluEjl8biZy5u5iAtUj9cIpTmZd7qsXclgM2ZX4ocHqr
7APY/mQigqWjvDIqIQGwNvYCIZaeVspcLY8dWIRxEAai+yz5236pEUJoEE2D8GCiNNVK7+c4DGgQ
imh6YM8O8s2ky5QypmZ+YTP3X9ZwvsWYt2yHx/4MXjZGlmMzPj/nHz+fwR8P+/ojnZn3hx3xtl7p
Z3rlr1ugU7PRDk+OKpgURfFxCCb4FBZFpKpriVQufo+2APbfbPmHn8syRxcqX422GOy/Yv5eBYsa
TthAHcT2glt4dcLZAGwbvJ13WSlC2UUWD/jIUs8n3ng/ziqYxSdmmz8G2CR8FEaKXqPsPP7gPOCO
qTegM9oJ49OLAp3H8QB0zpkKvj0ORHRaoDgW66C3S8g5cHXqOFPwkIB6ofLh27Bp8yA6RfH0U5+Y
DSCkw0FFZyxiFIs9ShwFOScwAPA2whgJwWnH0cHihNhK6dEwQuKQU172t4nHALin/iAKAwWHZjmO
qfYOfxGIP/3VytFROwG+AAAAAElFTkSuQmCC" />

Resultaat hiervan is:

Standaard Cisco config

Gebaseerd op de Cisco Guide to Harden Cisco IOS Devices.

! Cisco Guide to Harden Cisco IOS Devices
!
! Enhanced Password Security
aaa new-model
aaa authentication login default local
username MyUsername secret MyPassword
enable secret MyPassword
!
! Disable Unused Services
no ip bootp server
ip dhcp bootp ignore
no mop enabled
no ip domain-lookup
no service pad
no ip http server
no ip http secure-server
no cdp run
no lldp run global
!
! Keepalives for TCP Sessions
service tcp-keepalive-in
service tcp-keepalive-out
!
! Network Time Protocol
clock timezone WET 1
clock summer-time WEST recurring last Sun Mar 3:00 last Sun Oct 2:00
ntp server 83.98.201.133
!
! Limit Access
ip access-list standard RemoteAccess
 permit 192.168.100.0 0.0.0.255
 deny any log
!
line vty 0 4
 access-class RemoteAccess in
!
! Set hostname and domain name
hostname myrouter
ip domain-name mydomain
!
! Encrypting Management Sessions
crypto key generate rsa general-keys modulus 1024
line vty 0 4
 transport input ssh
!
! Warning Banners
banner login )

Unauthorized access prohibited.

)
banner motd )

Unauthorized access prohibited.

)
!
! SNMP Community Strings
snmp-server community MyCommunity RO RemoteAccess
snmp-server ifindex persist
snmp-server contact user@example.com
!
! Logging
logging buffered 16384
!
! Configure Logging Timestamps
service timestamps debug datetime msec show-timezone
service timestamps log datetime msec show-timezone
!
! Exclusive Configuration Change Access
configuration mode exclusive auto
!
! Configuration Change Notification and Logging
archive
 log config
  logging enable
  notify syslog contenttype plaintext
  hidekeys
!

Geklungel met de WRT’tjes

BaksteenIk heb het weer eens voor elkaar: een ‘bricked’ WRT54G.

Gelukkig ben ik niet de enige die dit overkomt, maar voor het geval ik de oplossing in de toekomst niet meer terug kan vinden; hieronder mijn procedure om de firmware via tftp op het routertje te krijgen:

  1. Prik de ethernet kabel van de computer die tftp gaat doen direct in de WRT54G.
  2. Start de tftp client, en laat ‘m een constante re-transmit doen:
    $ tftp 192.168.1.1
    > binary
    > trace
    > rexmt 1
    > timeout 90
    > put firmware.bin
  3. Haal de spannig van het routertje af.
  4. Druk met een pen het reset-knopje in.
  5. Zet de spanning weer op het routertje.
  6. Houd het reset-knopje nog een seconde of 4 vast, en laat dan los.

Als het goed is begint de tftp client nu data te sturen naar het routertje, en zie je een boel van dit:

sent DATA <block=2189, 512="" bytes="">
received ACK <block=2189>

Als de firmware over is even een minuutje wachten, en dan zou het routertje opnieuw moeten opstarten.

Hiermee heb ik mijn WRT54G v2.2 gered, en ook de WRT54GL v1.1. Voor die laatste heb ik de ethernet interface op de PC op 10mb/s en half duplex moeten zetten.