142 lines
6.5 KiB
Python
142 lines
6.5 KiB
Python
import pyperclip
|
|
import ftpserver
|
|
import os
|
|
import json
|
|
import sys
|
|
import socket
|
|
import webserver
|
|
import webbrowser
|
|
from tkinter import *
|
|
from tkinter import messagebox
|
|
from ttkthemes import *
|
|
from tkinter.ttk import *
|
|
from multiprocessing import Process
|
|
|
|
def getip():
|
|
try:
|
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
s.connect(('192.168.1.1', 0))
|
|
ip = s.getsockname()[0]
|
|
except:
|
|
ip = "localhost"
|
|
finally:
|
|
s.close()
|
|
return ip
|
|
def jsonget(key_name):
|
|
with open("setting.json") as f:
|
|
json_data = f.read()
|
|
data = json.loads(json_data)
|
|
f.close()
|
|
return data[key_name]
|
|
def webserver_ui():
|
|
if True :
|
|
#webserverui_status = 1
|
|
subwindow = ThemedTk(theme="yaru", toplevel=True, themebg=True)
|
|
subwindow.title("WebServer | LAN++ Manager")
|
|
subwindow.geometry("850x500")
|
|
os.chdir(static_path)
|
|
task = Process(target=webserver.start)
|
|
def start():
|
|
task.start()
|
|
print("started")
|
|
def __close__():
|
|
task.terminate()
|
|
os.chdir(static_path)
|
|
print("closed")
|
|
def close():
|
|
if task.is_alive() == False:
|
|
start()
|
|
__close__()
|
|
os.chdir(static_path)
|
|
subwindow.destroy()
|
|
def copylink():
|
|
pyperclip.copy("http://" + str(getip()) + ":" + jsonget("webserverport"))
|
|
ntext = " 点击按钮以控制[浏览器文件管理服务]\n [启动] - 启动服务\n [关闭窗口并退出] - 退出窗口(退出服务)\n [复制访问链接] - 复制链接以便访问服务" + '当前配置:\n 端口:' + jsonget("ftpserverport") + "\n 目录: " + jsonget("webserverroot") + "\n 打开服务后请用浏览器打开此链接以操作文件: [http://" + str(getip()) + ":" + jsonget("webserverport") + "]\n"
|
|
lbl1 = Label(subwindow, text=ntext)
|
|
lbl1.grid(column=1, row=1)
|
|
wtext = " 已知Bug:终止服务后,端口仍会占用一段时间,建议终止服务后一分钟后重新启动服务\n 注意:在不了解此程序文档时请勿打开多个相同服务,如需要,可在Wiki的[特技]一栏中找到方法."
|
|
lbl2 = Label(subwindow, text=wtext)
|
|
lbl2.grid(column=1, row=2)
|
|
start_btn = Button(subwindow, text="启动", command=start)
|
|
start_btn.grid(column=1, row=3)
|
|
close_btn = Button(subwindow, text="关闭窗口并退出", command=close)
|
|
close_btn.grid(column=1, row=4)
|
|
copy_btn = Button(subwindow, text="复制访问链接", command=copylink)
|
|
copy_btn.grid(column=1, row=5)
|
|
subwindow.protocol("WM_DELETE_WINDOW", close)
|
|
subwindow.mainloop()
|
|
def ftpserver_ui():
|
|
if True :
|
|
#webserverui_status = 1
|
|
subwindow = ThemedTk(theme="yaru", toplevel=True, themebg=True)
|
|
subwindow.title("FTPServer | LAN++ Manager")
|
|
subwindow.geometry("850x500")
|
|
os.chdir(static_path)
|
|
task = Process(target=ftpserver.start)
|
|
def start():
|
|
task.start()
|
|
print("started")
|
|
def __close__():
|
|
task.terminate()
|
|
os.chdir(static_path)
|
|
print("closed")
|
|
def close():
|
|
if task.is_alive() == False:
|
|
start()
|
|
__close__()
|
|
os.chdir(static_path)
|
|
subwindow.destroy()
|
|
def copylink():
|
|
pyperclip.copy("ftp://" + jsonget("ftpserveruser") + "@" + str(getip()) + ":" + jsonget("ftpserverport"))
|
|
ntext = " 点击按钮以控制[FTP文件传输服务]\n [启动] - 启动服务\n [关闭窗口并退出] - 退出窗口(退出服务)\n [复制访问链接] - 复制链接以便访问服务" + '当前配置:\n 端口:' + jsonget("ftpserverport") + "\n 目录: " + jsonget("ftpserverroot") + "\n 用户名:" + jsonget("ftpserveruser") + "\n 密码:" + jsonget("ftpserverpass") + "\n 打开服务后请通过此链接连接FTP服务器: [ftp://" + jsonget("ftpserveruser") + "@" + str(getip()) + ":" + jsonget("ftpserverport") + "]"
|
|
lbl1 = Label(subwindow, text=ntext)
|
|
lbl1.grid(column=1, row=1)
|
|
wtext = " 已知Bug:终止服务后,端口仍会占用一段时间,建议终止服务后一分钟后重新启动服务\n 注意:在不了解此程序文档时请勿打开多个相同服务,如需要,可在Wiki的[特技]一栏中找到方法."
|
|
lbl2 = Label(subwindow, text=wtext)
|
|
lbl2.grid(column=1, row=2)
|
|
start_btn = Button(subwindow, text="启动", command=start)
|
|
start_btn.grid(column=1, row=3)
|
|
close_btn = Button(subwindow, text="关闭窗口并退出", command=close)
|
|
close_btn.grid(column=1, row=4)
|
|
copy_btn = Button(subwindow, text="复制访问链接", command=copylink)
|
|
copy_btn.grid(column=1, row=5)
|
|
subwindow.protocol("WM_DELETE_WINDOW", close)
|
|
subwindow.mainloop()
|
|
def setting_ui():
|
|
pass
|
|
def runexit():
|
|
sys.exit()
|
|
def about_ui():
|
|
def visit():
|
|
webbrowser.open("http://github.com/david-ajax/LANPP", new=0)
|
|
subwindow = ThemedTk(theme="yaru", toplevel=True, themebg=True)
|
|
subwindow.title("About | LAN++")
|
|
subwindow.geometry("470x270")
|
|
ntext = " LAN++ -- A powerful tool for local area network \n Version: 1.0 (Beta) \n Repo: http://github.com/david-ajax/LANpp \n Powered By Wang Zhiyu \n Use GPL 3.0 License"
|
|
lbl1 = Label(subwindow, text=ntext)
|
|
lbl1.grid(column=1, row=1)
|
|
visit_btn = Button(subwindow, text="Visit The Repository", command=visit)
|
|
visit_btn.grid(column=1, row=2)
|
|
exit_btn = Button(subwindow, text="Exit", command=subwindow.destroy)
|
|
exit_btn.grid(column=1, row=3)
|
|
def main():
|
|
window = ThemedTk(theme="yaru", toplevel=True, themebg=True)
|
|
window.title("LAN++ Manager")
|
|
window.geometry("800x200")
|
|
webserver = Button(window, text="浏览器文件管理服务", command=webserver_ui)
|
|
webserver.grid(column=0, row=2)
|
|
ftpserver = Button(window, text="FTP文件传输服务", command=ftpserver_ui)
|
|
ftpserver.grid(column=1, row=2)
|
|
setting = Button(window, text="设置", command=setting_ui)
|
|
setting.grid(column=2, row=2)
|
|
about = Button(window, text="关于", command=about_ui)
|
|
about.grid(column=3, row=2)
|
|
exit_btn = Button(window, text="退出", command=runexit)
|
|
exit_btn.grid(column=4, row=2)
|
|
window.mainloop()
|
|
if __name__ == '__main__':
|
|
static_path = os.getcwd()
|
|
fw=Tk()
|
|
fw.withdraw()
|
|
messagebox.showinfo(title='Welcome',message='欢迎使用LAN++ Beta Edition')
|
|
main() |