ТЕХНИЧЕСКОЕ ЗАДАНИЕ на разработку утилиты **ubl-settings-datetime** 1. **ОПИСАНИЕ:** Графическое средство настройки даты и времени в ОС UBLinux 1. **ЭТАПЫ И СРОКИ СОЗДАНИЯ ПРИЛОЖЕНИЯ:** Общий срок работ по созданию приложения составляет N дней: - N дня - макет и дизайн приложения и его утверждение - N дней - разработка приложения - N дня - тестирование приложения и исправление ошибок Перечень этапов разработки приложения: - Разработка макета и дизайна приложения, самостоятельно - Утверждение и доработка макета, самостоятельно - Создание работающего интерфейса, включая полную разработку действующих ярлыков, кнопок и т.д., самостоятельно - Проектирование алгоритма работы приложения, самостоятельно - Написание работающего кода приложения, включая полноценно работающие элементы графического интерфейса, а также перевод (поддержка локализации En, Ru), самостоятельно - Тестирование и исправление ошибок, самостоятельно - Публикация 1. **ТЕХНОЛОГИЧЕСКИЕ ТРЕБОВАНИЯ:** 1. Приложение разрабатывается под нужды операционной системы UBLinux 1. Использование фирменного логотипа компании 1. Название приложения, техническое: **ubl-settings-datetime** 1. Название приложения, публичное: **UBConfig - Дата и время** 1. Стек технологий: - Язык программирования: Bash или C++ - Приложение для разработки графического интерфейса: Glade 3 - Графические библиотеки: GTK3 - Операционная система разработки: UBLinux DB 1. Структура: - **/usr/bin/ubl-settings-datetime (скомпилированный бинарный файл)** Bash/C: Весь функционал сосредоточен в графической части, вызовы и исполнение процедур написаны на языках Bash, C++ - **/usr/share/ubl-settings-datetime/images/{\*.png,\*.svg}** Элементы изображений - **/usr/share/ubl-settings-datetime/locale -> /usr/share/locale** Локализация En/Ru 1. **ТЕХНИЧЕСКОЕ ЗАДАНИЕ:** 1. Главное окно: 1. Требования к внешнему виду: - Адаптивный (резиновый) дизайн. - Минимальный размер окна до прекращения масштабирования 800 на 600 пикселей. - Шапка в стиле приложений GTK3. - В верхней части крупный логотип утилиты, с права от него краткое описание утилиты. Фон заполнен изображением. - Рабочая область делится на два блока, которые обрамлены рамками с заголовками: «Локальная настройка», «Глобальная настройка». 1. Требования к «Рабочей области». Выводятся группы настроек запуска: 1. Локальная настройка - лейбл "Время". - счётчик от 00 до 23 (часы). - лейбл «:» (разделитель). - счётчик от 00 до 59 (минуты). - лейбл «Дата». - поле ввода. Ввод даты в формате ДД.ММ.ГГГГ - кнопка с иконкой календаря. Вызов объекта датапикер (визуальное представление выбора даты). - кнопка «Синхронизировать». Синхронизация выставленных даты и времени с часами и датой системы. - кнопка «Синхронизировать аппаратное время». Синхронизация даты и времени с временем BIOS рабочей станции. - вложенный блок с заголовком «Часовой пояс». - лейбл «Регион:». - комбобокс. Перечень регионов, локализация стандартными средствами. - лейбл «Зона:». - комбобокс. Перечень городов с поправкой на часовой пояс. Например, «(UTC +06) Омск». Перечень регионов, локализация стандартными средствами. 1. Глобальная настройка - чекбокс "Синхронизоравать через NTP" - комбобокс с вариантами выбора сервера: «По умолчанию, DHCP, Вручную». При выборе «По умолчанию», второе поле для ввода вручную становится заблокированным для манипуляций - текст введённого поля серый. Содержание поля - ответ полученный на запрос «ubconfig --source=default get NTPSERVERS\_DEFAULT». При выборе «По умолчанию» в конфиг файл передаются значения: «NTPSERVERS=default». Неактивно, если не включен чекбокс "Синхронизоравать через NTP". - поле ввода для ручного указания серверов. Неактивно, если не включен чекбокс "Синхронизоравать через NTP", выбрана опция «По умолчанию» в комбобоксе с вариантами выбора сервера. - дроплист с именами пользователей системы + пользователь root (доступно, если активен чекбокс "Выполнить от имени другого пользователя") - вложенный блок с заголовком «Часовой пояс». - лейбл «Регион:». - комбобокс. Перечень регионов, локализация стандартными средствами. - лейбл «Зона:». - комбобокс. Перечень городов с поправкой на часовой пояс. Например, «(UTC +06) Омск». Перечень регионов, локализация стандартными средствами. 1. **КОМАНДЫ** 1. Задать время: `date +%T -s "h:m:sec"` 1. Задать дату: `date +%Y%m%d -s "2000:06:14"` 1. Синхронизировать аппаратное время: `hwclock --systohc` 1. Проверка запущенных процессов синхронизации, например, `pidof -q systemd-timesyncd ntpd chronyd`. 1. Остановка сервисов: 1. systemd-timesyncd `[[ systemctl --quiet is-active systemd-timesyncd &>/dev/null ]] && systemctl stop systemd-timesyncd` 1. ntp `[[ systemctl --quiet is-active ntpd &>/dev/null ]] && systemctl stop ntpd` 1. openntp `[[ systemctl --quiet is-active openntpd &>/dev/null ]] && systemctl stop openntpd` 1. linuxptp `[[ systemctl --quiet is-active ptp4l &>/dev/null ]] && systemctl stop ptp4l` 1. Установка часового пояса: `ln -s /usr/share/zoneinfo/ && ln -s /usr/share/zoneinfo/REGION/ZONE` 1. Команды записи в конфигурационный файл: 1. получить статус синхронизации NTP: `/usr/bin/ubconfig get network NTPSERVERS` 1. Задать значение NTPSERVERS: 1. Если выбран по умолчанию: `/usr/bin/ubconfig set network NTPSERVERS=default` 1. Если выбран dhcp: `/usr/bin/ubconfig set network NTPSERVERS=dhcp` 1. Если выбран вручную: `/usr/bin/ubconfig set network NTPSERVERS=АДРЕСА ИЗ ПОЛЯ` 1. Получить текущую временную зону: `/usr/bin/ubconfig get clock ZONE` 1. Задать временную зону: `/usr/bin/ubconfig set clock ZONE=REGION/ZONE` 1. Отключить синхронизацию NTP: `/usr/bin/ubconfig remove network NTPSERVERS` - **ПРИБЛИЗИТЕЛЬНЫЙ МАКЕТ ПРИЛОЖЕНИЯ.** - Главное окно