Für Indy .p12 zu .pem wandeln

20.06.2018 - Lesezeit: 2 Minuten

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;

Tags: Delphi-Programmierung Linux-Scripte

do-release-upgrade auf Kubuntu 18.04

29.04.2018 - Lesezeit: 2 Minuten

$ 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
Tags: Kubuntu Upgrade Kubuntu 18.04

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

26.04.2018 - Lesezeit: 3 Minuten

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: Javascript