Jolla - CalDav Konto einrichten

Nachdem ich wegen eines VPN-Tunnels mein Netzwerk von 192.168.1 auf 192.168.80 um­stellen musste, hat mein Xperia X die Verbindung zum Radicale-CalDav-Server verloren.

Also habe ich auf dem XperiaX das CalDav-CardDav Konto gelöscht und neu erstellt. Leider hatte ich meine Einstellungen vergessen, deshalb hier die Einstellungen zum merken:

Benutzername: wnf
Passwort: Das Passwort, das im Radicale Server eingestellt ist
Serveradresse: Die Adresse, die auch im Thunderbird/Lig­htning benutzt wird
Pfad zum Adressbuch bleibt leer
Pfad zum Kalender bleibt leer

Für Indy .p12 zu .pem wandeln

Literatur

Zur Beachtung Unter Delphi 2009 funktioniert die unten angegebene Funktion testCert zwar, aber der Zugriff auf einen anderen Server lieferte nur 403 Forbidden. Unter Delphi 10 Tokyo funktioniert der Zugriff immer.

  • Delphi 2009: Indy version: 10.2.5
  • Delphi 10.2: Indy version: 10.6.2.5366

Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM

openssl pkcs12 -in zugang.p12 -out zugang.pem -nodes

in Delphi

  • me ist vom Typ TMemo
uses
  SysUtils, Classes, Forms, IdHTTP, IdSSLOpenSSL, idGlobal,
   Controls, ComCtrls, ToolWin, StdCtrls;

function TForm1.testCert: boolean;
var IdHTTP1 : TIdHTTP;
    Id_HandlerSocket : TIdSSLIOHandlerSocketOpenSSL;
    cert:string;
    s : string;
begin
    try
      me.Clear;
      IdHTTP1 := TIdHTTP.Create( self );
      IdHTTP1.Request.BasicAuthentication := False;
      IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
      Id_HandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create( IdHTTP1 );
      cert := 'zugang.pem';
      Id_HandlerSocket.SSLOptions.CertFile := cert; (* PEM contain both CERT and Key *)
      Id_HandlerSocket.SSLOptions.KeyFile := cert;

      Id_HandlerSocket.SSLOptions.Mode := sslmClient;
      Id_HandlerSocket.SSLOptions.Method := sslvSSLv23;
      IdHTTP1.IOHandler := Id_HandlerSocket;

      me.Add( Id_HandlerSocket.SSLOptions.CertFile );

      s := IdHTTP1.Get( 'https://www.scriptjunkie.us/auth/verifycert' );

      me.Add( s );
      Result:=True;

    finally
      Id_HandlerSocket.Free;
      IdHTTP1.Free;
    end;
end;

do-release-upgrade auf Kubuntu 18.04

$ do-release-upgrade -m desktop -f DistUpgradeViewKDE -d

Nebenwirkungen

  • yakuake hat seine Konfiguration vergessen
  • pip ist auf Version 9.x zurückgesetzt
$ python3 -m pip --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
$ python3 -m pip install --upgrade pip
$ python3 -m pip --version
pip 10.0.1 from /home/wnf/.local/lib/python3.6/site-packages/pip (python 3.6)
  • Firebird SQL Server ist nur in Version 3.0 verfügbar, so dass die Datenbanken über die Datensicherung neu erzeugt werden müssen.
