Jan Trippler wrote:
Wenn Du mal genauer schilderst, was Du vorhast, lässt sich vielleicht ein einfacherer Weg finden.
Jan
Hallo Jan, du hast natuerlich recht mit dem Wrapper. Eigentlich wollte ich mein Vorhaben nicht breittreten, um unnoetigen Diskussionen aus dem Weg zu gehen, aber ich glaub das eine genauere Schilderung doch notwendig ist. Prinzipell geht es um einen Schutzmechanismus, um Perl-Code wirksam zu schuetzen, damit dieser nicht eingesehen werden kann. Unter Perl kann dazu auch das C-Backend oder der Byte-Coder benutzt werden, jedoch besteht da bei umfangreichen Perl-Programmen, wo etliche Module geladen werden ueberhaupt keine Chance ein lauffaehiges Programm zu erstellen, zumindest sind meine Bemuehungen gaenzlich gescheitert.Zudem wird bei erfolgreicher Uebersetzung nur experimenteller Code generiert. Also hab ich mir ein C-Programm geschrieben, mit dessen Hilfe ich verschluesselte Perl-Programme ausfuehren kann. Das heist, ich habe immer ein Programm-Paar: "Programm" -> das C-Programm "Programm.dat" -> der verschluesselte Perl-Code Wenn nun das "Programm" aufgerufen wird, liest es die gleichnamige Datei mit der Endung ".dat" ein, entschluesselt den Code und sendet diesen an den Perl-Interpreter. Fuer die Pipe nutze ich im C-Programm die Funktion "popen()". Bevor dies geschieht, wird der Perl-Interpreter untersucht, ob er es auch wirklich ist, um nicht einem gefaelschten Programm auf den Leim zu gehen. Aus dem gleichen Grund werden auch keinerlei externen Komandos oder Programme aufgerufen, dies ist alles im C-Programm implementiert. Die einzige Moeglichkeit die sich vieleicht eroeffnet, ist ueber den Shard-Memory Bereich an den entschluesselten Datenstrom zu gelangen, der ueber "popen()" benutzt wird. Man kann nun das C-Programm aufrufen, als waere es das Perl-Programm, und dabei spielt es keine Rolle ob dies mit Kommandozeilen-Argumenten oder als CGI-Programm geschieht. Dies funktioniert bei mir schon seit laengerem ohne jegliche Probleme. Nun der Schoenheitsfehler: Wenn das C-Programm als CGI-Programm aufgerufen wird, und Furmulardaten mit der standardmaesigen Sendemethode "GET" uebermittelt werden klappt noch alles. Bei groesseren Formularen wird aber fuer gewoehnlich die Sendemethode "POST" benutzt, wobei die Formulardaten dann dem CGI-Programm auf "STDIN" uebermittelt werden. Nun ist das C-Programm aber nicht das eigentliche CGI-Programm, sondern der auszufuehrende Perl-Code. Nun suche ich nach einer Moeglichkeit, nach der das Perlprogramm auf die Formulardaten zugreifen kann, die eigentlich auf der STDIN des C-Programms lauern. So, nun habe ich hoffentlich alle Klarheiten beseitigt :-) Erich