Перейти к публикации

IT-Security

Клиенты
  • Публикации

    1 592
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    12

Сообщения, опубликованные пользователем IT-Security

  1. Доброе время суток!

    Появилась идея сделать версию DLE с внёднённым расширенным АПИ. Не только для создания модулей, но и для их подключения.

    Что планируется сделать:

    1) Функции управления окружением из модулей

    Давно хотелось в модуле не вставлять десятки файлов для JS/AJAX/эффектов, которые уже могут быть подключены. С другой стороны подключать всё подряд тоже как-то не хочется.

    Решение простое:

    dleAPI::connect_js('filename');
    Лежать js дожны в папке js текущего скина. Есть возможность грузить внешние JS:
    dleAPI::connect_js('http://www.www.ru/file.js', true);
    Аналогично с CSS файлами:
    dleAPI::connect_css('file.css');
    или:
    dleAPI::connect_css('http://www.www.ru/file.css', true);
    Файлы грузятся 1 раз!Также они будут сжиматься через gzip, что ускорит их загрузку + будут кэшироваться. Также из окружения можно будет менять title страницы:
    dleAPI::set_title ('Это title');
    Или дописывать:
    dleAPI::set_title ('Это дописано', true);
    Метатэги:
    dleAPI::set_meta('keywords', $keywords);
    
    dleAPI::set_meta('description', $keywords);
    2) Возможность авторизовывать по email Да, это реально. Помимо классической авторизации по логину/паролю будет авторизация по паре email/пароль. 3) Объект dleAPI доступен из любого места Да, Вы можете делать запросы к API из любого места. Кроме этого появляется HTTP-GateWay для запросов снаружи. Работает он по двум ключам. Первый - открытый. По нему доступны функции для чтения данных (Кроме авторизационной информации) Второй - закрытый. По нему работают все фунции. Также у АПИ есть настройка с какого шлюза разрешать запрос (Да, полноценные соц. сети на ДЛЕ реальны). 4) Расширенное кэширование В АПИ мной было разработано timelife кэширование. Оно также будет доступно внутри ДЛЕ. 5) Дополнительные поля Будут разработаны и введены редактируемые и индексируемые дополнительные поля. Это удобно для различного рода балансов и прочих вещей, которые требуеют отдельное поле в БД. Индексация идёт по трём полям:
    user_id - module_id - field_id
    Перед началом работы с дополнительным полем необходимо установить в систему модуль, который будет работать с доп. полями.
    dleAPI::setupModule(unique_name);
    В ответ будет получен ID модуля в системе. Можно менять доп. информацию о модуле:
    dleAPI::moduleSetInfo($module_id, $descr, $version, $author);
    После этого нужно добавить для модуля возможность ставить поля.
    dleAPI::addField($module_id, $fieldName);
    Получаем в ответ ID поля. И наконец-то ставим поле:
    dleAPI::setField($field_id, $user_id, $value);
    Если поля нет - оно создастся. Если есть - обновится.
    dleAPI::readField ($field_id, $user_id);
    Чтение значения. Далее:
    dleAPI::removeField($field_id);
    Удаление доп. поля
    dleAPI::unistallModule($module_id);
    Удаление информации по модулю. Информацию по модулю и прочие детали планируется хранить в базе с кэшированием на диск. Поэтому снизить производительность это не должно. С другой стороны нужно понимать, что ДЛЕ будет кушать чуть больше ресурсов имея такие навороты. Также в проекте:
    dleAPI::set_update_url($module_id, $url);
    Каждый раз при вызове:
    dleAPI::check_updates($module_id)
    будет проверяться наличие новое версии и возвращаться результат. Серверная часть для отдачи версии будет предоставлена. 6) Управление выводом Теперь можно будет в любом модуле объявить
    dleAPI::single_output();
    После этого весь остальной вывод будет подавлен 7) Расширенные бб-тэги Теперь бб-тэги можно будет добавлять (Работать для начала будет только в шаблонах!) Пример:
    [parser=функция]Данные|через|слэш[/parser]
    Что будет?Возьмётся фукнция
    dleAPI::parser
    и в неё будет переданы все аргументы, через | + название функции. Парсер вызовет callback-функцию, а она уже вернёт нормальный вывод. Пример:
    [parser=no_cookie]Превед![/parser]
    В моём примере будет вызвана функция no_cookie, которая будет проверять посещал человек за эту сессию сайт или нет и если не посещал, то будет выведен текст. Такая функция пример будет, правда называться она будет no_session или first_visit. Удобно для сайтов, которые показывают флешку в первой загрузке и картинку на фоне когда человек уже сидит на сайте. Напомню, что также будет HTTP-режим АПИ для внешней обработки текста. 8) Подключение внешних компонентов Можно подключать внешние компоненты. Изначально в АПИ будет доступно:
    dleAPI::$db и dleAPI::$cache.
    Опционально можно будет загрузить:
    dleAPI::$http_request и dleAPI::$geoip
    9) Расширенная капча antibot.php будет модифицирован и будет выдавать каждый раз разный тип капчи, разные надписи и прочее, что должно помочь в защите от ботов. 10) Статические страницы Будет возможность вывести в любом место содержимое статической страницы. {staticpage id="$id" cache="true/false"} Это крайне удобно для различного рода сообщений и прочего. И АПИ вариант: dleAPI::getStaticPage ($id, $cache); 11) Модульность Будет добавлена полноценная модульность на стыке default в engine.php Примерно так:
    if ($config['allow_api'] == 'yes') {
    
        $modules = dleAPI::get_modules ();
    
        if (in_array ($do, $modules)) {
    
          require_once ($modules[$do]['handler']);
    
        }
    
    }

    После этого модуль будет вставлен.

    Пока это всё в разработке... Хотелось бы выслушать мнение.

    Прошу перепостить эту тему, так как она важна для развития движка.

    P.S. Поставляться всё это будет в виде патчей, чтобы не выкладывать файлы движка.

    Использование в нуленных версиях крайне не рекомендуется.

    Напомню про случай, когда моё апи изменили для возможности выполнять произвольный код и выложили.

    Посему рекомендую лицензионный дистрибутив и оригинальное АПИ.

    ВСЕ модули и ВСЁ АПИ в целом будет включаться/выключать в админ-панели!

  2. Доброе время суток, дорогие друзья!

    С радостью хочу объявить о второй ветке DLE API - версии 2.0.

    Что же ждёт нас в версии 2.0?

    1) Код полностью портирован под PHP 5.1, что сильно расширяет его возможности. Из главных - ООПность и статические методы.

    Одна копия объекта на всю систему в ЛЮБОМ месте. Ничего не нужно объявлять, глобалить, наследовать

    2) Расширенный конструктор запросов. Помимо уже привычного loadTable будет также insert, insertUpdate, update и новый select.

    3) HTTP расширение, которое позволит связать воедино сотни сайтов. Дополнительно будет защита для доступа к АПИ по принципу:

    host:ID:ключ.

    Если у Вас популярный сайт на ДЛЕ, то Вы сможете создавать десятки новых ресурсов на основе одного.

    4) Внешний парсер

    Теперь Вы можете передать bb-тэги в функцию, а на выходе получить полноценный HTML для вставки в другие ресурсы.

    Кроме того Вы можете использовать свои бб-тэги. Эта функция также работает в HTTP-режиме.

    Грубо говоря если Вы хотите сделать свой бб-тэг [simple]12345[/simple], то будет вызвана функция simple и в неё будет передана строка 12345.

    Это позволяет делать свою разметку и использовать на сторонних ресурсах.

    5) Теперь апи можно без проблем использовать для создания своих backend'ов. Ещё в старой версии появился метод checkAuth, который проверял авторизацию.

    Теперь его также можно использовать.

    6) Методы addNews, addVote, sendEmailMessage

    Новые методы, которые ещё больше расширяют возможности движка.

    7) Суб-класс HTTPRequest

    Суб-класс для удобной работы с HTTP-запросами

    Вот примерный список того, что будет в новой версии API.

    Высказываемся :)

    Версия 2.0 Alpha:

    1) Реализовано

    6) Реализован sendEmailMessage

    Дополнительно:

    - Оптимизирован весь код

    - Проверки email заменены на аналоги из версии 8.5

    - Функции сгруппированы по типам

    - Изменён стиль кода

    - Улучшен синтаксис SQL

    • Поддерживаю 6
  3. Понравилось высказывание насчёт заказа дизайна у Лебедева))))А денег хватит?)))

    Есть у него отличное высказывание:

    "Мы принципиально не работаем с частными лицами, политическими и религиозными организациями, мудаками, а также с теми, чьи убеждения противоречат нашим. "

  4. Да, могу. Завтра займусь. Ещё есть пожелания?На выходных займусь HTTP-POST-API.

    На него можно будет обращаться из внешнего мира. Поставляться будет как отдельный файл.

    По большому счёту это будет просто внешний интерфейс :)

  5. Не существует запросов типа варчар. Делал проект где нужно было выбрать всех друзей и друзей друзей.

    Одним запросом сразу сожралось 20% от Core2Quad 2.66. Можно и одним запросом сложить мощный сервер.

    А можно сотней маленький ничего не сделать.

  6. Новая версия API:

    http://www.newleaf.ru/uploads/api_test.zip

    Изменения:

    - Добавлен метод проверки авторизации (Работает из простого массива, из кук, сессий). Возвращает false или массив авторизованного пользователя

    - Поправлено добавлено комментариев, добавлено обновление количества комментариев у пользователя.

    Пользуемся, комментируем.

    • Поддерживаю 1
  7. Тестовая версия API.

    http://www.newleaf.ru/uploads/api_test.zip

    Добавлена функция для добавления комментариев:

    		
    /**
    * @param $newsId int - ID новости
    * @param $userName string - имя пользователя
    * @param $ip string - IP пользователя
    * @param $text string - комментарий
    */
    function addComment ($newsId, $userName, $ip, $text) {[/php]

×
×
  • Создать...