Thread Lizenzierung in Perl (17 answers)
Opened by YAPD at 2015-11-18 00:17

YAPD
 2015-11-23 23:08
#183041 #183041
User since
2015-09-20
146 Artikel
BenutzerIn

user image
Hi hlubenow,

entschuldige, dass ich dir erst jetz schreibe, aber das lag daran,
dass ich die Struktur meines SSL - Scripts nochmal überdacht habe
& nun mit einem anderen Ansatz ( beinahe ) glücklich bin.

Das ist das Server - Script :

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/perl

# -----------------------------------------------------------------------------
use strict;
use warnings;

use IO::Socket::SSL;

# -----------------------------------------------------------------------------

# SSL - Server

my $SSL_Server = IO::Socket::SSL -> new(

# Initialisierung der Server - Adresse & des Ports

LocalAddr => '127.0.0.1' ,
LocalPort => 8080 ,
Listen => 10 ,

# Zertifikate für die Authentifizierung

SSL_cert_file => 'www.meinedomain.de.pem' ,
SSL_key_file => 'www.meinedomain.de.key' ,

) or die "failed to listen: $!";

# -----------------------------------------------------------------------------

# Akzeptiere Clients

while( 1 )
{
my $Akzeptierung_Verbindung_Clients = $SSL_Server -> accept or die "Fehler bei der Akzeptierung des Handshakes : !";

my $client_address = $Akzeptierung_Verbindung_Clients -> peerhost();
my $client_port = $Akzeptierung_Verbindung_Clients -> peerport();

print "Eingehende Verbindung : $client_address:$client_port" , "\n";

my $data = "";

$Akzeptierung_Verbindung_Clients -> read( $data , 1024 );

my @Pruefung_Lizenzierung = split( / , / , $data );

print "Empfangene Werte : $data" , "\n";

print "Ergebnis - Array 0 : $Pruefung_Lizenzierung[ 0 ]" , "\n";
print "Ergebnis - Array 1 : $Pruefung_Lizenzierung[ 1 ]" , "\n";
print "Ergebnis - Array 2 : $Pruefung_Lizenzierung[ 2 ]" , "\n";

$data = "OK";
$Akzeptierung_Verbindung_Clients -> print( $data );

shutdown( $Akzeptierung_Verbindung_Clients , 1 );
}

$SSL_Server -> close( );

# -----------------------------------------------------------------------------



Und das ist das Client - Script :

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl

# ------------------------------------------------------------------------------------------

use strict;
use warnings;

# ------------------------------------------------------------------------------------------

&SSL_Verbindung_Authentifizierung( );

# ------------------------------------------------------------------------------------------

sub SSL_Verbindung_Authentifizierung {

use IO::Socket::SSL;

my $SSL_Verbindung_Pruefung_Typ = "Enterprise";
my $SSL_Verbindung_Pruefung_Bezeichnung = "Muster GmbH";
my $SSL_Verbindung_Pruefung_Lizenz = "F83R - T9SD - 5SI2 - U24T";

my $SSL_Clients = IO::Socket::SSL -> new( '127.0.0.1:8080' ) or die "Fehler bei der SSL - Verbindung !";

my $size = $SSL_Clients -> print( "$SSL_Verbindung_Pruefung_Typ , $SSL_Verbindung_Pruefung_Bezeichnung , $SSL_Verbindung_Pruefung_Lizenz" );
print "Laenge des Pakets : $size" , "\n";

shutdown( $SSL_Clients, 1 );

my $response = "";

$SSL_Clients -> read( $response , 1024 );
print "Rueckmeldung : $response" , "\n";

}

# ------------------------------------------------------------------------------------------

1;


Das ist das Grundprinzip meiner SSL - Kommunikation und die Scripts sind
( wie immer mit selbst erstellten Zertifkaten und Tk Modul ) lauffähig. Getestet !. Die GUI - Oberfläche habe ich ausgespart.

Damit frage ich im Server - Script auf dem SQL - Server die Lizenz ab
& gebe das Ergebnis an das Client - Script zurück. Damit weiss meine
Anwedung ob die Lizenz stimmt.

Das Script ist so im Grunde genau was ich mir vorstelle. Nach der Eingabe von Benutzer und Lizenz - Key gibt das Client Script die Werte an das Server Script weiter , dieses macht die SQL - Abfrage auf die DB ( nicht in diesem Thread ) & gibt das Ergebnis ( "Lizenz OK | Lizenz NOT OK" ) wieder an den Client.

Allerdings ist meine weitergehende Frage folgende :

Was mache ich nun mit dem Ergebnis ?

Ich meine, dass ich das Ergebnis der Lizenzierung ja irgendwo in
meiner Anwendung verankern muss. Mir fällt dazu bisher nur die
Speicherung einer externen Datei ein, was sicherheitstechnisch
nicht meine bevorzugte Methode wäre.

Mein weiterer Plan ist, den Titel des Main - Fenster auf
"UNREGISTERED" zu setzen bis die Lizenzierung aktiviert
ist und diesen per "configure()" Kommando zu aendern.
Allerdings müsste meine Anwendung ja beim nächsten Start
merken, dass sie bereits lizenziert ist.

Hast du / Habt ihr hier vielleicht eine Idee ?

Idee:

Was ist wenn ich per SSL Verbindung gleich beim Start den
Status der Lizenz auslese und mit der Lizenzierung einfach
den Wert des Fekdes "Status" ändere, etwa von "Registrierung"
in "Aktiv" ? Ich teste es & gebe eine Rueckmeldung.

Vielen Dank & Viele Grüße
YAPD
Last edited: 2015-11-23 23:46:15 +0100 (CET)
Yet Another Perl Developer

View full thread Lizenzierung in Perl