Обновление интерфейса, переход на Dash.

main
justuser 4 months ago
parent dbaded283b
commit 0f35ab55fe

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

@ -0,0 +1,67 @@
.content {
/*display: flex;*/
justify-content: center;
padding: 3rem;
}
.main {
display: grid;
grid-template-areas:
"our_port search"
"servers sites"
"servers sites";
grid-template-columns: 1fr 2fr;
grid-template-rows: auto auto;
}
.our_port {
grid-area: our_port;
background: #53f453;
align-content: center;
border-radius: 0.4rem;
padding-left: 1rem;
padding-right: 1rem;
margin-right: 0.5rem;
}
.servers {
grid-area: servers;
}
.serv_elem {
background: #fff454;
align-content: center;
border-radius: 0.4rem;
padding-left: 1rem;
min-height: 2.2rem;
margin-top: 0.4rem;
margin-right: 0.5rem;
}
.sites {
grid-area: sites;
}
.sites_elem {
background: #abd4f9;
align-content: center;
border-radius: 0.4rem;
padding-left: 1rem;
min-height: 2.2rem;
margin-top: 0.4rem;
}
.search {
grid-area: search;
}
/* Действия при разрешении телефона */
@media (max-width: 900px) {
.content {
display: flex;
padding: 0;
}
}

@ -1,43 +1,62 @@
import streamlit as st from dash import Dash, dcc, html, Input, Output, callback
import streamlit.components.v1 as components app = Dash(__name__, title='Jetwork', update_title=None)
from os import walk
from time import sleep
from db import * from db import *
from os import walk
# Получаем порт со входа app.layout = html.Div([ html.Div([
from sys import argv
our_port = argv[1] html.Div([], id='our_port', className='our_port'),
html.Div([], id='servers', className='servers'),
html.Div([], id='sites', className='sites'),
st.title('jetwork') #dcc.Input(className='search', type='search', list=[1,2,3]),
dcc.Dropdown(options=[], id='search', placeholder='Поиск...'),
ph = st.empty()
# TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO
while True: dcc.Interval(id='interval-component', interval=1000*1000, n_intervals=0)
# Боковая панель
with ph.container(): ], className='main')], className='content')
# Столбцы для элементов
sidebar, space, main = st.columns([60, 10, 90])
# Обновление нашего порта (зачем?)
with sidebar: @callback(Output('our_port', 'children'),
st.success(f"Ваш порт: {our_port}") Input('interval-component', 'n_intervals'))
def update_our_port(n):
conf = read() return f"Ваш порт: {read()['our_port']}"
if 'ports' in conf:
ports = conf['ports'] # Обновление доступных узлов
for i in ports: @callback(Output('servers', 'children'),
st.warning(f"{i}") Input('interval-component', 'n_intervals'))
def update_servers(n):
with main: res = []
# Получаем все сайты for i in read()['ports']:
sites = next(walk('cached/'), (None, None, []))[1] res.append(html.Div([i], className='serv_elem'))
return res
for i in sites:
addr = f"http://127.0.0.1:8000/{i}" # Обновление доступных сайтов
st.info(f"[{i}]({addr})") @callback(Output('sites', 'children'),
Input('interval-component', 'n_intervals'),
sleep(3) Input('search', 'value'))
ph.empty() def update_sites(n, s_val):
st.rerun() # Если есть элемент в поиске
if s_val:
return html.Div([s_val], className='sites_elem')
res = []
for i in next(walk('cached/'), (None, None, []))[1]:
res.append(html.Div([i], className='sites_elem'))
return res
# Обновление доступных сайтов в поиске
@callback(Output('search', 'options'),
Input('interval-component', 'n_intervals'))
def update_search(n):
res = []
for i in next(walk('cached/'), (None, None, []))[1]:
res.append(i)
return res
#if __name__ == '__main__':
#app.run(debug=True, port = 9000)
app.run(debug=False, port = 9000)

@ -8,35 +8,41 @@ from network import *
from updater import * from updater import *
from proxy import * from proxy import *
from status import * from status import *
from db import *
#
# Здесь общий запуск всех файлов и команд # Здесь общий запуск всех файлов и команд
#
def main(): def main():
# Проверка обновлений # Проверка обновлений
from sys import argv from sys import argv
if len(argv) == 1: if len(argv) == 1:
print("Проверка обновлений...") print('Проверка обновлений...')
system("git pull") system('git pull')
print("Перезагрузка скрипта...") print('Перезагрузка скрипта...')
system("python main.py updated") system('python main.py updated')
exit() exit()
print("\nУспешно перезагружено!") print('\nУспешно перезагружено!')
# Запуск прокси для сервисов # Запуск прокси для сервисов
# проксируем http сервер # проксируем http сервер
http_port = port_gen() http_port = port_gen()
print(f"HTTP: {http_port}") print(f'HTTP: {http_port}')
rp_http = Thread(target = watch_http, args=(http_port,)) rp_http = Thread(target = watch_http, args=(http_port,))
rp_http.start() rp_http.start()
# проксируем сервер обработки запросов # проксируем сервер обработки запросов
serv_port = port_gen() serv_port = port_gen()
print(f"SERV: {serv_port}") print(f'SERV: {serv_port}')
rp_serv = Thread(target = watch_serv, args=(serv_port,)) rp_serv = Thread(target = watch_serv, args=(serv_port,))
rp_serv.start() rp_serv.start()
# Загружаем порт в конфиг
conf = read()
conf['our_port'] = serv_port
write(conf)
# Стартуем сервисы # Стартуем сервисы
# http сервер # http сервер
http = Thread(target = server_http) http = Thread(target = server_http)
@ -49,11 +55,10 @@ def main():
updater = Thread(target = update_demon, args=(serv_port,)) updater = Thread(target = update_demon, args=(serv_port,))
updater.start() updater.start()
# !!! ИДЁТ ПЕРЕРАБОТКА !!!
# Стартуем интерфейс # Стартуем интерфейс
system(f"python -m streamlit run --server.address=127.0.0.1 interface.py {serv_port}") system('python interface.py')
if __name__ == "__main__": if __name__ == '__main__':
# Запускаем главный процесс, чтобы потом легко убить его # Запускаем главный процесс, чтобы потом легко убить его
p = Process(target=main) p = Process(target=main)
p.start() p.start()

@ -1,4 +1,4 @@
cryptography cryptography
requests requests
tqdm tqdm
streamlit dash

Loading…
Cancel
Save