post.ch: “keine Sendung” im Kundencenter - und Paket verpasst

Montag, 19. August, 2019

Ich habe mir 6 Pakete an meine Adresse in Bern gesendet. 4 sind bereits da … auf 2 warte ich noch.

Bei der Schweizer Post kann man sich auf dem Webportal registrieren. Und dann hat man ein “Kundencenter”, wo man eintreffende Sendungen verfolgen, die Lieferung auf eine andere Adresse ausliefern lassen kann u.v.m. In Erwartung dass noch 2 Pakete ausstehen, habe ich mich registriert.

Sonntagabend … habe ich geschaut, ob denn zum Montag ein Paket zugestellt werden würde … ich habe es als NEIN interpretiert:

2018-08-19-post_ch_keine_sendungen.png

Montag … nach der Arbeit: ich habe im Briefkasten eine Info, dass mir ein Paket nicht zugestellt werden konnte. Hm, toll. Dann habe ich wohl zu viel von dem Service erwartet.

Was aber tadellos funktioniert: Ich kann nun auf post.ch vom Zettel der Post (a.k.a. “Abholungseinladung”) den Abholcode bei https://www.post.ch/abholungseinladung eingeben, dann auf den Pin zum Hinzufügen klicken, und voila - dann sehe ich beim Wechsel in das Kundencenter mein Paket, dass auf eine Abholung wartet:

2018-08-19-post_ch_abholung.png

OK, das wusste ich ja, das steht ja auch auf dem Zettel drauf.

Wie soll ich eine Sendungsnummer vorab kennen, damit ich sie eingeben kann?

Die Sendungsnummern aller meiner Pakete habe ich noch von der Aufgabe auf der Postfiliale in D vor mir liegen. Diese werden jedoch nicht als Eingabe auf post.ch akzeptiert. Scheinbar wird es in er Schweiz umgelabelt: bei der Sendung, die nun zur Abholung bereit ist, sieht die Sendungsnummer der Schweizer Post komplett anders aus. Ich kann absolut keine der Angaben auf dem Abholschein der Schweizer Post mit irgendeiner Angabe auf den Quittungen der Deutschen Post matchen. Man hat als Kunde verloren.

Irgendwie hat sich mir der Sinn dieser Funktion “meine Sendungen” noch nicht ganz erschlossen. Ich will doch *vorher* wissen, ob ein Paket eintrifft, oder etwa nicht??? Es klingt nach einer guten Idee - ist aber praktisch nicht verwendbar. Gut gemeint ist das Gegenteil von gut gemacht.

Amazon Alexa - meine Seite kommt Rang 60.000 näher

Donnerstag, 30. Mai, 2019

Amazon Alexa … ist das nicht ein Lautsprecher?
Wenn wer sich das fragt, hat Amazon vielleicht ein Branding Problem. Aber das soll nicht meines sein.

Nein, ich meine das schon viel ältere Amazon Alexa - das mit mit den Webseiten-Rankings.

Hin und wieder schaue ich, wie sich das Ranking von axel-hahn.de in Deutschland verhält. Und das schwankt! Was ich über die letzten Monate so sehe:

  • Im März lief es mal aus dem Listing heraus (über Platz 150.000 vermute ich).
  • Binnen einer Woche schwankt es mal um 30.000 Plätze. Auf 4 Stellen nach - äh: VOR - dem Komma braucht man nicht so genau schauen.
  • Seit Ende März 2019 bewegt es sich um Platz 100.000 (+/- 10.000 Plätze)
  • Ende April war er bei Rang 135.000 (weltweit: 1.5 Mio) … und fällt seitdem
  • Am 29.5. kam ich auf 60931 (weltweit: 1.2 Mio)

Wenn ich mal Zeit habe (hm, das ist ein ganz böses geflügeltes Wort für: das tritt eh nie ein :-)), dann mache ich die PHP-Klasse, mit der ich die Alexa-Statistik einhole, mal schön … wie auch öffentlich.

weiterführende Links:

  1. Golb Slexa: Klettern im Alexa-Ranking
  2. www.alexa.com (en)

Steuerverwaltung Bern manipuliert Datum?

Sonntag, 12. Mai, 2019

