Metadata-Version: 2.4
Name: apache-aui
Version: 0.1.1
Summary: Interactive CLI for managing Apache virtual hosts, static sites, proxies, and TLS settings.
Author: Apache AUI contributors
License-Expression: MIT
Project-URL: Homepage, https://github.com/drGOD/apache-aui
Project-URL: Repository, https://github.com/drGOD/apache-aui
Project-URL: Issues, https://github.com/drGOD/apache-aui/issues
Keywords: apache,cli,virtualhost,reverse-proxy,ssl,letsencrypt
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: Proxy Servers
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: build>=1.2.2; extra == "dev"
Requires-Dist: twine>=6.1.0; extra == "dev"
Dynamic: license-file

# Apache AUI

Небольшое CLI-приложение для управления Apache `VirtualHost`-конфигурацией:

- статические сайты с `DocumentRoot`
- SPA/static fallback rewrite rules
- reverse proxy сайты
- SSL через Let's Encrypt или вручную заданные сертификаты
- интерактивное создание, редактирование и удаление сайтов

## Статус проекта

Проект готов к публикации как публичный Git-репозиторий и пакет на PyPI.

## Быстрый старт

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
apache-aui menu
```

По умолчанию приложение хранит состояние в `data/sites.json`, а итоговый Apache-конфиг пишет в `generated/apache/sites.conf`.

## Команды

```bash
apache-aui menu
apache-aui list
apache-aui import /etc/apache2/httpd.conf
apache-aui render
apache-aui certbot my-site
apache-aui certbot my-site --run
```

## Установка из PyPI

```bash
pip install apache-aui
```

## Что генерируется

- `*:80` vhost для каждого сайта
- `*:443` vhost, если включен SSL
- redirect с HTTP на HTTPS, если это включено
- `ProxyPass` и `ProxyPassReverse` для proxy-сайтов
- SPA rewrite rules для статических сайтов
- импорт существующего Apache-конфига для миграции без ручного переноса

## Пример сценария

1. Создаете сайт типа `static` или `proxy` через `apache-aui menu`.
2. Включаете SSL в пункте `Configure certificate`.
3. Если выбран `letsencrypt`, CLI сразу показывает команду `certbot`.
4. Выполняете `apache-aui render`.
5. Копируете содержимое `generated/apache/sites.conf` в ваш Apache include-файл и перезагружаете Apache.

## Миграция с существующего Apache-конфига

Для бесшовного старта можно импортировать существующий конфиг:

```bash
apache-aui import /etc/apache2/httpd.conf
```

CLI распознает:

- `DocumentRoot`-сайты как `static`
- `ProxyPass`/`ProxyPassReverse`-сайты как `proxy`
- SPA fallback rules
- `ServerAlias`
- SSL-блоки с ручными сертификатами и Let's Encrypt
- HTTP to HTTPS redirect

После импорта сайты сохраняются в `data/sites.json`, и ими уже можно управлять через меню или повторный `render`.

## Пример миграции

Если у вас есть смесь статических сайтов, SPA и reverse proxy, типовой поток будет таким:

1. Выполняете `apache-aui import /etc/apache2/httpd.conf`.
2. Проверяете распознанные сайты через `apache-aui list`.
3. При необходимости корректируете детали через `apache-aui menu`.
4. Генерируете управляемый конфиг через `apache-aui render`.

## Публикация пакета

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
python -m build
python -m twine check dist/*
```

Для загрузки на TestPyPI:

```bash
python -m twine upload --repository testpypi dist/*
```

Для загрузки на PyPI:

```bash
python -m twine upload dist/*
```

Если публикуете через GitHub Actions, в репозитории уже подготовлены workflow для CI и релиза.
