From 90282447eb059da85155ad94fc5e3b9e0b21a0dc Mon Sep 17 00:00:00 2001 From: XeRo Date: Fri, 6 Feb 2026 14:54:01 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20Readme,=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= =?UTF-8?q?=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=84?= =?UTF-8?q?=D0=B8=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 15 ++++++++++++++- confs/repko.yaml | 16 ++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Readme.md b/Readme.md index 588df6d..20b1806 100644 --- a/Readme.md +++ b/Readme.md @@ -166,7 +166,20 @@ used_protocol={{if .is_secure}}https:\\{{else}}http:\\{{end}} - ctrl+c, ctrl+q - открывает [модальное окно](Readme.md#модальное-окно-подтверждения-выхода) подтверждения выхода ## Дополнительно, Важное -В текущей итерации не учтен ряд элементов. Это могут быть вопросы реализации, правил поведения приложения, удобство пользования. +В текущей итерации не учтен ряд элементов. Это могут быть вопросы реализации, правил поведения приложения, удобство пользования. +### Установка пакетов +Из-за вызова команд apt при уже выполняем вызове, возникает блокировка. По этой причине, если использовать GoSetup для настройки устанавливаемого apt пакета и будет вызвана функция установки необходимого пакета, то это приведет к блокировке базы APT. Следовательно, нужно определять вызов программы и ограничивать часть действий. Например, запускать программу с аргументом, значащим вызов во время установки, по его наличию запрещать установку пакета и выводить сообщение или же при его отсутствии устанавливать нужный пакет. +### Валидация +Сейчас валидация нужна для показания, что вводимое значение не отвечает правилами. Если пользователь намеренно или нет, проигнорирует ошибку поля, это может привести к ошибке настройки. Например, если введет имя пользователя русскими буквами или неподходящими символами, то при попытке выполнить команду, это приведет к ошибке действия. Требуется либо сделать запретить переход на следующую секцию при наличии ошибок валидации используемых полей, либо сделать это опциональным, в зависимости от правил. +### Смена секций +Изначально было 2 варианта вызова действий. Первый был основан на запуске всех действия после последней секции, в таком варианте, был допустим переход на прошлые секции и смена их значений. На последней секции можно было просмотреть все введенные данные, а после подтверждения запускались бы все действия. Второй вариант основна на запуске действия по секциям. После нажатия кнопки перехода запускались действия конкретной секции. Было решено остановится на втором варианте для упрощения настройки. При возникновении ошибки действий первых секций, настройка останавливается, если подобное произойдет в первом варианте, то весь процесс ввода данных требовалось бы повторять вновь. +Из-за этого не получись сделать функционал возврата к прошлым секциям, ведь это могло вызвать путаницу действий. Если от значений в секции 1 зависит секция 2 и 3 с разными, противоречащими друг другу действиями, то возврат на секцию 1 после действия секции 2 и изменении данных для секции 3, вызовет конфликт системы из-за действия секции 2. +### Внешний вид +Пока что не был определен единый стиль для программы. Цвета, границы, фон и прочее должен быть изменен для формирования единого стиля приложения. +### Секция About +Из-за ограничений терминала нельзя сделать разный размер текста. То есть идентификация какого уровня заголовок, первого или второго, с помощью разного размера невозможна. Это привод к ограничению стилей markdown для описания. +### Единый формат не стандартных значений +В данный момент есть обработка special-value и обработка compute. Они используются для получения значений, которые не предусмотрены для ввода напрямую или же сложны в расчете самостоятельно. Для special-value сейчас есть одна обработка code:users, её результат это массив строк пользователей системы, чей uid больше или равны 1000. Эта обработка сделана для установки как значения уже сущетсвующего пользователя. Подобная обработка одна на всю систему, для целесообразности special-value нужны другие варианты использования, иначе придется переформировать её расчет через compute. ## Собственные функции для expr Библиотека [expr](https://github.com/expr-lang/expr) имеет ряд готовых функций их можно просмотреть [здесь](https://github.com/expr-lang/expr/blob/master/builtin/builtin.go). Также для были определенны собственные функции, которые можно посмотреть в файле [здесь](setup/utils/utils.go#L153) diff --git a/confs/repko.yaml b/confs/repko.yaml index 5ce90c1..d6de8a5 100644 --- a/confs/repko.yaml +++ b/confs/repko.yaml @@ -409,16 +409,16 @@ sections: error: "Не удалось создать ключ" - name: "get gpg key id" type: "command" - command: "sudo -u {{.repko_user}} gpg --homedir /var/lib/repko/gnupg --list-keys --with-colons | grep pub | cut -d: -f5" + command: "sudo -u {{.repko_user}} gpg --homedir /var/lib/repko/gnupg --list-keys --with-colons 2>/dev/null | grep '^pub' | cut -d: -f5" error: "Не удалось получить и сохранить id gpg ключа" assign-to: "gpg_key_id" - name: "export gpg key" type: "command" - command: "sudo -u {{.repko_user}} gpg --homedir /var/lib/repko/gnupg --armor --export '{{.gpg_key_id}}!' 2>/dev/null > /usr/share/keyrings/repko.asc" + command: "sudo -u {{.repko_user}} gpg --homedir /var/lib/repko/gnupg --armor --export '{{.gpg_key_id}}' 2>/dev/null > /usr/share/keyrings/repko.asc" error: "Не удалось экспортировать gpg ключ" - name: "write gpg key id" type: "command" - command: "echo {{.gpg_key_id}} > /etc/repko/keyid" + command: "echo '{{.gpg_key_id}}' > /etc/repko/keyid" error: "не удалось записать gpg key id в файл keyid" - name: "set owner for exported key" type: "command" @@ -493,28 +493,28 @@ sections: - name: "update_united_nginx_conf" type: "file_template" condition: "api_domain==panel_domain" - file-source: "/opt/repko/donors/united.repko.conf" + file-source: "/opt/repko/templates/united.repko.template.conf" file-target: "/etc/nginx/sites-available/repko.conf" error: "Ошибка при создании файла united nginx conf" - name: "update_separated_nginx_conf" type: "file_template" condition: "api_domain !=panel_domain" - file-source: "/opt/repko/donors/separated.repko.conf" + file-source: "/opt/repko/templates/separated.repko.template.conf" file-target: "/etc/nginx/sites-available/repko.conf" error: "Ошибка при создании файла separated nginx conf" - name: "update_repko_service" type: "file_template" - file-source: "/opt/repko/donors/repko.service" + file-source: "/opt/repko/templates/repko.template.service" file-target: "/etc/systemd/system/repko.service" error: "Ошибка при создании файла repko service" - name: "update_repko_ini" type: "file_template" - file-source: "/opt/repko/donors/config.ini" + file-source: "/opt/repko/templates/config.template.ini" file-target: "/etc/repko/config.ini" error: "Ошибка при создании файла repko config" - name: "update_web_config" type: "file_template" - file-source: "/opt/repko/donors/config.json" + file-source: "/opt/repko/templates/config.template.json" file-target: "/var/www/repko/web/config.json" error: "Ошибка при создании файла repko web config" - name: "Set files ownership"