Initial commit: Debian Manager — управление Debian-серверами
- SSH/SFTP управление без агентов - Пакеты (apt), Docker, файлы, systemd, ufw, cron - Плейбуки, групповые операции, планировщик - Бэкапы, отчёты, Portainer, Proxmox VE, Gitea Deploy - Терминал, Telegram-уведомления, тёмная/светлая тема
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
"""Страница сервера: вкладки Обзор / Пакеты / Docker / Файлы / Сервисы / Firewall / Cron."""
|
||||
import flet as ft
|
||||
|
||||
from app.core import servers as servers_core
|
||||
from app.ui.tabs.overview import OverviewTab
|
||||
from app.ui.tabs.packages import PackagesTab
|
||||
from app.ui.tabs.docker_tab import DockerTab
|
||||
from app.ui.tabs.files_tab import FilesTab
|
||||
from app.ui.tabs.systemd_tab import SystemdTab
|
||||
from app.ui.tabs.firewall_tab import FirewallTab
|
||||
from app.ui.tabs.cron_tab import CronTab
|
||||
from app.ui.tabs.terminal_tab import TerminalTab
|
||||
|
||||
|
||||
class ServerDetailPage(ft.Column):
|
||||
def __init__(self, page: ft.Page, server_id: int, go):
|
||||
super().__init__(expand=True)
|
||||
self._page = page
|
||||
self.go = go
|
||||
srv = servers_core.get_server(server_id)
|
||||
|
||||
tabs = ft.Tabs(
|
||||
selected_index=0,
|
||||
length=8,
|
||||
expand=True,
|
||||
content=ft.Column(
|
||||
expand=True,
|
||||
controls=[
|
||||
ft.TabBar(tabs=[
|
||||
ft.Tab(label="Обзор", icon=ft.Icons.INFO),
|
||||
ft.Tab(label="Пакеты", icon=ft.Icons.INVENTORY_2),
|
||||
ft.Tab(label="Docker", icon=ft.Icons.AC_UNIT),
|
||||
ft.Tab(label="Файлы", icon=ft.Icons.FOLDER),
|
||||
ft.Tab(label="Сервисы", icon=ft.Icons.SETTINGS_APPLICATIONS),
|
||||
ft.Tab(label="Firewall", icon=ft.Icons.SHIELD),
|
||||
ft.Tab(label="Cron", icon=ft.Icons.SCHEDULE),
|
||||
ft.Tab(label="Терминал", icon=ft.Icons.TERMINAL),
|
||||
]),
|
||||
ft.TabBarView(
|
||||
expand=True,
|
||||
controls=[
|
||||
ft.Container(padding=10, content=OverviewTab(page, srv)),
|
||||
ft.Container(padding=10, content=PackagesTab(page, srv)),
|
||||
ft.Container(padding=10, content=DockerTab(page, srv)),
|
||||
ft.Container(padding=10, content=FilesTab(page, srv)),
|
||||
ft.Container(padding=10, content=SystemdTab(page, srv)),
|
||||
ft.Container(padding=10, content=FirewallTab(page, srv)),
|
||||
ft.Container(padding=10, content=CronTab(page, srv)),
|
||||
ft.Container(padding=0, content=TerminalTab(page, srv)),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
|
||||
self.controls = [
|
||||
ft.Row([
|
||||
ft.IconButton(ft.Icons.ARROW_BACK, on_click=lambda e: go("dashboard")),
|
||||
ft.Text(srv.name, size=24, weight=ft.FontWeight.BOLD),
|
||||
ft.Text(f"{srv.username}@{srv.host}:{srv.port}",
|
||||
size=13, color=ft.Colors.GREY_500),
|
||||
]),
|
||||
tabs,
|
||||
]
|
||||
Reference in New Issue
Block a user