Metadata-Version: 2.4
Name: byxlozax
Version: 1.0.4
Summary: Byxlozax Python tool license, live-control client, and local control server
Author: Byxlozax
Project-URL: Homepage, https://byxlozax.local
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.31.0
Requires-Dist: fastapi>=0.111.0
Requires-Dist: uvicorn[standard]>=0.30.0
Requires-Dist: SQLAlchemy>=2.0.30
Requires-Dist: pydantic>=2.7.0
Requires-Dist: alembic>=1.13.2
Requires-Dist: cryptography>=42.0.0
Provides-Extra: dev
Requires-Dist: pytest<8.0.0,>=7.4.0; extra == "dev"
Requires-Dist: httpx>=0.27.0; extra == "dev"
Requires-Dist: build>=1.2.0; extra == "dev"
Requires-Dist: twine>=5.1.0; extra == "dev"

# byxlozax

Byxlozax, Python araçlarına tek `run()` çağrısı ile lisans doğrulama,
canlı oturum kontrolü, HWID, kaynak kod yedekleme, logout ve yerel kontrol
merkezi ekler.

## Kurulum

```powershell
pip install byxlozax
```

## Yerel API Başlatma

İlk Super Admin hesabını kendin oluştur:

```powershell
python -m byxlozax_server.cli create-super-admin --username admin
```

Şifre terminalde güvenli şekilde sorulur.

Yerel API ve Byxlozax Control:

```powershell
python -m byxlozax_server.cli run-api
```

Adres:

```text
http://127.0.0.1:8000
```

`run-api` ilk kurulumda sabit şifre kullanmaz. Eğer hiç Super Admin yoksa
geçici yerel şifre üretir ve sadece terminale yazar. Üretim veya VDS
kurulumunda `BYXLOZAX_ADMIN_PASSWORD`, `BYXLOZAX_SECRET_KEY` ve
`BYXLOZAX_MASTER_KEY` ortam değişkenleri kullanılmalıdır.

## Python Kullanımı

```python
import byxlozax

byxlozax.run(
    tool_name="Checker Tool",
    version="1.0.0",
    owner_key="OWNER-KEY-HERE",
)

print("Korumalı tool kodu burada başlar.")
```

## Örnek Test

```powershell
set BYXLOZAX_OWNER_KEY=OWNER-KEY-HERE
set BYXLOZAX_LICENSE_KEY=LICENSE-KEY-HERE
python examples\test_api_tool.py
```

Etkileşimli örnek:

```powershell
python examples\example_tool.py
```

Canlı oturum testi:

```powershell
python examples\module_live_test.py
```

## Güvenlik

- Sabit admin şifresi paket içine gömülmez.
- Server imza secret ve master key makineye özel üretilir veya env ile verilir.
- Telegram bot token AES-256-GCM ile şifreli saklanır.
- Source backup içeriği DB içinde şifreli saklanır.
- Lisans key düz yazı yerine HMAC-SHA256 hash + maskeli görünüm olarak tutulur.
- Client tarafında hatırlanan Telegram ve key bilgileri HWID bağlı şifreli cache içinde saklanır.
- Owner ve Admin kullanıcıları kendi şifresini Byxlozax Control içinden değiştirebilir.
- Lisans key oluştururken Telegram kullanıcı adı girilirse bot kayıtlı kullanıcıya lisans bilgisini gönderir.
- Admin, tool sahibi hesabı oluşturup owner key ve giriş bilgisini Telegram üzerinden iletebilir.

Şifreleme kasası 10 aşamalı anahtar türetme akışı, rastgele salt, rastgele nonce,
context-bound AAD ve AES-256-GCM authenticated encryption kullanır. Güvenlik
anahtarı kodun içinde değil, ortam değişkeninde veya makineye özel secret
dosyasında tutulur.

## API Endpointleri

- `POST /api/v1/auth`
- `POST /api/v1/ping`
- `POST /api/v1/logout`
- `POST /api/v1/source-backup`

Başarılı cevap:

```json
{"status": "ok", "allowed": true}
```

Kapatma cevabı:

```json
{"status": "close", "allowed": false, "reason": "session_killed", "message": ""}
```

## Byxlozax Control

- Tool ekranında her tool için açık ve kapalı kullanıcı sayısı görünür.
- Tool bazlı kullanıcı listesinde Telegram, key, oturum durumu ve son ping zamanı yer alır.
- Aktif kullanıcı tek tek kapatılabilir veya bir toolun tüm canlı oturumları aynı anda kapatılabilir.

## Telegram Worker

Bot token, aktif durum ve bot bilgi metni Byxlozax Control içinden kaydedilir.
`run-api` çalışınca yerel API arka planda Telegram worker başlatır. Aktif bot
yapılandırması yoksa worker pasif bekler.

```powershell
python -m byxlozax_server.cli run-telegram-worker
```

Bot düğmeleri:

- `Bilgi Al`
- `Modül İstiyorum`

`Modül İstiyorum` kullanıcıyı ayarlanan Telegram hesabına yönlendirir.

## Yayın Hazırlığı

```powershell
python -m pytest -q
python -m build
python -m twine check dist/*
python -m twine upload dist/*
```

## Desteklenen Kapanış Nedenleri

- `key_expired`
- `session_killed`
- `tool_disabled`
- `maintenance`
- `key_disabled`
- `version_blocked`
- `owner_inactive`
- `hwid_blocked`
- `device_limit`
- `ip_blocked`
- `server_error`
