JAD генератор на php

Discussion in 'PHP' started by Cactuz, 13 Nov 2007.

  1. Cactuz

    Cactuz Elder - Старейшина

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    JAD генератор на php
    народ вообшем так долго сидел искал но не нашёл =(
    корче помогите найти JAD генератор на php

    ну вот примеры этого скрипта:http://simak.ru/jad/ и http://kycb-kycb.org.ru/makejad.php стучал им они не делютца =(
     
  2. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Не вижу проблемы... Самое сложное - распаковать архив. Вот скрипт:

    PHP:
    <?php

        
    // JAD Descriptor generator by groundhog, 2007 (c) DaMaGeLaB

        
    define("JAR_STORAGE_URL""jar");

        function 
    prepeareJADFile($jarArchivePath$manifestPath$jarArchiveUrl) {
            
    $zipObject = new ZipArchive;

            if (!
    is_object($zipObject)) return false;

            
    $ret $zipObject->open($jarArchivePath);
            if (!
    $ret) return false;

            
    $manifest $zipObject->getFromName($manifestPath);

            if (!
    is_string($manifest) || strlen($manifest) <= 0) return false;
            
    $manifest trim($manifest);

            
    $jarFileSize filesize($jarArchivePath);
            if (!
    $jarFileSize) return false;

            
    $MIDletJarSize  sprintf("MIDlet-Jar-Size: %d"$jarFileSize);
            
    $MIDletJarURL   sprintf("MIDlet-Jar-URL: %s"$jarArchiveUrl);
            
    $jadFileContent sprintf("%s\n%s\n%s\n"$manifest$MIDletJarSize$MIDletJarURL);

            return 
    $jadFileContent;
        }


        if (
    count($_FILES) <= 0) {
            print(
    "<html>");
            print(
    "<head>");
            print(
    "<title>Генератор JAD файлов</title>");
            print(
    "</head>");
            print(
    "<body>");
            print(
    "<h1>Укажите Ваш JAR файл:</h1>");
            print(
    "<form method=\"post\" enctype=\"multipart/form-data\">");
            print(
    "<input name=\"jar_file\" type=\"file\">");
            print(
    "<br><br>");
            print(
    "<input name=\"upload\" type=\"submit\" value=\"Загрузить\">");
            print(
    "</form>");
            print(
    "</body>");
            print(
    "</html>");
        } else {
            if (!isset(
    $_FILES["jar_file"]) || !is_file($_FILES["jar_file"]["tmp_name"])) die ("Не могу прочитать загруженный файл");

            if (
    $_FILES["jar_file"]["type"] != "application/java-archive") die("Неверный тип файла!");

            
    $jadFileName substr($_FILES["jar_file"]["name"], 0strrpos($_FILES["jar_file"]["name"], ".")) . ".jad";
            
    $resultUrl   "http://" $_SERVER["HTTP_HOST"] . "/" JAR_STORAGE_URL "/" $_FILES["jar_file"]["name"];
            
    $jadContent  prepeareJADFile($_FILES["jar_file"]["tmp_name"], "META-INF/MANIFEST.MF"$resultUrl);

            if (!
    move_uploaded_file($_FILES["jar_file"]["tmp_name"], JAR_STORAGE_URL "/" $_FILES["jar_file"]["name"]))
                die(
    "Не могу обработать загруженный файл!');

            header("
    Content-Typetext/vnd.sun.j2me.app-descriptor");
            header("
    Content-Dispositionattachmentfilename=\"{$jadFileName}\"");
            print(
    $jadContent);
    }

    ?>
    Для его использования у тебя должно быть подключено ZIP-расширение для PHP - без него скрипт работать не будет, т.к. не сможет распаковать JAR. JAR - это тот же самый ZIP-архив, только структура этого архива стандартизована. Не забудь создать каталог, определяемый константой JAR_STORAGE_URL - он должен быть доступен из веб (в текущем варианте просто создай там же где лежит скрипт каталог, определяемый константой).
     
    #2 groundhog, 13 Nov 2007
    Last edited: 13 Nov 2007
    2 people like this.
  3. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Можно нескомный вопрос?
    А это зачем надо....jad этот.....или чем-то gzip, tar.gz и т.д. не утраивает :confused:
    Непонимаю...
     
  4. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    JAD - это не архив! Это текстовый файл, грубо говоря "описатель", сформированный по определённым правилам из содержимого манифеста JAR-архива. Некоторым мобильным терминалам этот файл требуется чтобы провести корректную установку Java-приложения.
     
  5. [Raz0r]

    [Raz0r] Elder - Старейшина

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    Если тебя интересует сам генератор JAD'ов, то вот версия на VB http://dump.ru/files/n/n844109414/
     
  6. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    groundhog
    Спасибо, понял :)
     
  7. Cactuz

    Cactuz Elder - Старейшина

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    што это значит?
    Parse error: parse error, unexpected T_STRING in jad.php on line 57
     
  8. Kridan

    Kridan Member

    Joined:
    2 Jun 2007
    Messages:
    24
    Likes Received:
    8
    Reputations:
    0
    Дословный перевод: "В строке 57 неожиданная строковая переменная" :)

    PHP:
    die("Не могу обработать загруженный файл!');
    Закрой одинаковыми двойными кавычками.
     
  9. Cactuz

    Cactuz Elder - Старейшина

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    скрипт заработал ну без ошибок тоесть а впри загрузке джар пишет .... Неверный тип файла!
     
    #9 Cactuz, 13 Nov 2007
    Last edited: 13 Nov 2007
  10. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Cactuz, кто пишет что неверный тип файла?
     
  11. AkyHa_MaTaTa

    AkyHa_MaTaTa Elder - Старейшина

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    Походу тел. пишет при загруске jad файла, посмотри содержание jad файла, скорее всего там всякая фигня.
     
  12. Cactuz

    Cactuz Elder - Старейшина

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    пишет скрипт =) нажимаю загрузить и он пишет неверный тип
     
  13. AkyHa_MaTaTa

    AkyHa_MaTaTa Elder - Старейшина

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    if ($_FILES["jar_file"]["type"] != "application/java-archive") die("Неверный тип файла!"); - либо он у тебя не признает что это application/java-archive(может апач выкаблучивается) - либо ты кидаешь не .jar файл, попробуй закоментить эту часть
    PHP:
    if (!isset($_FILES["jar_file"]) || !is_file($_FILES["jar_file"]["tmp_name"])) die ("Не могу прочитать загруженный файл");

    /* if ($_FILES["jar_file"]["type"] != "application/java-archive") die("Неверный тип файла!");*/

            
    $jadFileName substr($_FILES["jar_file"]["name"], 0strrpos($_FILES["jar_file"]["name"], ".")) . ".jad"

    58 header("Content-Disposition: attachment; filename="{$jadFileName}\"");

    PHP Parse error: parse error, unexpected '{' in C:\WebServers\home\test2.ru\www\NONAME6.php on line 58

    нафиг там {}

    вот лучше будет:
    header("Content-Disposition: attachment; filename=$jadFileName");
     
  14. Cactuz

    Cactuz Elder - Старейшина

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    теперь
    Fatal error: Class 'ZipArchive' not found in jad.php on line 8
    выложите ктонибудь нормальный рабочий скрипт =)
     
  15. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Cactuz, этот скрипт написан под PHP5+ZIP. Ошибка "Неверный тип файла" вызвана тем (как правильно заметили), что ты загружаешь не JAR файл, или у твоего апача криво настроено поддерживаемые MIME-типы. Я изменил скрипт на тупую проверку расширения загружаемого файла, это должно избавить от этой ошибки. И я обратил твоё внимание на то, что для работы этого скрипта НЕОБХОДИМ МОДУЛЬ РАБОТЫ С ZIP. Модуль, если его нету в составе твоего PECL смотри тут - http://pecl.php.net/package/zip. Если ты делаешь это под Никсы, тогда пересобери пхп с опцией --enable-zip, если под Винды - просто раскоменть строчку с php_zip.dll в php.ini. Интерфейс работы с ZIP в PHP4 и PHP5 сильно разнится, поэтому если тебе нужна была реализация под PHP4 нужно было это уточнить.

    PHP:
    <?php

        
    // JAD Descriptor generator by groundhog, 2007 (c) DaMaGeLaB

        
    define("JAR_STORAGE_URL""jar");

        function 
    prepeareJADFile($jarArchivePath$manifestPath$jarArchiveUrl) {
            
    $zipObject = new ZipArchive;

            if (!
    is_object($zipObject)) return false;

            
    $ret $zipObject->open($jarArchivePath);
            if (!
    $ret) return false;

            
    $manifest $zipObject->getFromName($manifestPath);

            if (!
    is_string($manifest) || strlen($manifest) <= 0) return false;
            
    $manifest trim($manifest);

            
    $jarFileSize filesize($jarArchivePath);
            if (!
    $jarFileSize) return false;

            
    $MIDletJarSize  sprintf("MIDlet-Jar-Size: %d"$jarFileSize);
            
    $MIDletJarURL   sprintf("MIDlet-Jar-URL: %s"$jarArchiveUrl);
            
    $jadFileContent sprintf("%s\n%s\n%s\n"$manifest$MIDletJarSize$MIDletJarURL);

            return 
    $jadFileContent;
        }
        
    ////////////////////////////////////////////////////////////////////////////////////

        
    if (count($_FILES) <= 0) {
            print(
    "<html>");
            print(
    "<head>");
            print(
    "<title>Генератор JAD файлов</title>");
            print(
    "</head>");
            print(
    "<body>");
            print(
    "<h1>Укажите Ваш JAR файл:</h1>");
            print(
    "<form method=\"post\" enctype=\"multipart/form-data\">");
            print(
    "<input name=\"jar_file\" type=\"file\">");
            print(
    "<br><br>");
            print(
    "<input name=\"upload\" type=\"submit\" value=\"Загрузить\">");
            print(
    "</form>");
            print(
    "</body>");
            print(
    "</html>");
        } else {
            if (!isset(
    $_FILES["jar_file"]) || !is_file($_FILES["jar_file"]["tmp_name"]))
                die (
    "Не могу прочитать загруженный файл");

            
    $fileExt strtolower(substr($_FILES["jar_file"]["name"], strrpos($_FILES["jar_file"]["name"], ".") + 1));

            if (
    $fileExt != "jar") die("Неверный тип файла!");

            
    $jadFileName substr($_FILES["jar_file"]["name"], 0strrpos($_FILES["jar_file"]["name"], ".")) . ".jad";
            
    $resultUrl   "http://" $_SERVER["HTTP_HOST"] . "/" JAR_STORAGE_URL "/" $_FILES["jar_file"]["name"];
            
    $jadContent  prepeareJADFile($_FILES["jar_file"]["tmp_name"], "META-INF/MANIFEST.MF"$resultUrl);

            
    move_uploaded_file($_FILES["jar_file"]["tmp_name"], JAR_STORAGE_URL "/" $_FILES["jar_file"]["name"]);

            
    header("Content-Type: text/vnd.sun.j2me.app-descriptor");
            
    header("Content-Disposition: attachment; filename=\"{$jadFileName}\"");
            print(
    $jadContent);
    }

    ?>
     
  16. AkyHa_MaTaTa

    AkyHa_MaTaTa Elder - Старейшина

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    Не забуть создать каталог ./jar в каталоге со скриптом, или поставь другой свой:
    define("JAR_STORAGE_URL", "jar");