Laut meinem Kalender, Smartphone, Teletext, Rechner … wirklich egal wo ich auch schaue: heute ist definitiv der 12. Mai 2019.
Wieso können mir mir heute Anschreiben der Steuerverwaltung vorliegen, deren Datum über 1 Woche in die Zukunft datiert ist?

2019-05-12-steuerverwaltung-manipuliert-datum-der-anschreiben.png

oder hier

2019-05-12-steuerverwaltung-manipuliert-datum-der-anschreiben-2.png

Virtualbox: Protocol error beim Mounten der Shared Folders

Mittwoch, 17. April, 2019

In meiner Virtualbox 6.0(.x) Instanz habe ich ein lokales Webentwicklungsverzeichnis mit mehreren Domains von Entwicklungsumgebungen als Shared Folder in eine CentOS VM geteilt. In jener sind die Verzeichnisse als Apache Webroots via /var/www/[Domainname]/public_html/ angesprochen.

Und wie das so bei Computern ist: von einem Tag auf den anderen funktioniert irgendwas nicht mehr. Heute: das Mounten der Verzeichnisse.

Versuch 1:

Ein Reboot der VM … brachte nichts.

Versuch 2:

Shared Folders funktionieren nur, wenn die Gästetools installiert sind. Es hätte ja durch ein OS-Update der VM einen neuen Kernel gegeben haben. Diese habe ich nochmals installiert. Es wurde ein neuer Kernel compiliert… was einen weiteren Reboot brauchte … es geht aber nicht.

Versuch 3:

So kommt man dem Problem dann näher:
Man öffnet die Logs - das geht via dem Icon rechts einer VM (oh, ich hatte beim Umstellung von Virtualbox 5 auf V 6 lange die Sicherungspunkte gesucht :-)) - hier Logs auswählen. Dann erscheinen mehrere Tabs - das erste davon brauchen wir - die VBox.log.

2019-04-17-virtualbox-01-show-logs.png

Darin taucht ein Fehler auf:

00:36:51.618960 ASSERT_GUEST_LOGREL F:\tinderbox\win-rel\src\VBox\HostServices\SharedFolders\mappings.cpp(762) 
... int __cdecl vbsfMapFolder(struct _SHFLCLIENTDATA *,struct _SHFLSTRING *,unsigned short,bool,unsigned int *): 
... pFolderMapping->cMappings == 0 || pFolderMapping->fGuestCaseSensitive == fCaseSensitive
00:36:51.618981 Incompatible case sensitivity setting: C:\data\htdocs: 2 mappings, insenitive, requested senitive!
00:36:51.619183 VMMDev: Guest Log: 06:57:31.461002 automount Error: vbsvcAutomounterMountIt: Failed to mount 
... 'htdocs' on '/media/sf_htdocs': Protocol error (-1,71)

Nach jenem

automount Error: vbsvcAutomounterMountIt: Failed to mount ‘htdocs’ on ‘/media/sf_htdocs’: Protocol error (-1,71)

kann man im Internet micht der Suchmaschine seiner Wahl suchen. Leider wurde ich trotz des Fehlercodes und Wortlaut der Meldung nicht fündig. Das fand ich unlustig. Ich bin also der erste Mensch auf der Welt, der dieses Problem hat :-)

Schauen wir bei den gemeinsamen Ordnern - das hatte ich eingestellt:

2019-04-17-virtualbox-02-shared-folder.png

Was aber klappte:

Ich habe die Shared Folder Defintion gelöscht … rechts das Order Symbol mit dem X … im Log erschien

00:39:53.656135 SharedFolders host service: Removing host mapping 'htdocs'
00:39:53.743943 GUI: UIMediumEnumerator: Medium-enumeration finished!

Dann wurde das zuvor Gelöschte 1:1 wieder eingerichtet.

00:40:26.398568 SharedFolders host service: Adding host mapping
00:40:26.398589     Host path 'C:\data\htdocs', map name 'htdocs', writable, automount=true, automntpnt=, create_symlinks=false, missing=false
00:40:26.452420 GUI: UIMediumEnumerator: Medium-enumeration finished!
00:40:27.403966 VMMDev: Guest Log: 07:01:07.246159 automount vbsvcAutomounterMountIt: Successfully mounted 'htdocs' on '/media/sf_htdocs'

