# mini-ldap

Легковесный LDAP сервер на Python с поддержкой Active Directory атрибутов для тестирования и разработки.

## 🎯 Возможности

- ✅ **Cовместимость с AD**
- ✅ **Поддержка основных операций** - BIND, SEARCH, MODIFY, ADD, DELETE
- ✅ **Wildcard поиск** - поддержка масок в фильтрах
- ✅ **Динамические тестовые пользователи** - генерация до 10,000+ пользователей на лету
- ✅ **Высокая производительность** - индексы, кэширование, асинхронная запись
- ✅ **Гибкая конфигурация** - внешний INI файл с настройками
- ✅ **Debug режим** - детальное логирование для отладки

## 🔧 Установка собранного пакета

```bash
# На ЛЮБОЙ машине Debian/Ubuntu
sudo dpkg -i mini-ldap_1.0.0_all.deb

# Запуск
sudo systemctl start mini-ldap

# Проверка
sudo systemctl status mini-ldap

# Логи
sudo journalctl -u mini-ldap -f

# Конфигурация:  /etc/mini-ldap/ldap_config.ini
# База данных:   /var/lib/mini-ldap/ldap_users.json
```

## 📖 Документация

### Основные команды:

```bash
# Управление сервисом
sudo systemctl start mini-ldap
sudo systemctl stop mini-ldap
sudo systemctl status mini-ldap
sudo journalctl -u mini-ldap -f
```

### 👥 Управление пользователями

### Утилита `mini-ldap-manage`:

```bash
# Список всех пользователей
sudo mini-ldap-manage list

# Добавить пользователя (минимум)
sudo mini-ldap-manage add john password123

# Добавить пользователя (полный вариант)
sudo mini-ldap-manage add jane pass456 jane@company.com "Jane" "Smith"

# Показать детали пользователя
sudo mini-ldap-manage show john

# Изменить пароль
sudo mini-ldap-manage passwd john newpass789

# Удалить пользователя
sudo mini-ldap-manage delete john

# Добавить дополнительный email
sudo mini-ldap-manage addproxy john john.doe@company.com

# Справка
sudo mini-ldap-manage help

После изменений пользователей перезапускать сервер НЕ нужно - изменения применяются автоматически!
```

### 🔐 Дефолтные учётные записи

| Username | Password | Email | Роль | DN |
|----------|----------|-------|------|-----|
| admin | admin123 | admin@example.com | Администратор | cn=admin,dc=example,dc=com |
| user1 | password123 | ivan@example.com | Пользователь | uid=user1,ou=users,dc=example,dc=com |
| user2 | password456 | petr@example.com | Пользователь | uid=user2,ou=users,dc=example,dc=com |
| testUser1-100 | test123 | testuser{N}@emailaddr.com | Тестовые | uid=testUser{N},ou=users,dc=example,dc=com |

⚠️ **ВАЖНО:** Для тестовых(lbyfvbxtcrb[]) пользователей не работает MODIFY, DELETE

### Основной конфиг: /etc/mini-ldap/ldap_config.ini
[server]
host = 0.0.0.0          # IP для прослушивания (0.0.0.0 = все интерфейсы)
port = 10389            # Порт LDAP (не требует root если >1024)
base_dn = dc=example,dc=com

[logging]
log_level = INFO        # DEBUG, INFO

[admin]
username = admin        # admin домена
password = admin123     # его dn > cn=admin,dc=example,dc=com

[test_users]
enabled = true          # Включить динамических пользователей
prefix = testUser       # Префикс (testUser1, testUser2...)
domain = example.com
mail_domain = emailaddr.com  # почтовый домен изменить во время работы нельзя testUser1@emailaddr.com
start_number = 1
end_number = 100        # До 10,000+
password = test123      # Пароль для всех динамических
given_name_template = Test{number}
surname_template = User{number}


## 🧪 Тестирование

```bash
# Поиск всех пользователей
ldapsearch -x -H ldap://localhost:10389 \
  -D "cn=admin,dc=example,dc=com" \
  -w admin123 \
  -b "dc=example,dc=com" \
  "(objectClass=person)"

# Поиск конкретного пользователя
ldapsearch -x -H ldap://localhost:10389 \
  -D "cn=admin,dc=example,dc=com" \
  -w admin123 \
  -b "dc=example,dc=com" \
  "(uid=user1)" -LLL

# Авторизация как пользователь
ldapsearch -x -H ldap://localhost:10389 \
  -D "uid=user1,ou=users,dc=example,dc=com" \
  -w password123 \
  -b "dc=example,dc=com" \
  "(uid=user1)" -LLL
```

## 🗑️ Удаление

```bash
# Удалить пакет (сохранить конфиги)
sudo apt remove mini-ldap

# Полное удаление (включая конфиги и данные)
sudo apt purge mini-ldap
```