fdb.fbcore.DatabaseError: ('Error while connecting to database:
 - SQLCODE: -820
 - unsupported on-disk structure for file /var/lib/firebird/2.5/data/datenbank.fdb;
   found 11.2, support 12.0
 - IProvider::attachDatabase failed when loading mapping cache', -820, 335544379)
  • Lazarus und libfbclient
Can not load default Firebird clients ("libfbclient.so.2.5.1" or "libgds.so" or "libfbembed.so.2.5"). Check your installation.

Durch setzen eines symbolischen Links kann das Problem gelöst werden:

$ cd /usr/lib/x86_64-linux-gnu/
$ sudo ln -s libfbclient.so.3.0.2 libfbclient.so.2.5.1

Der Zugriff von externen Rechnern ist standardmäßig nicht möglich. Deshalb muss die Datei /etc/firebird/3­.0/firebird.conf editiert werden:

alt:

RemoteBindAddress = localhost

neu:

RemoteBindAddress =

danach den Firebirrd-Server neu starten:

$ sudo service firebird3.0 restart

Javascript Tabelle füllen und beim Scrollen Datensätze nachladen

Literatur

<!DOCTYPE html>
<html lang="de">
<head>
  <meta http-equiv="X-UA-Compatible" content="IE=9">
  <meta charset="utf-8">
  <meta name="author" content="wlsoft">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <meta name="robots" content="index,follow">
  <title>Datens&auml;tze beim scrollen nachladen</title>
  <link rel="stylesheet" href="css/wnfportal_2.css" type="text/css"/>
  <script src="js/jquery-2.1.1.min.js" type="text/javascript"></script>

  <script type="text/javascript">

  var QUERY_LISTEA = 'jsonListEASkip';
        var listeaJSON = {};
  var aSkip = 0;
  var aFirst = 20;
  var aSumme = 0;

        function getfirst_ea(){
                aSkip = 0;
                $.getJSON(QUERY_LISTEA+'/'+aFirst+'/'+aSkip, '', jsonEintragen);
        }

        function getnext_ea(){
                $.getJSON(QUERY_LISTEA+'/'+aFirst+'/'+aSkip, '', jsonEintragen);
        }

  function addZeile(aDatum,aBez,aBetrag) {
    var tableRef = document.getElementById('table_EA').getElementsByTagName('tbody')[0];
    // Insert a row in the table at the last row
    var newRow   = tableRef.insertRow(tableRef.rows.length);
    // Insert a cell in the row at index 0
    var newCell  = newRow.insertCell(0);
    // Append a text node to the cell
    var newText  = document.createTextNode(aDatum);
    newCell.appendChild(newText);

    var newCell  = newRow.insertCell(1);
    var newText  = document.createTextNode(aBez);
    newCell.appendChild(newText);

    var newCell  = newRow.insertCell(2);
    var newText  = document.createTextNode(aBetrag);
    newCell.appendChild(newText);
  }

  function editFuss(aAnzahl,aBez,aBetrag) {
    document.getElementById('foot_EA_0').innerHTML=aAnzahl;
    document.getElementById('foot_EA_1').innerHTML=aBez;
    document.getElementById('foot_EA_2').innerHTML=aBetrag;
  }

  function jsonEintragen(aData) {
                if (!$.isEmptyObject(aData)){
                        console.log(aData);
                  for (var i = 0; i < aData.length; i++) {
                    aBetrag=parseFloat(aData[i].betrag);
        addZeile(aData[i].datum,aData[i].kurz,aBetrag.toFixed(2));
        aSumme += aBetrag;
                }
                        aSkip += aFirst;
                        console.log(aFirst,aSkip);
      editFuss(aSkip,'Summe',aSumme.toFixed(2));
                }
        }

  function datenNachladen(event) {
    //Nachladen erst, wenn das Ende erreicht wird
    if($(window).scrollTop() == $(document).height() - $(window).height()) {
      console.log('Nachladen ...');
      getnext_ea();
    }
  }

  function dokumentGeladen(event) {
    getfirst_ea();
  }

  document.addEventListener('DOMContentLoaded', dokumentGeladen, false);
  document.addEventListener('scroll', datenNachladen)

  </script>
</head>
<body>
<h1 id="listeaHeader">Einnahmen/Ausgaben</h1>
<table id="table_EA">
  <thead>
  <tr>
    <th>Datum</th>
    <th>Bezeichnung</th>
    <th>Betrag</th>
  </tr>
  </thead>
  <tbody>
  </tbody>
  <tfoot>
    <th id="foot_EA_0"></th>
    <th id="foot_EA_1">Bezeichnung</th>
    <th id="foot_EA_2"></th>
  </tfoot>
</table>
</body>
</html>
Tags: 

CLT 2018

https://chemnitzer.linux-tage.de/…a78627d053e2

CLT = 2 Tage mit besuchten 8 Vorträgen für 10 Euro

Mein verlinkter Stichwortzettel

1. Linux-Server absichern

2. Container-Docker

3. MQTT

4. IoT-Sicherheit

5. Hardware-Erstellung (bestückte Leiterplatten)

  • KrCad
  • iOM
  • Bill of Material

6. Rescue-Pi

  • Finnix
  • Bananapi 1GBit LAN (50 Euro)
  • SD-Card 32 GB (10 Euro)
  • Gehäuse (9 Euro)

7. ESP32

8. App

Tags: 

Seiten