From 94f310872c79b1f08c0c0dd784bff9cbb64d13f6 Mon Sep 17 00:00:00 2001 From: nihonium Date: Wed, 14 Jan 2026 13:23:24 +0300 Subject: [PATCH 1/2] feat: debian scripts --- scripts/build.sh | 34 ++++++++++++++++++++++++++++++++++ scripts/config.sh | 15 +++++++++++++++ scripts/run.sh | 14 ++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 scripts/build.sh create mode 100644 scripts/config.sh create mode 100644 scripts/run.sh diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 0000000..958aea7 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# -------------------------------------- +# Сборка AuthApp и утилит на Debian 12 +# -------------------------------------- + +# Включаем CGO для работы go-sqlite3 +export CGO_ENABLED=1 +export GOOS=linux +export GOARCH=amd64 + +# Создаём папки для сборки +mkdir -p build/release +mkdir -p build/debug + +# ---------- Сборка основного приложения ---------- +echo "Сборка release версии AuthApp..." +go build -o build/release/authapp ./cmd/authapp +echo "Release сборка AuthApp завершена: build/release/authapp" + +echo "Сборка debug версии AuthApp..." +go build -gcflags="all=-N -l" -o build/debug/authapp ./cmd/authapp +echo "Debug сборка AuthApp завершена: build/debug/authapp" + +# ---------- Сборка утилиты инициализации пользователей ---------- +echo "Сборка init_users..." +go build -o build/release/init_users ./cmd/init_users +echo "Сборка init_users завершена: build/release/init_users" + +# ---------- Сборка утилиты добавления пользователей ---------- +echo "Сборка add_user..." +go build -o build/release/add_user ./cmd/add_user +echo "Сборка add_user завершена: build/release/add_user" + +echo "Все бинарники успешно собраны." diff --git a/scripts/config.sh b/scripts/config.sh new file mode 100644 index 0000000..fb5af12 --- /dev/null +++ b/scripts/config.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# -------------------------------------- +# Настройка среды для AuthApp на Debian 12 +# -------------------------------------- + +echo "Обновление репозиториев..." +sudo apt update + +echo "Установка Go, GCC и SQLite..." +sudo apt install -y golang gcc sqlite3 libsqlite3-dev ca-certificates + +echo "Установка Go модулей..." +go mod tidy + +echo "Среда готова." \ No newline at end of file diff --git a/scripts/run.sh b/scripts/run.sh new file mode 100644 index 0000000..3dad5be --- /dev/null +++ b/scripts/run.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# -------------------------------------- +# Запуск AuthApp +# -------------------------------------- + +CONFIG_PATH="configs/config.toml" + +if [ ! -f "$CONFIG_PATH" ]; then + echo "Конфигурационный файл $CONFIG_PATH не найден!" + exit 1 +fi + +echo "Запуск AuthApp с конфигурацией $CONFIG_PATH..." +./build/release/authapp --config "$CONFIG_PATH" \ No newline at end of file From 9f7884800127eb84d4166fe3787c0b5e3956b1a6 Mon Sep 17 00:00:00 2001 From: nihonium Date: Wed, 14 Jan 2026 13:23:43 +0300 Subject: [PATCH 2/2] docs: updated README --- README.md | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 146 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index af7f593..adb4563 100644 --- a/README.md +++ b/README.md @@ -1 +1,146 @@ -# Linux Auth \ No newline at end of file +# Linux Auth — Приложение аутентификации на Linux + +Linux Auth — консольное приложение для аутентификации пользователей на Linux (Debian 12) с использованием локальной SQLite базы данных. +Поддерживает: + +- Ввод логина и пароля с маской +- Ограничение числа попыток входа +- Сброс формы +- Настраиваемые параметры через TOML +- CLI утилиты для инициализации и добавления пользователей + +## Настройка окружения + +1. Установить Go, gcc и SQLite dev на Debian 12: + +```bash +bash scripts/config.sh +``` + +- Обновляет репозитории + +- Устанавливает Go, GCC, SQLite + +- Подготавливает зависимости Go проекта + +## Сборка проекта + +Скрипт ```build.sh``` собирает все бинарники: + +- Основное приложение: authapp + +- Инициализация пользователей: init_users + +- CLI утилита для добавления пользователей: add_user + +``` +bash scripts/build.sh +``` + +- CGO включён для работы с go-sqlite3 + +- Создаёт release и debug версии (build/release/, build/debug/) + +## Инициализация пользователей + +Перед первым запуском необходимо создать начальных пользователей: + +``` +./build/release/init_users +``` + +- Создаёт пользователей из скрипта (admin, user1) + +- Пароли автоматически хешируются через SHA-256 + +## Добавление новых пользователей + +Используйте утилиту ```add_user``` для добавления пользователя без изменения кода: + +``` +./build/release/add_user -username USER -password PASS +``` + +Пример: +``` +./build/release/add_user -username test -password 1234 +``` + +## Запуск основного приложения +``` +bash scripts/run.sh +``` + +- Запускает authapp с конфигурацией configs/config.toml + +- Поддерживает ввод логина и пароля с маской + +- Предусмотрена логика ограничения попыток и блокировки пользователя + +- Позволяет сбросить форму и повторить попытку + +Пример работы: +``` +=== AuthApp === +Логин: admin +Пароль: ****** +Доступ разрешён. Добро пожаловать, admin! +``` + +## Конфигурация (configs/config.toml) + +Пример: +``` +[app] +name = "AuthApp" +max_login_attempts = 3 +lock_timeout_sec = 300 + +[database] +type = "sqlite" +path = "./data/users.db" + +[security] +password_hash = "sha256" + +[ui] +show_welcome = true +``` + +- ```max_login_attempts``` — количество попыток перед блокировкой + +- ```lock_timeout_sec``` — время блокировки пользователя (сек) + +- ```password_hash``` — алгоритм хеширования пароля + +- ```show_welcome``` — вывод приветствия при старте + +## Особенности и назначение утилит + +```authapp```: Основное приложение для аутентификации пользователей +```init_users```:Создаёт начальных пользователей в базе SQLite (admin, user1) +```add_user```: CLI утилита для добавления новых пользователей без перекомпиляции + +## Проверка работы + +Собрать проект: +``` +bash scripts/build.sh +``` + +Инициализировать пользователей: +``` +./build/release/init_users +``` + +Запустить приложение: +``` +bash scripts/run.sh +``` + +Протестировать успешный и неуспешный вход + +Добавить нового пользователя: +``` +./build/release/add_user -username test -password 1234 +``` \ No newline at end of file