Compare commits

..

2 commits

Author SHA1 Message Date
9f78848001 docs: updated README 2026-01-14 13:23:43 +03:00
94f310872c feat: debian scripts 2026-01-14 13:23:24 +03:00
4 changed files with 209 additions and 1 deletions

147
README.md
View file

@ -1 +1,146 @@
# Linux Auth # 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
```

34
scripts/build.sh Normal file
View file

@ -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 "Все бинарники успешно собраны."

15
scripts/config.sh Normal file
View file

@ -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 "Среда готова."

14
scripts/run.sh Normal file
View file

@ -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"