mirror of
https://github.com/Justuser3310/jetwork.git
synced 2025-01-18 17:08:48 +00:00
Обновление интерфейса, переход на Dash.
This commit is contained in:
parent
dbaded283b
commit
0f35ab55fe
BIN
assets/favicon.ico
Normal file
BIN
assets/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 103 KiB |
67
assets/style.css
Normal file
67
assets/style.css
Normal file
@ -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;
|
||||
}
|
||||
|
||||
}
|
83
interface.py
83
interface.py
@ -1,43 +1,62 @@
|
||||
import streamlit as st
|
||||
import streamlit.components.v1 as components
|
||||
from dash import Dash, dcc, html, Input, Output, callback
|
||||
app = Dash(__name__, title='Jetwork', update_title=None)
|
||||
|
||||
from os import walk
|
||||
from time import sleep
|
||||
from db import *
|
||||
from os import walk
|
||||
|
||||
# Получаем порт со входа
|
||||
from sys import argv
|
||||
our_port = argv[1]
|
||||
app.layout = html.Div([ html.Div([
|
||||
|
||||
html.Div([], id='our_port', className='our_port'),
|
||||
html.Div([], id='servers', className='servers'),
|
||||
html.Div([], id='sites', className='sites'),
|
||||
#dcc.Input(className='search', type='search', list=[1,2,3]),
|
||||
dcc.Dropdown(options=[], id='search', placeholder='Поиск...'),
|
||||
|
||||
# TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO
|
||||
dcc.Interval(id='interval-component', interval=1000*1000, n_intervals=0)
|
||||
|
||||
], className='main')], className='content')
|
||||
|
||||
|
||||
st.title('jetwork')
|
||||
|
||||
ph = st.empty()
|
||||
# Обновление нашего порта (зачем?)
|
||||
@callback(Output('our_port', 'children'),
|
||||
Input('interval-component', 'n_intervals'))
|
||||
def update_our_port(n):
|
||||
return f"Ваш порт: {read()['our_port']}"
|
||||
|
||||
while True:
|
||||
# Боковая панель
|
||||
with ph.container():
|
||||
# Столбцы для элементов
|
||||
sidebar, space, main = st.columns([60, 10, 90])
|
||||
# Обновление доступных узлов
|
||||
@callback(Output('servers', 'children'),
|
||||
Input('interval-component', 'n_intervals'))
|
||||
def update_servers(n):
|
||||
res = []
|
||||
for i in read()['ports']:
|
||||
res.append(html.Div([i], className='serv_elem'))
|
||||
return res
|
||||
|
||||
# Обновление доступных сайтов
|
||||
@callback(Output('sites', 'children'),
|
||||
Input('interval-component', 'n_intervals'),
|
||||
Input('search', 'value'))
|
||||
def update_sites(n, s_val):
|
||||
# Если есть элемент в поиске
|
||||
if s_val:
|
||||
return html.Div([s_val], className='sites_elem')
|
||||
|
||||
with sidebar:
|
||||
st.success(f"Ваш порт: {our_port}")
|
||||
res = []
|
||||
for i in next(walk('cached/'), (None, None, []))[1]:
|
||||
res.append(html.Div([i], className='sites_elem'))
|
||||
return res
|
||||
|
||||
conf = read()
|
||||
if 'ports' in conf:
|
||||
ports = conf['ports']
|
||||
for i in ports:
|
||||
st.warning(f"{i}")
|
||||
# Обновление доступных сайтов в поиске
|
||||
@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
|
||||
|
||||
with main:
|
||||
# Получаем все сайты
|
||||
sites = next(walk('cached/'), (None, None, []))[1]
|
||||
|
||||
for i in sites:
|
||||
addr = f"http://127.0.0.1:8000/{i}"
|
||||
st.info(f"[{i}]({addr})")
|
||||
|
||||
sleep(3)
|
||||
ph.empty()
|
||||
st.rerun()
|
||||
#if __name__ == '__main__':
|
||||
#app.run(debug=True, port = 9000)
|
||||
app.run(debug=False, port = 9000)
|
||||
|
29
main.py
29
main.py
@ -8,35 +8,41 @@ from network import *
|
||||
from updater import *
|
||||
from proxy import *
|
||||
from status import *
|
||||
from db import *
|
||||
|
||||
#
|
||||
# Здесь общий запуск всех файлов и команд
|
||||
|
||||
|
||||
#
|
||||
|
||||
def main():
|
||||
# Проверка обновлений
|
||||
from sys import argv
|
||||
if len(argv) == 1:
|
||||
print("Проверка обновлений...")
|
||||
system("git pull")
|
||||
print("Перезагрузка скрипта...")
|
||||
system("python main.py updated")
|
||||
print('Проверка обновлений...')
|
||||
system('git pull')
|
||||
print('Перезагрузка скрипта...')
|
||||
system('python main.py updated')
|
||||
exit()
|
||||
print("\nУспешно перезагружено!")
|
||||
print('\nУспешно перезагружено!')
|
||||
|
||||
# Запуск прокси для сервисов
|
||||
# проксируем http сервер
|
||||
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.start()
|
||||
|
||||
# проксируем сервер обработки запросов
|
||||
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.start()
|
||||
|
||||
# Загружаем порт в конфиг
|
||||
conf = read()
|
||||
conf['our_port'] = serv_port
|
||||
write(conf)
|
||||
|
||||
# Стартуем сервисы
|
||||
# http сервер
|
||||
http = Thread(target = server_http)
|
||||
@ -49,11 +55,10 @@ def main():
|
||||
updater = Thread(target = update_demon, args=(serv_port,))
|
||||
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.start()
|
||||
|
@ -1,4 +1,4 @@
|
||||
cryptography
|
||||
requests
|
||||
tqdm
|
||||
streamlit
|
||||
dash
|
||||
|
Loading…
Reference in New Issue
Block a user