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.
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
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 -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
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ä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
Literatur