mirror of https://github.com/Justuser3310/jetwork/
Compare commits
9 Commits
c6a9b37325
...
393e02477e
Author | SHA1 | Date |
---|---|---|
justuser | 393e02477e | 4 months ago |
justuser | 19349a0946 | 4 months ago |
justuser | ffcf047286 | 4 months ago |
justuser | ec0523d52c | 4 months ago |
justuser | e72996af3c | 4 months ago |
justuser | 78202f027e | 4 months ago |
justuser | 91678cdf48 | 4 months ago |
justuser | 07954059e2 | 4 months ago |
justuser | 4eb0143970 | 4 months ago |
@ -1,15 +1,23 @@
|
||||
from re import compile, sub
|
||||
domains = ['jet', 'mirror', 'org', 'info', 'news', 'me']
|
||||
|
||||
def domain_ok(domain):
|
||||
domains = ["jet", "jw", "404", "dash", "awesome", "mirror"]
|
||||
|
||||
if domain.count(".") == 1:
|
||||
if domain.split(".")[1] in domains:
|
||||
global domains
|
||||
if domain.count('.') == 1:
|
||||
if domain.split('.')[1] in domains:
|
||||
# ../some => some
|
||||
# Защита от проверки папок выше, чем нужно и др.
|
||||
regex = compile('[^a-z.-]')
|
||||
regex = compile('[^a-z0-9.-]')
|
||||
c_domain = regex.sub('', domain)
|
||||
if domain == c_domain:
|
||||
return domain
|
||||
|
||||
return False
|
||||
|
||||
def domain_list():
|
||||
global domains
|
||||
out = ''
|
||||
for i in domains:
|
||||
out += f'{i}, '
|
||||
out = out[:-2]
|
||||
return out
|
||||
|
@ -0,0 +1,83 @@
|
||||
from dash import Dash, dcc, html, Input, Output, callback
|
||||
app = Dash(__name__, title='Jetwork', update_title=None)
|
||||
|
||||
from db import *
|
||||
from status import *
|
||||
|
||||
from os import walk
|
||||
from os import system as sys
|
||||
from platform import system
|
||||
from threading import Thread
|
||||
|
||||
app.layout = html.Div([ html.Div([
|
||||
|
||||
dcc.ConfirmDialog(id='shut_mess', message='Ты совсем гений?'),
|
||||
html.Button("Выключить клиент", className='off_btn', n_clicks=0, id='off_btn'),
|
||||
html.Div([], id='our_port', className='our_port'),
|
||||
html.Div([], id='servers', className='servers'),
|
||||
html.Div([], id='sites', className='sites'),
|
||||
dcc.Dropdown(options=[], id='search', placeholder='Поиск...'),
|
||||
|
||||
dcc.Interval(id='interval-component', interval=1*1000, n_intervals=0)
|
||||
|
||||
], className='main')], className='content')
|
||||
|
||||
|
||||
# Кнопка выключения
|
||||
@callback(
|
||||
Output('shut_mess', 'displayed'),
|
||||
Input('off_btn', 'n_clicks'),
|
||||
prevent_initial_call=True
|
||||
)
|
||||
def shut_btn(n_clicks):
|
||||
return True
|
||||
|
||||
# Обновление нашего порта (зачем?)
|
||||
@callback(Output('our_port', 'children'),
|
||||
Input('interval-component', 'n_intervals'))
|
||||
def update_our_port(n):
|
||||
return f"Ваш порт: {read()['our_port']}"
|
||||
|
||||
# Обновление доступных узлов
|
||||
@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):
|
||||
# Домен по умолчанию
|
||||
domain = read()['domain']
|
||||
# Если есть элемент в поиске
|
||||
if s_val:
|
||||
return html.Div([ dcc.Link(children=i, href=f'{domain}/{s_val}',
|
||||
target='_blank') ], className='sites_elem')
|
||||
|
||||
res = []
|
||||
for i in next(walk('cached/'), (None, None, []))[1]:
|
||||
conf = read(f'cached/{i}/config.json')
|
||||
if conf['type'] == 'dynamic':
|
||||
res.append(html.Div([ dcc.Link(children=i, href=f'http://bore.pub:{conf["port"]}',
|
||||
target='_blank') ], className='sites_elem'))
|
||||
else:
|
||||
res.append(html.Div([ dcc.Link(children=i, href=f'{domain}/{i}',
|
||||
target='_blank') ], 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
|
||||
|
||||
#app.run(debug=True, port = 5555)
|
||||
app.run(debug=False, port = 5555)
|
Loading…
Reference in new issue