HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Электроника и Фрикинг
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 09.02.2019, 16:27
n3d.b0y
Участник форума
Регистрация: 30.01.2018
Сообщений: 180
С нами: 4360567

Репутация: 0
По умолчанию

Привет, античат !

Вводная информация
Создаем модуль. Часть 1

Это вторая статья посвященная написанию модуля для WiFi Pineapple. В данной уроке мы разберем базовую структуру файлов и поймем как и где писать код. Хочу с акцентировать внимание на том что я не учу вас программированию, цель данной статьи показать как строиться модуль что бы вы могли сразу приступить к работе.

И так приступим, чтобы наш модуль мог быть частью админ панели ананаса нужно придерживаться стандартов заложенными разработчиками платформы. Есть файлы которые обязательно должны быть в каждом модуле, через них будет происходить взаимодействие с веб-интерфейсом а также система будет распознать что это модуль. Давайте рассмотрим и разберем обязательные файлы и каталоги модуля.

Структура основных файлов в модуле:

Код:


Код:
.
├── api
│   └── module.php
├── js
│   └── module.js
├── module.html
└── module.info
Каталог API:
Каталог api содержит обязательный файл
Код:
module.php
в нем описываются все action к которым мы будем обращаться через ajax запросы. Также хорошей практикой будет если вы все файлы php которые относятся к вашему модулю будет складывать в этот каталог.

Рассмотрим обязательный файл module.php:

PHP:


Код:
request->action) {
            case 'getHello':
                $this->hello();
                break;
            }
    }
}

private function hello()
{
    $this->response = array('text' => "Hello World");
}
Модуль должен всегда наследоваться от класса Module, таке должен содержать обязательный метод route в котором должна быть реализована конструкция switch которая позволит обратиться к нужному методу при ajax запросе. Не забудьте указать
Код:
namespace pineapple
и не используйте закрывающийся тэг
Код:
?>
в конце файл.

Каталог JS:
Каталог js содержит обязательный файл module.js в нем описываются все контроллеры angular.

Рассмотрим обязательный файл module.js:

JavaScript:


Код:
registerController
(
"ExampleController"
,
[
'$api'
,
'$scope'
,
function
(
$api, $scope
)
{
$api
.
request
(
{
module
:
'ExampleModule'
,
action
:
'getHello'
}
,
function
(
response
)
{
$scope
.
hello
=
response
.
text
;
}
)
;
}
]
)
Объявление контроллера немного отличаются по сравнению с обычным функционалом Angular, для этого надо использовать функцию
Код:
registerController
а в остальном ничего нового. Чтобы отправить ajax запрос к нашему action будем использовать
Код:
$api.request
, в качестве обязательных параметров нужно указать action к которому мы хотим обратиться и имя модуля у которого хотим вызвать action. Обращаться можно к любым модулям которые есть в вашем анонсе, это может уберечь вас от написание лишнего кода.

Файл module.html:
Данный файл содержит весь html который будет использовать ваш модуль. Думаю рассматривать тут нечего. Если вы не особо не знакомы с Angular то в html требуется объявить контроллер для выполнения js который приведен выше.

HTML:


Код:
{{ hello }}
Файлmodule.info:
В данном файле содержится информация о вашем модуле. Особо расписывать тут нечего просто придерживайтесь данной структуры оформления.

Код:


Код:
{
    "author": "n3d.b0y",
    "description": "WiFi Pineapple Example Module",
    "devices": [
        "nano",
        "tetra"
    ],
    "title": "ExampleModule",
    "version": "1.0"
}
Вот мы и разобрали тот минимум что бы можно было приступить к написанию собственного модуля. Теперь давайте поговорим о необязательных файлах и каталогах а также о некоторых вещах на которые стоит обратить внимание.

Хранение данных:
Для хранение данных можно использовать встроенный функционал от hack5. Для начало вам надо создать файл конфигураций под ваш модуль. Файл должен храниться в каталоге
Код:
etc/config
. Название файл не имеет значение но хорошей практикой будет назвать его точно также как модель в нижнем регистре. Затем объявиться секцию с произвольным названием и тогда в нее можно будет положить любые данные.

Код:


Код:
# Cоздаем файл
touch /etc/config/pineapplemodule
# Cоздаем секцию с именем module
echo "config pineapplemodule 'module'" > /etc/config/pineapplemodule

# Добавляем переменную installed со значением 1 в секцию module
uci set pineapplemodule.module.installed=1
# Применяем изменения
uci commit pineapplemodule.module.installed

# Получаем значение переменной installed
uci get pineapplemodule.module.installed
Для работы с файлом конфигураций в php нам доступны два метода
Код:
uciGet
и
Код:
uciSet
после того как мы наследовались от класса Module.

Рекомендации:
Если вы будете использовать в модули любого рода скрипты shell, python и т.д также хорошей практикой будет складывать в каталог scripts но это не обязательно) так сделано в большинстве модулей.

Для лучшего понимание советую изучить как написаны стандартные модули и модули сторонних разработчиков hak5/wifipineapple-modules. Также изучите файлы в каталоге
Код:
pineapple/api
, обязательно обратите внимание есть на Module.php в котором находиться класс от которого мы наследуемся. Не лишним будет заглянуть в каталог
Код:
pineapple/js
.

На этом пожалуй я закончу вторую часть. Осталось осветить еще одну тему по разработки “Как собрать пакет под OpenWrt”. Пока сам не до конца разобрался в данной теме, как разберусь напишу третью часть
 
Ответить с цитированием
 



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.