f624fee5e0
- SSH/SFTP управление без агентов - Пакеты (apt), Docker, файлы, systemd, ufw, cron - Плейбуки, групповые операции, планировщик - Бэкапы, отчёты, Portainer, Proxmox VE, Gitea Deploy - Терминал, Telegram-уведомления, тёмная/светлая тема
65 lines
2.8 KiB
Python
65 lines
2.8 KiB
Python
"""Страница сервера: вкладки Обзор / Пакеты / 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,
|
|
]
|