Разработка защитного ПО

Татьяна11 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
29.08.2016

Необходимо выполнить: 

Техническое задание на разработку защитного программного обеспечения 

Операционная система - 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). 

Более подробная информация будет предоставлена лично. 

Интересуют сроки!