Dies hat er eingerichtet - und sofort war es auch in der VM ohne weiteres Zutun gemountet.
Last but not least habe ich die VM nochmals rebootet, um zu schauen, ob es auch nach einem Neustart noch funktioniert … yep, auch dies ging.

Unterbinden von Load_file() in Mysql und MariaDB

Sonntag, 17. Februar, 2019

Ich benötige zum Betreiben von Applikationen keine Dateizugriffe via Mysql. Wenn es weder Dateien vom Server noch vom Client braucht, fühle ich mich wohler, wenn die Funktion komplett deaktiviert ist, weil das ein offenes Scheunentor sein kann.

Um das Laden von Dateien innerhalb SQL zu vermeiden, gibt es in Mysql die Möglichkeit, in der Konfiguration den Dateizugriff zu unterbinden

[mysqld]
local-infile = 0|1 oder ON|OFF
secure_file_priv = [Wert]

Kurz in der Dokumentation die Werte nachlesen, ins Puppet kippen und auf alle Server verteilen.

Als Test, ob ich erfolgreich bin, dient der Aufruf … dieser muss NULL ausgeben und keinen Dateiinhalt.

#  mysql -e "SELECT  load_file('/etc/passwd');"
+--------------------------+
| load_file('/etc/passwd') |
+--------------------------+
| NULL                     |
+--------------------------+

Das war die Idee. Eigentlich klingt es einfach.
Leider verhalten sich aber die Einstellungen von Mysql und MariaDB unterschiedlich.

Der Wert für local-infile muss bei beiden 0 oder OFF sein. local-infile ist aber eine dynamische Variable - das ist aber lediglich der Startwert, der mit einem SQL Befehl in der laufenden Instanz neu gesetzt werden kann.

Heisst: es braucht zwingend den Wert für secure_file_priv, der sich wiederum NICHT zur Laufzeit verändern lässt.

(1)
Variante für Mysql:

[mysqld]
(...)
local-infile = 0
secure_file_priv = NULL
(...)

Danach einmal den Service neu starten systemctl restart mysql … dann habe ich das Verhalten wie in meinem Testaufruf.
Dieses Setup funktioniert nicht auf MariaDB - es wird mit einem Fehler in der Variable secure_file_priv beendet.

Die Dokumentation sagt: wenn secure_file_priv fehlt, würde der Dateizugriff verhindert werden…

Description: LOAD DATA, SELECT … INTO and LOAD FILE() will only work with files in the specified path. If not set, the default, the statements will work with any files that can be accessed.

Aber das ist nicht korrekt! Wenn ich secure_file_priv nicht setze, und es aus der laufenden Datenbank abfrage, ist der Wert leer

# mysql -e "SHOW VARIABLES LIKE 'secure_file_priv';"
+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| secure_file_priv |            |
+------------------+------------+

… und ein SELECT load_file(’/etc/passwd’); zeigt mir den Dateiinhalt an!
Wer Percona oder einen anderen Mysql-Abkömmling verwendet, sollte das Verhalten austesten.

MariaDB erwartet einen existierenden Verzeichnisnamen. Ich habe mich entschieden, /dev/null zu nehmen, weil es sowohl existiert als auch ein User hier keine Datei ablegen kann:

(2)
Variante für MariaDB:

[mysqld]
(...)
local-infile = 0
secure_file_priv = /dev/null
(...)

(3)
Bliebe noch die Software-Verteilung… wenn in Puppet die Mysql-Klasse aufgerufen wird, muss diese von irgendwoher wissen, ob das Produkt am Zielsystem MariaDB oder Mysql ist. Die Lazy Variante wäre, auf das OS zu reagieren, weil Defaults in den Repos beispielsweise von Debian oder CentOS sich unterscheiden. Besser und sicherer ist natürlich ein echtes Flag.

Update zu (3):

Meine Variante für ein vom Mysql Daemon nicht verwendbares, aber stets existierendes Verzeichnis für beide Mysql-Varianten ist … “/root”

[mysqld]
(...)
local-infile = 0
secure_file_priv = /root
(...)

weiterführende Links:

  1. Golem: Lange bekannte MySQL-Lücke führt zu Angriffen (27.1.2019)
  2. secure_file_priv - mysql - Docs (en)
  3. secure_file_priv - mariaDB - Docs (en)