feat: mobile-like window size and always-visible stats
- Changed window size to mobile phone format (400x800) - Removed width condition for ActiveProxyFooter - now always visible - Added run-umbrix.sh launch script with icon copying - Stats cards now display on all screen sizes
This commit is contained in:
305
update-server/admin/README.md
Normal file
305
update-server/admin/README.md
Normal file
@@ -0,0 +1,305 @@
|
||||
# 🎨 Веб-панель управления обновлениями
|
||||
|
||||
## 📋 Что это?
|
||||
|
||||
Простой веб-интерфейс для управления обновлениями Umbrix без редактирования JSON вручную!
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ 🚀 Umbrix Update Manager │
|
||||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||||
│ │
|
||||
│ 📦 Текущая версия: 2.5.7 │
|
||||
│ │
|
||||
│ Версия: [2.5.8____________] │
|
||||
│ Build: [258______________] │
|
||||
│ URL: [https://...] │
|
||||
│ Описание: [Что нового...] │
|
||||
│ │
|
||||
│ [🔄 Загрузить] [💾 Сохранить обновление] │
|
||||
└──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Установка
|
||||
|
||||
### Шаг 1: Загрузите файлы
|
||||
|
||||
Загрузите на сервер папку `admin/`:
|
||||
|
||||
```
|
||||
update-server/
|
||||
├── admin/ ← загрузите эту папку
|
||||
│ ├── index.html ← веб-интерфейс
|
||||
│ ├── save.php ← скрипт сохранения
|
||||
│ └── .htaccess ← защита (опционально)
|
||||
├── api.php
|
||||
└── latest.json
|
||||
```
|
||||
|
||||
### Шаг 2: Настройте права доступа
|
||||
|
||||
```bash
|
||||
# Права на папку admin
|
||||
chmod 755 admin/
|
||||
|
||||
# Права на файлы
|
||||
chmod 644 admin/index.html
|
||||
chmod 644 admin/save.php
|
||||
|
||||
# latest.json должен быть доступен для записи
|
||||
chmod 666 latest.json
|
||||
```
|
||||
|
||||
### Шаг 3: Откройте в браузере
|
||||
|
||||
Перейдите по адресу:
|
||||
```
|
||||
https://api.umbrix.net/admin/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Как пользоваться?
|
||||
|
||||
### 1. Просмотр текущей версии
|
||||
|
||||
В верхней части автоматически отображается:
|
||||
- ✅ Текущая версия
|
||||
- ✅ Build number
|
||||
- ✅ Статус (STABLE/BETA)
|
||||
- ✅ Дата публикации
|
||||
|
||||
### 2. Создание нового обновления
|
||||
|
||||
1. Заполните форму:
|
||||
- **Версия** (обязательно): `2.5.8`
|
||||
- **Build Number** (обязательно): `258`
|
||||
- **URL APK** (обязательно): `https://api.umbrix.net/downloads/umbrix-2.5.8.apk`
|
||||
- **Описание**: Что нового в версии
|
||||
- **Дата**: Автоматически или выберите
|
||||
- **Мин. версия**: С какой версии можно обновляться
|
||||
- **Бета**: Поставьте галочку для предварительных релизов
|
||||
|
||||
2. Нажмите **"💾 Сохранить обновление"**
|
||||
|
||||
3. Готово! Файл `latest.json` обновлен
|
||||
|
||||
### 3. Загрузка существующих данных
|
||||
|
||||
Нажмите **"🔄 Загрузить текущую"** чтобы заполнить форму данными из `latest.json`
|
||||
|
||||
---
|
||||
|
||||
## 🔒 Безопасность
|
||||
|
||||
### Вариант 1: Защита паролем через .htaccess
|
||||
|
||||
Создайте файл `admin/.htaccess`:
|
||||
|
||||
```apache
|
||||
AuthType Basic
|
||||
AuthName "Umbrix Admin Panel"
|
||||
AuthUserFile /var/www/updates/admin/.htpasswd
|
||||
Require valid-user
|
||||
```
|
||||
|
||||
Создайте пароль:
|
||||
|
||||
```bash
|
||||
cd /var/www/updates/admin
|
||||
htpasswd -c .htpasswd admin
|
||||
# Введите пароль
|
||||
```
|
||||
|
||||
### Вариант 2: Защита через PHP
|
||||
|
||||
Раскомментируйте строки в `save.php`:
|
||||
|
||||
```php
|
||||
// РАСКОММЕНТИРУЙТЕ ЭТИ СТРОКИ:
|
||||
$provided_password = $_SERVER['HTTP_X_ADMIN_PASSWORD'] ?? '';
|
||||
if ($provided_password !== $admin_password) {
|
||||
http_response_code(403);
|
||||
echo json_encode(['success' => false, 'message' => 'Неверный пароль']);
|
||||
exit();
|
||||
}
|
||||
```
|
||||
|
||||
Затем в `index.html` добавьте в fetch:
|
||||
|
||||
```javascript
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Admin-Password': 'umbrix2024' // ваш пароль
|
||||
}
|
||||
```
|
||||
|
||||
### Вариант 3: Скрыть папку admin
|
||||
|
||||
Переименуйте папку в что-то секретное:
|
||||
|
||||
```bash
|
||||
mv admin secret-panel-f7a8e2b9
|
||||
```
|
||||
|
||||
Адрес будет: `https://api.umbrix.net/secret-panel-f7a8e2b9/`
|
||||
|
||||
---
|
||||
|
||||
## 📱 Использование с телефона
|
||||
|
||||
Интерфейс адаптивный - можно управлять с телефона!
|
||||
|
||||
1. Откройте в браузере
|
||||
2. Сохраните на главный экран
|
||||
3. Готово - полноценное PWA приложение
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Тестирование локально
|
||||
|
||||
```bash
|
||||
# Запустите PHP сервер
|
||||
cd update-server
|
||||
php -S localhost:8000
|
||||
|
||||
# Откройте в браузере:
|
||||
http://localhost:8000/admin/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✨ Возможности
|
||||
|
||||
✅ **Красивый интерфейс** - современный дизайн
|
||||
✅ **Без кода** - просто заполните форму
|
||||
✅ **Валидация** - проверка всех полей
|
||||
✅ **Автобэкап** - старые версии сохраняются
|
||||
✅ **Логирование** - все действия записываются
|
||||
✅ **Мобильный** - работает на телефоне
|
||||
✅ **Безопасность** - защита паролем
|
||||
|
||||
---
|
||||
|
||||
## 📝 Пример использования
|
||||
|
||||
### Сценарий: Выкатка новой версии
|
||||
|
||||
1. **Соберите APK:**
|
||||
```bash
|
||||
flutter build apk --release
|
||||
```
|
||||
|
||||
2. **Загрузите APK на сервер** в `downloads/umbrix-2.5.8.apk`
|
||||
|
||||
3. **Откройте админ-панель** в браузере
|
||||
|
||||
4. **Заполните форму:**
|
||||
- Версия: `2.5.8`
|
||||
- Build: `258`
|
||||
- URL: `https://api.umbrix.net/downloads/umbrix-2.5.8.apk`
|
||||
- Описание: `🎉 Исправлены ошибки, улучшена стабильность`
|
||||
|
||||
5. **Нажмите "Сохранить"**
|
||||
|
||||
6. **Готово!** Пользователи получат уведомление
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Решение проблем
|
||||
|
||||
### Ошибка "Permission denied"
|
||||
|
||||
```bash
|
||||
# Дайте права на запись
|
||||
chmod 666 latest.json
|
||||
chmod 777 logs/
|
||||
```
|
||||
|
||||
### Ошибка "Method Not Allowed"
|
||||
|
||||
Проверьте, что файл `save.php` доступен:
|
||||
```bash
|
||||
curl -X POST https://api.umbrix.net/admin/save.php
|
||||
```
|
||||
|
||||
### Не загружается current version
|
||||
|
||||
Проверьте путь к `latest.json` в `save.php`:
|
||||
```php
|
||||
$json_file = __DIR__ . '/../latest.json';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Структура файлов
|
||||
|
||||
```
|
||||
update-server/
|
||||
├── admin/
|
||||
│ ├── index.html ← Веб-интерфейс
|
||||
│ ├── save.php ← Скрипт сохранения
|
||||
│ ├── .htaccess ← Защита (опционально)
|
||||
│ └── README.md ← Эта инструкция
|
||||
│
|
||||
├── api.php ← API для приложения
|
||||
├── latest.json ← Текущая версия
|
||||
├── latest.json.backup.* ← Автобэкапы
|
||||
│
|
||||
├── downloads/ ← APK файлы
|
||||
│ └── umbrix-*.apk
|
||||
│
|
||||
└── logs/
|
||||
├── access.log ← Логи API
|
||||
└── admin.log ← Логи админки
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Дополнительные возможности
|
||||
|
||||
### Добавить подтверждение
|
||||
|
||||
В `index.html` перед сохранением:
|
||||
|
||||
```javascript
|
||||
if (!confirm('Точно сохранить обновление v' + formData.version + '?')) {
|
||||
return;
|
||||
}
|
||||
```
|
||||
|
||||
### Показать историю версий
|
||||
|
||||
Добавьте в `save.php`:
|
||||
|
||||
```php
|
||||
// Сохранение в историю
|
||||
$history_file = __DIR__ . '/../history.json';
|
||||
$history = file_exists($history_file)
|
||||
? json_decode(file_get_contents($history_file), true)
|
||||
: [];
|
||||
$history[] = array_merge($update_data, ['saved_at' => date('c')]);
|
||||
file_put_contents($history_file, json_encode($history, JSON_PRETTY_PRINT));
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Готово!
|
||||
|
||||
Теперь у вас есть удобная панель управления обновлениями!
|
||||
|
||||
**Не нужно:**
|
||||
- ❌ Редактировать JSON вручную
|
||||
- ❌ Подключаться через SSH
|
||||
- ❌ Помнить формат файлов
|
||||
|
||||
**Просто:**
|
||||
- ✅ Открыли браузер
|
||||
- ✅ Заполнили форму
|
||||
- ✅ Нажали "Сохранить"
|
||||
|
||||
---
|
||||
|
||||
**🎉 Приятного использования!**
|
||||
Reference in New Issue
Block a user