Добавление кнопки выключения (она работает)

main
justuser 5 months ago
parent e693d8450e
commit a52fb2679a

@ -7,13 +7,34 @@
.main { .main {
display: grid; display: grid;
grid-template-areas: grid-template-areas:
"our_port search" "off_btn search"
"servers sites" "our_port sites"
"servers sites"; "servers sites";
grid-template-columns: 1fr 2fr; grid-template-columns: 1fr 2fr;
grid-template-rows: auto auto; grid-template-rows: auto auto;
} }
.off_btn {
grid-area: off_btn;
background: #ff5a5a;
align-content: center;
border-radius: 0.4rem;
padding-left: 1rem;
padding-right: 1rem;
border-style: hidden;
font-size: 1rem;
width: calc(100% - 0.5rem);
height: 100%;
}
.off_btn:active {
background-color: #c85000;
box-shadow: rgba(0, 0, 0, .06) 0 2px 4px;
transform: scale(.96);
}
.our_port { .our_port {
grid-area: our_port; grid-area: our_port;
background: #53f453; background: #53f453;
@ -22,6 +43,7 @@
padding-left: 1rem; padding-left: 1rem;
padding-right: 1rem; padding-right: 1rem;
margin-right: 0.5rem; margin-right: 0.5rem;
margin-top: 0.4rem;
} }
.servers { .servers {

@ -2,14 +2,20 @@ from dash import Dash, dcc, html, Input, Output, callback
app = Dash(__name__, title='Jetwork', update_title=None) app = Dash(__name__, title='Jetwork', update_title=None)
from db import * from db import *
from status import *
from os import walk from os import walk
from os import system as sys
from platform import system
from threading import Thread
app.layout = html.Div([ html.Div([ 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='our_port', className='our_port'),
html.Div([], id='servers', className='servers'), html.Div([], id='servers', className='servers'),
html.Div([], id='sites', className='sites'), html.Div([], id='sites', className='sites'),
#dcc.Input(className='search', type='search', list=[1,2,3]),
dcc.Dropdown(options=[], id='search', placeholder='Поиск...'), dcc.Dropdown(options=[], id='search', placeholder='Поиск...'),
dcc.Interval(id='interval-component', interval=1*1000, n_intervals=0) dcc.Interval(id='interval-component', interval=1*1000, n_intervals=0)
@ -17,6 +23,29 @@ dcc.Interval(id='interval-component', interval=1*1000, n_intervals=0)
], className='main')], className='content') ], className='main')], className='content')
# Функция выключения
def shutdown():
# Задаём код остановки
status_set('stop')
# Определяем платформу
if system() == 'Linux':
# вырубаем прокси и скрипты
sys('killall bore')
sys('killall python')
elif system() == 'Windows':
sys('taskkill /f /im bore.exe')
sys('taskkill /f /im python.exe')
# Кнопка выключения
@callback(
Output('shut_mess', 'displayed'),
Input('off_btn', 'n_clicks'),
prevent_initial_call=True
)
def shut_btn(n_clicks):
th = Thread(target=shutdown)
th.start()
return True
# Обновление нашего порта (зачем?) # Обновление нашего порта (зачем?)
@callback(Output('our_port', 'children'), @callback(Output('our_port', 'children'),

@ -63,7 +63,7 @@ if __name__ == '__main__':
p = Process(target=main) p = Process(target=main)
p.start() p.start()
status_set(True) # Устанавливаем статус, что программа работает status_set('work') # Устанавливаем статус, что программа работает
st = status_check() st = status_check()
while st: while st:

@ -2,6 +2,8 @@ from os import system, name
from threading import Thread from threading import Thread
from time import sleep from time import sleep
from status import *
global http_out ; http_out = None global http_out ; http_out = None
def proxy_http(port): def proxy_http(port):
global http_out global http_out
@ -24,13 +26,15 @@ def watch_http(port):
run.start() run.start()
global http_out global http_out
while True: st = status_check()
while st:
# Если команда вышла # Если команда вышла
if http_out or not run.is_alive(): if http_out or not run.is_alive():
run.join(1) run.join(1)
http_out = None http_out = None
run = Thread(target=proxy_http, args=(port,)) run = Thread(target=proxy_http, args=(port,))
run.start() run.start()
st = status_check()
sleep(1) sleep(1)
def watch_serv(port): def watch_serv(port):
@ -38,10 +42,12 @@ def watch_serv(port):
run.start() run.start()
global serv_out global serv_out
while True: st = status_check()
while st:
if serv_out or not run.is_alive(): if serv_out or not run.is_alive():
run.join(1) run.join(1)
serv_out = None serv_out = None
run = Thread(target=proxy_serv, args=(port,)) run = Thread(target=proxy_serv, args=(port,))
run.start() run.start()
st = status_check()
sleep(1) sleep(1)

Loading…
Cancel
Save