Ich müsste manchmal schnell eine .t3x Datei lokal entpacken, um die PHP-Dateien einzusehen und Feedback zu geben.
Daher suche ich nach einem Entpacker, am sinnvollsten wohl als PHP-Skript. Oder nach Infos zum Schreiben eines solchen Entpackers.
Ich müsste manchmal schnell eine .t3x Datei lokal entpacken, um die PHP-Dateien einzusehen und Feedback zu geben.
Daher suche ich nach einem Entpacker, am sinnvollsten wohl als PHP-Skript. Oder nach Infos zum Schreiben eines solchen Entpackers.
Habe Probleme damit. Ich lese die .t3x Datei ein:
function read_t3x() { // read file $string = ""; } return $string; }
Anschließend jage ich sie durch die Originalfunktion:
require("class.em_terconnection.php"); $tmp = SC_mod_tools_em_terconnection::decodeServerData($this->t3xString);
Liefert:
Habe auch schon versucht, die .t3x binär einzulesen, aber das brachte dasselbe Ergebnis.
Die .t3x Datei besteht aus "zusammengeklebten" Teilen, die durch Doppelpunkte getrennt werden. Die Funktion `decodeServerData()` zerhackt den Inhalt. So sieht eine .t3x Datei aus:
[HTML]8a584ad8b44bfa81c9d1c73469229c1d:gzcompress:Base64-codierte Infos:Daten[/HTML]
Als Array könnte man das so abbilden:
$array = ( "MD5-Hash", "Kompressionsmethode", "Base64-codierte Infos", "Daten" )
Die Funktion `decodeServerData()` macht folgendes:
Der Fehler tritt bei jeder .t3x Datei auf. Jede davon lässt sich aber in TYPO3 importieren und installieren. Es muss daran liegen, wie die Datei eingelesen wird. [b]Hat jemand dazu einen Tipp?[/b]
Hallo droptix,
probiers doch mal so:
require("class.em_terconnection.php"); $tmp = SC_mod_tools_em_terconnection::decodeExchangeData($file);
Grüße Luwo
Vielen vielen Dank!!! Hätte nicht gedacht, dass ich das Thema nochmal aufrolle, aber dank dir kommt hier gleich eine Komplettlösung für alle, die das auch brauchen:
<?php require("class.em_terconnection.php"); // Settings. $extFile = "file.t3x"; $unpackDir = "extension"; // Start unpacking. $ext = SC_mod_tools_em_terconnection::decodeExchangeData($fileContent); function autocreate_subdirs($dir) { foreach ($subdirs as $subdir) { $path[] = $subdir; } else { } } } } // Unpack extension(s). foreach ($ext as $e) { if ($e["EM_CONF"]) { // Create unpack directory. } // Create directories. foreach ($dirs as $dir) { // Start in unpack directory if any. if ($unpackDir) { $dir = $unpackDir."/".$dir; } autocreate_subdirs($dir); } // Write files. foreach ($e["FILES"] as $file) { // Start in unpack directory. } else { } // Separate file name and rest path. // Create subdirs if neccessary. autocreate_subdirs($dirPath); // Write file. $path[] = $fileName; } else { } } } } ?>
Hallo Droptix,
Ehrlich, ein richtig cooles Script!!! :D
Genau soetwas brauche ich nämlich gerade :D
Habe es noch etwas erweitert, damit es direkt von der Kommandozeile aus mit entsprechenden Parametern aufgerufen werden kann.
Sollte so unter Windows und Linux laufen, vielleicht können ja mal ein paar Leute testen und Ihre Ergebnisse posten...
<?php require("class.em_terconnection.php"); // default-Settings. $unpackDir = "extension"; // Usage ausgeben function printUsageAndDie(){ global $argv; print <<<EOM ------------------------------------------------------------------------------ _____ _ _ _____ | ____|_ ___ __ __ _ _ __ __| | | |_|___ /_ __ | _| \ \/ / '_ \ / _` | '_ \ / _` | | __| |_ \ \/ / | |___ > <| |_) | (_| | | | | (_| | | |_ ___) > < |_____/_/\_\ .__/ \__,_|_| |_|\__,_| \__|____/_/\_\ Version 0.1, 04.06.2007 |_| ...written by droptix and luwo. (look at http://www.typo3.net/forum) Usage: expand_t3x.php [filename.t3x] <directory> * filename.t3x = Name of your t3x-file * directory = optional directory of extraction (default="extension") ------------------------------------------------------------------------------ EOM; } // Wurde eine Datei angegeben? // Wurde ein Auspackverzeichnis angegeben? if ($argv[2] != '') $unpackDir=$argv[2]; // Datei aus Kommandozeile holen... $extFile=$argv[1]; else{ print "\n Datei: '$extFile' wurde leider nicht gefunden \n"; printUsageAndDie();} // Start unpacking. $ext = SC_mod_tools_em_terconnection::decodeExchangeData($fileContent); function autocreate_subdirs($dir) { foreach ($subdirs as $subdir) { $path[] = $subdir; } else { } } } } // Unpack extension(s). foreach ($ext as $e) { if ($e["EM_CONF"]) { // Create unpack directory. } // Create directories. foreach ($dirs as $dir) { // Start in unpack directory if any. if ($unpackDir) { $dir = $unpackDir."/".$dir; } autocreate_subdirs($dir); } // Write files. foreach ($e["FILES"] as $file) { // Start in unpack directory. } else { } // Separate file name and rest path. // Create subdirs if neccessary. autocreate_subdirs($dirPath); // Write file. $path[] = $fileName; } else { } } } } ?>
Viele Grüße Luwo
So, hier nun eine .exe Datei zum Auspacken einer .t3x Datei (Code leicht verbessert für meinen Geschmack):
[url=http://droptix.ohost.de/boards/typo3-expandt3x/expandt3x.exe]expandt3x.exe (~ 1,33 MB)[/url]
[url=http://droptix.ohost.de/boards/typo3-expandt3x/expandt3x.exe.zip]expandt3x.exe gezippt (~ 598 KB)[/url]
Viel Spaß damit und Danke an alle, die mitgeholfen haben!
P.S. Erstellt mit dem [url=http://www.bambalam.se/bamcompile/]Bambalam PHP EXE Compiler/Embedder[/url]
Tja, so bin ich eben 8-) … und nicht zu vergessen auch luwo.
Denkt an mich, wenn ich mal ein Problem habe.
P.S. Wenn jemand Lust und Zeit hat ein PHP-Script für den umgekehrten Weg zu machen, wäre das sehr cool :D Das wär noch was, was ich mit meinem Extension-Halbwissen nicht zusammen kriege, mir aber sehr wünschen würde.