Chemnitzer Linux Tag 2019

    Leider etwas früh muss ich dieses Jahr die Chemnitzer Linux Tage schon gegen Mittag verlassen. Wie auch schon das letzte Jahr eine sehr gelungene Veranstaltung. Für mich wäre die Veranstaltung ohne einen eigenen Vortrag zu weit aber wenn man “in der Nähe” wohnt auf jeden Fall einen Besuch wert.

    Zu meiner Überraschung wurden im Auswahlverfahren beide meiner Vortragvorschläge angenommen und auf den Sonntag morgen gelegt. Es ging um DSGVO IT Sicherheitsdokumentation mit Verinice und Backups im Netzwerk mit restic.

    Es war ein wenig anstrengend aber hat wieder viel Spass gemacht.


    17.3.19
    Weitere Beiträge zu: Konferenzen ChemnitzerLinuxTage

    Friday for Future

    Hier werden gerade Plakate für FridaysForFuture gemalt.

    Und ansonsten habe ich diesem Tweet nichts hinzuzufügen

    14.3.19
    Weitere Beiträge zu: FridayForFuture

    Asciidoctor: Texte mit Bedingungen

    Asciidoctor ist inzwischen mein Standardwerkzeug wenn es um Dokumentationen geht.

    Was mir bisher immer Kopfzerbrechen bereitet hat ist das man interne Dokumentationsanteile von den “Kundendokumentationen” getrennt aufbereitet muss.

    Bei Asciidoctor kann man Texte in Abhängigkeit von Variablen einbinden. Zum Beispiel so

      ifdef::internal[]
      include::internal-intro.adoc[]
      endif::internal[]
    

    Und dann kann man durch

      asciidoctor-pdf index.adoc -a internal=1
    

    ein PDF erstelle das die internen Anteile dabei hat und mit

      asciidoctor-pdf index.adoc
    

    das externe Dokument erstellen. Und man kann beide Informationsarten in einem Dokument zusammenpflegen.

    8.3.19
    Weitere Beiträge zu: asciidoctor

    Windows Virtualbox VMs in Proxmox

    Microsoft bietet auf dieser Seite virtuelle Maschinen von Windows 7 und Windows 10 mit verschiedenen IE und Edge Browserversionen zum testen der Browser an. Leider ist dort keine Format für Proxmox enthalten. Auf Basis dieser und dieses Dokumentes konnte ich ein VirtualBox Image importieren. Hier meine Notizen (wie immer Use at your own risk)

    Image auf den Server kopieren, einloggen und auspacken

       scp -P 22 IE11.Win7.VirtualBox.zip root@proxmox-server.ip:/root
       ssh proxmoxhos-server.ip
       unzip IE11.Win7.VirtualBox.zip
    

    Wenn ich das richtig verstanden habe ist diese ausgepackte ova Datei ein Tarfile aus “Hardwarebeschreibung” und “Festplatte”. Also auspacken

      tar -xf IE11\ -\ Win7.ova
    

    Aus der “PC” Beschreibung kann man erkennen wir groß diese Platte ist

      <Info>List of the virtual disks used in the package</Info>
        <Disk ovf:capacity="42949672960" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#strea
      mOptimized" vbox:uuid="c523f6ad-edc8-4652-8f86-959e366ab2ac"/>
    

    Also: 42949672960 byte = 42,94967296 GB

    In Proxmox haben ich dann eine neue VM eingerichtet mit einer Festplatte dieser Größe. Die VM hatte die ID 110. Dann musste ich herausfinden wo die Festplatte von diesem neuen Rechner liegt:

        more /etc/pve/nodes/proxmoxserver/qemu-server/110.conf
        bootdisk: ide0
        cores: 1
        ide0: local-lvm:vm-110-disk-1,size=43G
        ide2: none,media=cdrom
        memory: 4512
        net0: e1000=8A:63:4A:B8:74:9B,bridge=vmbr0
        numa: 0
        ostype: win10
        scsihw: virtio-scsi-pci
        smbios1: uuid=a0f26105-45f5-4b0f-acf7-ee1cca4f1ec0
    

    Das mit den Logischen Volumes habe ich nicht zu Ende verstanden aber so bekommt man den Dateinamen

         lvdisplay
        .....
        .....
        --- Logical volume ---
          LV Path                /dev/pve/vm-109-disk-1
          LV Name                vm-109-disk-1
    

    Jetzt überschreibe ich den dort angegebenen Namen mit der konvertierten Version meines Images von Microsoft.

        qemu-img convert -p -f vmdk IE11\ -\ Win7-disk001.vmdk -O raw /dev/pve/vm-110-disk-1
    

    Und dann konnte ich in das Windows 7 Image booten und es sieht gut aus.

    7.3.19
    Weitere Beiträge zu: Grunt Bootstrap

    Bootstrap mit sass und grunt

    Für unseren Webshop möchte ich langfristig auf eine neue Bootstrapversion umstellen und ein neues Template bauen. Ich arbeite zwar schon länger mit Grunt aber nur in Teilbereichen. Für die neuen Projekte möchte ich das mit npm noch etwas besser automatisieren. Vor allem das manuelle Downloaden und Anpassen der Abhängigkeiten soll entfallen.

    Basis für meine Notizen sind dieses und dieses Dokument und wie immer gilt. Das sind meine Notizen und kein Bulletproof Tutorial

    Wir starten also im Rootverzeichnis des Webprojekt und initialisieren unseren npm

    npm init vi package.json “dependencies”: { “bootstrap”: “^4.2.1”, “jquery”: “^3.3.1”, “popper.js”: “^1.14.6” }

    Damit haben wir eine Art “Inhaltsverzeichnis” eröffnet auf dessen Basis der npm Packete installiert. Jetzt kann ich einfach Boostrap mit allen Abhängigkeiten installieren.

      npm install       
      shop-rusticus-template@1.0.0 /home/hbauer/Dokumente/rusticus/shop/shoproot/templates/tpl_modified
      ├── bootstrap@4.3.1
      ├── jquery@3.3.1
      └── popper.js@1.14.7
    
      ls node_modules
      bootstrap  jquery  popper.js
    

    Zu Beginn brauche ich erst mal nur die Werkzeuge die ich zum zusammenstellen der Bootstrap CSS Dateien aus den sass Quellen benötige.

     sudo npm install grunt -save-dev
     sudo npm install grunt-contrib-sass -save-dev
     sudo npm install grunt-contrib-watch -save-dev
    

    Dann erstelle ich die Steuerungsdatei für Grunt. Hier werden erst einmal nur die saas Elemente eingebaut und getestet. Die anderen Grunt Funktionen übernehme ich von meinen alten Beispielen. Hier geht es mir vor allem um das Zusammenspiel der Bootstrap Elemente die über npm installiert werden und meine eigenen Notwendigen Anpassungen.

       module.exports = function(grunt) {
           grunt.initConfig({
               sass: {
                   dev: {
                       options: { style: 'expanded',
                                 loadPath: ['node_modules/bootstrap/scss','sass']},  //Wichtig
                       files: { 'mystyle.css': 'sass/mystyle.scss' }
                       },
                   dist: {
                       options: { style: 'compressed',
                           loadPath: 'node_modules/bootstrap/scss' },
                       files: {
                           'mystyle.css': 'sass/mystyle.scss' }
                   }
               },
               watch: {
                   sass: {
                       files: 'sass/*.scss',
                       tasks: ['sass:dev']  } }
           });
           grunt.loadNpmTasks('grunt-contrib-sass');
           grunt.loadNpmTasks('grunt-contrib-watch');
           grunt.registerTask('buildcss', ['sass:dist']);
           grunt.registerTask('devcss', ['sass:dev']);
       };
    

    Im Verzeichniss sass/ möchte ich alle meine Anpassungen halten. Dazu zählen die Anpassungen in den Variablen und gegebenenfalls eine reduziete bootstrap.scss aus der nicht gewünschte Elemente auskommentiert worden sind. Wichtig ist das wir das !default am ende entfernen (Die Änderung in der _bootstrap_variables_override ist nur ein Testbeispiel um zu sehen das es geht. )

     mkdir sass
     vi _bootstrap-variables-override
        $headings-font-weight: 1800;
    
     vi sass/mystyle.scss
         @import "bootstrap-variables-override";
         @import "functions";
         @import "variables";
         @import "mixins";
         @import "root";
         @import "reboot";
         @import "type";
         @import "images";
         @import "code";
         @import "grid";
         @import "tables";
         @import "forms";
         @import "buttons";
         @import "transitions";
         //@import "dropdown";
         @import "button-group";
         @import "input-group";
         @import "custom-forms";
         ....
         ...
    

    Jetzt mal starten und dann schauen wir ob die geänderte Schriftform für die Überschriften im CSS ankommt.

       grunt sass:dev                            
       Running "sass:dev" (sass) task
    
       Done.
    
       grep -b3 h1 mystyle.css
    
            .h1, .h2, .h3, .h4, .h5, .h6 {
              margin-bottom: 0.5rem;
              font-weight: 1800;
              line-height: 1.2;
            }
    

    Jetzt kann ich mit einem Werkzeug (npm) sowohl meine Gruntkomponenten als auch meine Abhängigkeiten installieren, updaten und dann direkt meine produktiven Dateien bauen. In meiner Versionskontrolle brauche ich nur die Dateien

    • Gruntfile.js
    • package.json
    • sass/*

    zu halten.

    2.3.19
    Weitere Beiträge zu: Grunt Bootstrap

    Debian: sudo unable to stat /etc/sudoers Permission denied

    Bei Debian 9 auf dem Alix Rechner habe ich heute nach der Installation von sudo die folgende Fehlermeldung beobachtet.

     sudo su -
     sudo: unable to stat /etc/sudoers: Permission denied
     sudo: no valid sudoers sources found, quitting
     sudo: unable to initialize policy plugin
    

    Nach einem Hinweis von hier ging es dann nach folgendem Befehl

     ls -ld /
     drwxr--r-- 21 hbauer hbauer 4096 Jan 26 10:38 /
     chmod 755 /
     ls -ld /
     drwxr-xr-x 21 hbauer hbauer 4096 Jan 26 10:38 /
     sudo su -
    

    Offensichtlich sind bei der Installation über den oben genannten Weg die Root Rechte etwas falsch gelaufen.

    25.2.19
    Weitere Beiträge zu: sudo debian

    Topfsecret beginnt zu wirken

    Wenn schon 2 Wochen nach Beginn der Initiative TopfSecret die ersten Verbandsvertreter ein Verbot fordern dann sind wir auf dem richtigen Weg.

    Der Geschäftsführer des Hotel- und Gastronomieverbands Hessen sagt in der FAZ: wir Bürger sind zu doof die Berichte zu verstehen:

    Die Prüfberichte der Lebensmittelkontrolleure sind nicht dazu gedacht, öffentlich gemacht zu werden. Deshalb sind sie nicht in einer Sprache verfasst, die auf uns Verbraucher zugeschnitten ist. Sie geben uns keine Informationen an die Hand, aufgrund derer wir einschätzen könnten, wie es um die Hygiene in einem Betrieb wirklich bestellt ist.

    Und der Bund für Lebensmittelrecht und Lebensmittelkunde e. V. fordert

    Individuell beantragte Behördenauskünfte nach VIG und behördliche Veröffentlichungen im Internet sollten strikt unterschieden werden. Der Gesetzgeber sollte diese Unterscheidung dringend im Wortlaut des VIG klarstellen

    Man ist übrigens verpflichtet seiner Weitergabe des Namens an den betroffenen Betrieb zuzustimmen. Was an sich auch schon ein Unding ist. Wenn ich als Bürger eine berechtigte Auskunft verlange warum muss der Staat das in der Welt bekanntgeben dürfen.

    Also: Weitere Anfragen stellen Erst wenn es weniger Aufwand ist die Berichte direkt zu veröffentlichen als individuelle Anfragen zu beantworten wird sich daran etwas ändern das mit unserem Steuergeldern erstellte Gutachten vor uns geheim gehalten werden.

    24.2.19

    Amazon: Festplattenversand per Papiertüte

    Ich bin ja auch sehr stark für das Sparen von Verpackungsmaterial.

    Aber eine 2TB HDD Festplatte verschickt man nicht einfach in einer Papiertüte.

    Amazon Festplatte mit Papiertüte versendet

    Der Ersatz kam auch vernünftig verpackt in einem Pappkarton mit Luftpolsterfolie

    22.2.19
    Weitere Beiträge zu: Amazon

    modified Shop: zusätzliche Variablen anzeigen

    In einem modified Webshop soll die Möglichkeit eingerichtet werden eine zusätzliche Variable für einen Kategorie einzugeben und im Frontendtemplate zu verwenden. Basis für die Vorgehensweise war dieses etwas veraltete Dokument und ein gutes Stück Hilfe von dem Forenmitglied awids.

    Die hier vorgestellte Vorgehensweise müsste updatesicher sein.

    Zuerst müssen wir die Datenbank darauf vorbereiten ein neues Feld in den Kategorie Definitionen zu erhalten

    mysql -u root -p
    use shop;
    ALTER TABLE `categories`  ADD `categories_youtube` VARCHAR( 30 ) NOT NULL;
    

    Dann brauchen wir die notwendigen Anpassungen für den Adminbereich

    1. Ein Feld in das wir die Werte eingeben könnten

      vi admin/includes/extra/modules/new_category/my-categories-youtube.php
       <table class="tableInput border0">
       <tr>
       <td><span class="main">youtubeid</span></td>
       <td><span class="main"><?php echo  xtc_draw_input_field('categories_youtube', $cInfo->categories_youtube); ?></span></td>
       </tr>
       </table>
      
    2. Die Definition das dieses Feld auch abgespeichert und wieder “ausgegraben wird “

      vi admin/includes/extra/modules/add_db_fields/my-categories-youtube.php

    3. Die Variable soll aus der Datenbank geholt werden

    Jetzt müssen wir dafür sorgen das wir diese Daten auch in einem Frontendtemplate verwenden können

      vi includes/extra/define_add_select/my-categories-youtube.php
         <?php $add_select_categories[] = 'c.categories_youtube'; ?>
    
    1. Dieser Wert wird einer Smarty Variable zugewiesen

      vi includes/extra/modules/categories_listing/categories_smarty/my-categorie-youtube.php assign('CATEGORIES_YOUTUBE', $category['categories_youtube']); ?>

    Jetzt kann man die Variable in einem product_listing verwenden und damit die gewünschten Dinge machen.

    Ob es klappt kann man dann in der Datenbank nachschauen

      select categories_id,categories_youtube from categories where categories_youtube != ' ';
      +---------------+--------------------+
      | categories_id | categories_youtube |
      +---------------+--------------------+
      |           27  | XRXXXXXXvF4        |
      |           31  | EXXXXXXXmDY        |
      +---------------+--------------------+
      2 rows in set (0.00 sec)
    
    18.2.19
    Weitere Beiträge zu: modified

    pfSense: Sicherheitsrelevante Updates einspielen

    Heute morgen erreichte mich die Nachricht das es ein kritisches Update für pfsense gibt. Da es auch einen Zugriff auf die Konsole erfordert hier meine Dokumentation der Schritte als zukünftige Checkliste.

    1. Prüfen der Dokumentation für den Reinstall von USB Stick wenn etwas schief geht. Da ich eine SG-2440 habe ist das etwas genauer geprüft da der Zugriff nur über eine serielle Konsole geht.

    2. Download / Verifikation der aktuellen aktuellen Firmware für mein Gerät von hier

    3. Backup der Firewall Konfiguration verschlüsselt mit einem starken Schlüssel von einem Passwortmanager.

    1. Update über die Oberfläche


    Das ganze geht recht schnell und dann kommt der Reboot.


    Der Reboot hat auf meinem Gerät ungefähr 3 Minuten gedauert. Danach konnte ich mich wieder anmelden. Im Blogpost wurden noch Schritte beschrieben die man über die Konsole ausführen sollte. Es war mir nicht ganz klar ob diese Schritte notwendig waren oder ob die Änderungen schon im letzten Update enthalten waren.

    If you are running a version of pfSense prior to 2.4.4-p2 simply update to that version to benefit from these changes.

    Den Zugriff auf die Firewall via SSH muss man gegebenenfalls erst freischalten. Ich empfehle immer einen Login nur mit SSH Key und einen nicht Standardport. Die meisten werden das nicht haben und sich mit dem Kennwort über Port 25 anmelden können.

    Dann mit Putty oder über einen Terminal anmelden und den geforderten Befehl angeben. Aber die Pakete waren offensichtlich schon aktuellen

    16.2.19
    Weitere Beiträge zu: pfsense

    Gefängniszellen brauchen keine Rauchmelder

    Ich habe mich schon häufiger gefragt wie es immer wieder zu den Toten durch Brände in den Gefängnissen kommen kann. Wir haben doch inzwischen eine Rauchmelderpflicht.

    Eine FragdenStaat Anfrage brachte mir jetzt eine Erklärung.

    Nach Landesbauordnung NRW sind für Schlafräume Brandmelder verpflichtend. In Justizvollzugsanstalten scheinen Brandmelder in den Schlafräumen der Häftlinge nicht vorgeschrieben zu sein.

    Die Rauchmelderpflicht gibt es nur für Wohnungen. Und Gefängnisszellen sind keine Wohnungen.

    Demnach wird der Begriff Wohnnutzung durch die Kriterien einer auf Dauer angelegten Häuslichkeit, der Eigengestaltung der Haushaltsführung und des häuslichen Wirkungskreises sowie der Freiwilligkeit des Aufenthaltes definiert. Diese Voraussetzungen liegen bei der Unterbringung in einer Häftlingszelle nicht vor.

    Schon pervers was sich manche Behörden so ausdenken.

    10.2.19
    Weitere Beiträge zu: Rauchmelder Logik Gesetz

Dies ist ein privater Blog von Hagen Bauer- berufstätiger Vater, Ehemann, Naturliebhaber, Läufer, Zelter, technikverliebt.


Creative Commons License
This blog is licensed under a Creative Commons License