Verwenden Sie JSL, um Skripte für die Add-In-Entwicklung zu verschlüsselnIch pflege ein paar Add-Ins und für einige möchte ich ein paar Variablen in den enthaltenen Skripten zur erstellten Zeit aktualisieren. Daher möchte ich ein Skript schreiben, das eine Skriptdatei öffnet, einige Verkettungen oder Ersetzungen vornimmt und dann die gesamte Datei verschlüsselt und an einem bestimmten Speicherort speichert (für eine Liste von Skriptdateien). Dann kann ich den brillanten Add-In Builder von verwenden @ Justin_Chilton um die Add-Ins zu erstellen. Ich kann keine JSL-Funktion zum Verschlüsseln eines Skripts finden. Gibt es sie oder kann sie mit einem anderen Dienstprogramm ausgeführt werden?
SkriptingBetreff: Verwenden Sie JSL, um Skripte für die Add-In-Entwicklung zu verschlüsselnDer Befehl "Skript verschlüsseln" kann mithilfe der Funktion "Hauptmenü ()" über JSL übergeben werden.
Main Menu( "encrypt script","Script 10" );
Dabei ist "Skript 10" der Name des zu verschlüsselnden Skriptfensters.
Als Nächstes wird jedoch das Dialogfenster angezeigt, in dem Sie nach den Kennwörtern gefragt werden, und ich glaube nicht, dass Sie dies wünschen
Betreff: Verwenden Sie JSL, um Skripte für die Add-In-Entwicklung zu verschlüsselnVerwenden Sie möglicherweise eine jsl / jmp / plaintext-Datei mit nur den Werten und include () oder open () oder loadtextfile () aus dem verschlüsselten Skript.
Eine kleine Datentabelle könnte eine gute Wahl für einen Satz benannter Parameter sein. Oder ein JSL-Ausschnitt, der zum Festlegen einiger Variablen enthalten ist. Eine Datei mit dem Namen X.jsl mit nur dem Text 42 kann geladen werden als parm = include ("x.jsl"); und Sie könnten kompliziertere Mengen mit einer Liste machen, wenn X {42, "Fred"} enthält, so etwas wie {parm, name} = include ("x.jsl");
Betreff: Verwenden Sie JSL, um Skripte für die Add-In-Entwicklung zu verschlüsselnDanke für die Vorschläge!
Die Idee ist, ein selbstzerstörendes Add-In zu erstellen, das eine Weile funktioniert und nach einiger Zeit nicht mehr funktioniert (IP schützen). Jedes Mal, wenn ich das Add-In erstelle, möchte ich ein neues Ablaufdatum, das im Skript fest codiert ist, damit dies nicht durch Bearbeiten eines Datumsfelds irgendwo beseitigt werden kann. Wenn ich das Ablaufdatum in eine externe Skriptdatei schreibe, muss ich das jedes Mal manuell verschlüsseln. Aus dem gleichen Grund ist eine Datentabelle keine Option.
Betreff: Verwenden Sie JSL, um Skripte für die Add-In-Entwicklung zu verschlüsselnetwas wie das?
mySecretKey = "The quick brown fox";
aa = [=> ];
aa["expiredate"] = "1jan2022";
aa["checkcode"] = Hex( Blob MD5( Char To Blob( mySecretKey || expiredate ) ) );
Save Text File( "$temp/license.txt", As JSON Expr( aa ) );
///////////////////
bb = Parse JSON( Load Text File( "$temp/license.txt" ) );
If( Hex( Blob MD5( Char To Blob( mySecretKey || bb["expiredate"] ) ) ) == bb["checkcode"],
Print( "ok: " || bb["expiredate"] ),
Print( "bad" )
);
Betten Sie den geheimen Schlüssel in das verschlüsselte Skript ein, damit Sie ihn überprüfen können.
Die Datei sieht aus wie
{"checkcode": "B7611676E821AA1ECC4CB5D6F02C6BA9", "abgelaufen": "1jan2022"}
Betreff: Verwenden Sie JSL, um Skripte für die Add-In-Entwicklung zu verschlüsselnVielen Dank @Craige_Hales Das ist eine interessante Lösung, die das Ablaufdatum und eine Prüfsumme einbettet.
Kleiner Fix für einen Codierungsfehler in Zeile 5:
mySecretKey = "The quick brown fox";
aa = [=> ];
aa["expiredate"] = "1jan2022";
aa["checkcode"] = Hex( Blob MD5( Char To Blob( mySecretKey || aa["expiredate"] ) ) );
Save Text File( "$temp/license.txt", As JSON Expr( aa ) );
///////////////////
bb = Parse JSON( Load Text File( "$temp/license.txt" ) );
If( Hex( Blob MD5( Char To Blob( mySecretKey || bb["expiredate"] ) ) ) == bb["checkcode"],
Print( "ok: " || bb["expiredate"] ),
Print( "bad" )
);
Betreff: Verwenden Sie JSL, um Skripte für die Add-In-Entwicklung zu verschlüsselnVielen Dank. Diese Variable war von einer ersten Version übrig geblieben, bevor mir klar wurde, dass es eine JSON-Lösung sein wollte.
Dies ist vergleichbar mit dem, was JMP mit einer PER-Datei (nicht JSON) macht; Sie können auch andere Variablen wie einen Benutzer- oder Site-Namen sperren, indem Sie sie der Verkettung hinzufügen.
Sie sollten ShowGlobals() verwenden, nachdem Sie Ihre App ausgeführt haben, um sicherzustellen, dass Ihr Geheimnis nicht zu leicht zu entdecken ist.