PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Demo Version für eine Webgestützte Applikation



michael.becker
10-04-2007, 11:29
Hallo,

ich habe gerade folgenden Fall:

Wir haben eine nette Applikation für eine Kunden geschrieben.

Sie baut auf Servlets, JSPs und Struts auf.

Ist eine Verwaltungssoftware für sehr grundliegende Sachen.

So weit, so gut.

Jetzt ist die Software so allgemein, das man sie an mehrere verschiedene Kunden verkaufen kann. Rechtlich ist es unsere Software und daher auch kein Problem.

Damit der Kunde sich die Software auch in Ruhe angucken kann, soll es eine 30 Tage Testversion geben, welche voll funktionstüchtig ist, aber nach 30 tagen nicht mehr nutzbar ist (es sei den, er kauft sie).

So, wie setze ich diese 30 Tage begrenzung nun bei einer Web-Applikation um?

Eintragungen in die registrierung sind ja nicht möglich, weil dieses ja ein Windows System vorraus setzten würde(was halt sehr ungewiss ist).

Eine "Property-Datei" schreiben ist auch mist:
Wenn die Version abläuft, muss derunrechtmässige Benutzer einfach alles aus dem wepapps verzeichnis löschen, das .war archiv neu entpacken und die Applikation läuft wieder.

Einen zentralen "Melde-Server" im Internet müssen wir ausschliessen, da die Software eher kritisch einzustufen ist und daher nur Intranet basiert läuft.

Unsere derzeitge lösung ist, bei auslieferung der Software, wird vom Berater jedesmal im Quellcode hart die ablauf zeit rein gecodet.

Derzeit mit wenigen Kunden noch realisierbar, aber auf Zeit absoluter mist.

Gibt es da Lösungsansätze, die mir da helfen könnten?

Vielen dank
Michael

peschmae
10-04-2007, 14:32
Das Problem ist halt dass jede simple Lösung ziemlich offensichtliche "Schwächen" hat - erst recht mit Java wo man sich nicht soo fest ins System reingraben kann (mal abgesehen davon dass so Sachen einfach unsympatisch sind ;)).
Hart reincoden - das kannst du ja auch automatisieren wenn man will - bist du da vergleichsweise auf der sichereren Seite.

Es sei denn du willst gleich ganz grosses Geschütz auffahren (flexlm oder so - aber das Zeugs kostet dann und ist unsympatisch).

MfG Peschmä

michael.becker
10-04-2007, 15:30
Naja, wir werden wohl dann erstmal bei der Hart-gecodeten Varaiante bleiben, vielen dank.

Ich habe aber noch einen andere Frage, die auf dieses Problem aufsetzt, aber nicht unmittelbar damit zusammen hängt:

Wir möchten gern, das die Testversion nach 30 Tagen rummeckert das sie abgelaufen ist und sich nach 33 Tagen selber löscht!

Wie komme ich nun an die benötigten Dateien?
Wie bekomme ich den Pfad zu dem Projekt?

Ich dachte wenn ich File file = new File("/"); mache, würde ich im Rootverzeichnis des Webservers sein(Sandbox usw).
Aber "/" ist bei mir c:\
(Das ganze nicht aus einem Servlet raus, sondern aus einer normalen Javaklasse innerhalb des Projektes).

Also aufbau derzeit:

Index.jsp prüft ob Demo angelaufen ist(mit hilfe einer Java-Klasse). Wenn dem so ist, wird eine andere Java-Klasse aufgerufen, die das löschen übernehmen soll.

peschmae
10-04-2007, 17:57
Eventuell mit ClassLoader.findRessource()? Hab ich zwar bisher afair nur fürs Auffinden von .gif Dateien, dürfte aber auch jars oder class-Files finden.

Wieso begnügst du dich nicht damit die Software zu deaktivieren?

MfG Peschmä

michael.becker
11-04-2007, 08:19
Naja, der Kunde für den die Software ursprünglich war, möchte gern, das alles radikal gelöscht wird, wenn die software nicht erworben wird.

Vieleicht bekomme ich ihn auch noch dahin, das deaktivieren auch ok ist, aber naja: "Kunde ist König, Kunde bringt das Geld".

Aber mal schauen, ob man ihn umstimmen kann.

Vielen dank erstmal für den Tip...werde ich gleich mal gucken.

michael.becker
11-04-2007, 09:50
Also wenn ich ClassLoader.getSystemResource("logon.jsp") mache, findet der nix.
Auch nicht logon.class oder ahnliches.


Weiß eine Klasse selbst nicht, wo sie liegt ??

anda_skoa
11-04-2007, 15:49
Geht natürlich auch nur im Ausnahmefall, daß die Software mit auchreichenden Rechte am Installationspfad ausgeführt wird und das Dateisystem auch Änderungen erlaubt.

Noch eine Anmerkung zum Ablaufcheck:
sowas ist meistens umsonst (im Sinne von nicht zielführend) weil man das leicht durch Ändern der Systemzeit umgehen kann.

Wenn es denn unbedingt sein muß, könnte man das Enddatum in einer kundenspezifischen verschlüsselten Datei speichern, die das Programm entschlüsseln kann.
Dann muß man nicht pro Kunde neu kompilieren.

Ciao,
_

peschmae
11-04-2007, 17:42
Naja, der Kunde für den die Software ursprünglich war, möchte gern, das alles radikal gelöscht wird, wenn die software nicht erworben wird.


Der Kunde? Jetzt hast du mich aber überrascht. :D



Noch eine Anmerkung zum Ablaufcheck:
sowas ist meistens umsonst (im Sinne von nicht zielführend) weil man das leicht durch Ändern der Systemzeit umgehen kann.


Natürlich. Wobei man das Datum schlauerweise mit einem Zeitserver vergleicht... - aber das ist natürlich eine unendlich lange Eskalationsspirale mit DRM, TCPA und darauf basierende Horrorszenarien am Ende der Geschichte.

MfG Peschmä