Разработка защитного ПО
Необходимо выполнить:
Техническое задание на разработку защитного программного обеспечения
Операционная система - Raspbian Jessie и подобные дистрибутивы Linux, основанные на Debian 8.
Аппаратная часть - Raspberry pi2, Orange pi plus.
Требования:
1. Защитное программное обеспечение должно позволять читать все файлы по точке монтирования "/'
файловой системы.
2. Защитное программное обеспечение должно позволять записывать файлы в определенных папках (все остальные папки запрещены для записи).
3. Защитное программное обеспечение должно иметь доступ к определенному перечню портов.
4. Защитное программное обеспечение должно иметь доступ к запуску, остановке, добавлению, удалению определенных сервисов (systemd)
5. ЗПО не должно содержать вредоносных программ, отправлять и получать любые сетевые данные, кроме инициируемых со стороны ПО или в сторону ПО.
6. Защитное программное обеспечение должно настраиваться при "компиляции". Папки с доступом на запись, порты и прочие настройки защитное программное обеспечение не должны находиться в свободном доступе. root пользователь не должен иметь возможности менять эти настройки.
7. Защитное программное обеспечение должно сопровождаться руководством к использованию.
- ПО взаимодействует с брокером MQTT (mosquitto)
- Настройки ПО загружает с файловой системы
/var/config/config.json
{
"accessories": [
{
"accessory": "ihomemqtt",
"name": "Vol UP",
"type": "AVcontrol",
"subtype": "-",
"technology": "SamsungTV",
"G4_address": "",
"HDL_address": "",
"AV_command": "KEY_VOLDOWN",
"Room": "Зал",
“Order”: 10
},
{
"accessory": "ihomemqtt",
"name": "Temp",
"type": "TemperatureSensor",
"subtype": "Relay",
"technology": "G4",
"G4_address": "1/13",
"HDL_address": "",
"Room": "Кухня",
“Order”: 20
},
{
"accessory": "ihomemqtt",
"name": "LUX",
"type": "LightSensor",
"subtype": "Relay",
"technology": "G4",
"G4_address": "1/13",
"HDL_address": "",
"Room": "Кухня",
“Order”: 11
},
{
"accessory": "ihomemqtt",
"name": "DDP",
"type": "Thermostat",
"subtype": "Relay",
"technology": "G4",
"G4_address": "1/21",
"HDL_address": "",
"Room": "Зал",
“Order”: 40
},
{
"accessory": "ihomemqtt",
"name": "Правая розетка",
"type": "Outlet",
"subtype": "Relay",
"technology": "G4",
"G4_address": "1/2/5",
"HDL_address": "",
"Room": "Зал",
“Order”:536
},
{
"accessory": "ihomemqtt",
"name": "Левая розетка",
"type": "Outlet",
"subtype": "Relay",
"technology": "G4",
"G4_address": "1/2/6",
"HDL_address": "",
"Room": "Кухня",
“Order”: 1
}
],
“rooms”: [
{
“name”:”Зал”,
“order”:1
},
{
“name”:”Кухня”,
“Order”:2
}
]
}
Этот файл состоит из двух разделов:
accessories - отсюда мы используем акссессуары, определяем тип, порядок (в порядке возрастания поля Order) и привязываем к комнате.
тип акссессуара используется для формирования внешнего вида управляемого элемента (Прилжоение 1, 2)
rooms - отсюда мы используем имя комнат и порядок (в порядке возрастания поля Order)
В приложении 3 вы можете найти краткое описание правил работы с этим файлом(вам оттуда нужна именно часть формирования топиков для подписки в mqtt).
Результат разработки ПО:
Разработать фронтенд и доработать бекенд :
1. У нас есть разработанный бэкенд (написан на node JS + express), надо добавить страницу логина (естественно логин/пароль изначально admin/admin, при первом входе необходимо изменить, далее логин/пароль сохраняются). Должны быть два вида юзеров - админы и пользователи.
Админы - могут вносить правки.
Пользователи - могут заходить на страницы Rooms, Types и управлять там устройствами.
2. Фронтенд на Angular JS:
- сделать фронтенд, состоящий из трех tabs : Rooms, Types, Settings. Названия табов - внизу. Фон табов - зеленый или красный в зависимости от статуса подключения к mqtt.
- на странице настроек три поля - логин, пароль и кнопка Сохранить. + ссылка на наш существующий фронтенд. (localhost:8888)
- после Сохранения фронтенд соединяется с localhost по протоколу mqtt (порт 1883), с логином, паролем, указанными в настройках.
- также после сохранения загружается файл /var/config/config.json
- в этом файле указаны все устройства, а также зоны и комнаты. Зона - это несколько комнат объединенных.
- логин должен быть реализован так, чтобы в Google Chrome была возможность запонмить пароль/логин
Также в настройках можно указать - логин только по логину\паролю, либо всем подряд.
- после того, как прописаны настройки, и config.json успешно загружен, на основании правил (указаны в файле) прописываются девайсы и топики для подписки.
- по каждому девайсу формируется устройство. Каждое из этих устройств затем группируются на вкладке Room - по комнатам и на вкладке Types - по типам устройств.
офомление итемов - предпочтение Angular Material
Ну и по итогу пользователь может управлять всеми устройствами (по сути это publish в mqtt).
Более подробная информация будет предоставлена лично.
Интересуют сроки!