13 Commits

Author SHA1 Message Date
RTAkland
c9ec788cd3 feat: update version 2021-12-21 21:37:53 +08:00
RTAkland
30240033cf feat: update language files 2021-12-21 21:37:33 +08:00
RTAkland
f986a037a8 feat: added SSL 2021-12-21 21:37:13 +08:00
RTAkland
1b96caf719 feat: fixed a bug 2021-12-21 21:36:29 +08:00
RTAkland
df1d5a13b4 feat: added a small info 2021-12-21 20:59:05 +08:00
RTAkland
2c111536c7 feat: update version 2021-12-21 20:57:56 +08:00
RTAkland
1bedb05ac1 feat: rename webserver -> webservice 2021-12-21 20:56:14 +08:00
RTAkland
fd10791baa feat: update language files 2021-12-21 20:55:39 +08:00
RTAkland
98b4b9305b feat: rename file 2021-12-21 20:55:09 +08:00
RTAkland
62d08096b3 feat: added get_host_ip.py 2021-12-21 20:54:38 +08:00
RTAkland
c32efe4b44 feat: added webservice host ip info 2021-12-21 20:54:02 +08:00
RTAkland
9e3f866fb8 feat: fixed a small bug 2021-12-21 20:53:35 +08:00
RTAkland
e8b1a910ae feat: fixed a bug 2021-12-20 22:03:49 +08:00
9 changed files with 63 additions and 18 deletions

View File

@@ -1,7 +1,7 @@
<p align="center">
<a href="https://github.com/MarkusJoe/QWeather">
<img src="https://img.shields.io/badge/Python-3.10.x-blue.svg" alt="PythonVersion">
<img src="https://img.shields.io/badge/release-3.1.1b-green.svg" alt="QWeatherVersion">
<img src="https://img.shields.io/badge/release-3.1.3b-green.svg" alt="QWeatherVersion">
<img src="https://img.shields.io/badge/LINCESE-Apache2.0-orange.svg" alt="LICENSE">
</a>
</p>

View File

@@ -103,7 +103,12 @@ client-settings:
# [选填/只能一个] 开启本地网页快速查看天气
# 默认: False
# 可选: "True" "False"
webserver: false
webservice: false
# [必填/只能一个] 是否使用SSL 连接到邮箱服务器
# 默认 True
# 可选: "True" "False"
SSL: True
# [标识/不填] 仅作用户读取标识

View File

@@ -6,7 +6,7 @@
# @File Name: information.py
import requests
from core import read_config
from core.read_config import read_config
class WeatherInfo:

View File

@@ -13,9 +13,10 @@ from concurrent.futures import ProcessPoolExecutor
from core.logger import Logger
from core.language import Language
from core.settings import change_settings
from lib import webserver
from core.read_config import read_config
from core.sendmail import Mail
from lib.get_host_ip import get_host_ip
from lib import webservice
def check_time():
@@ -105,16 +106,18 @@ def main():
Logger.debug(f'{language["debug_done"]}')
sys.exit(0)
case 'setting':
change_settings()
Logger.debug(f'{language["debug_done"]}')
case _:
if check_config():
setting()
else:
change_settings()
Logger.debug(f'{language["debug_done"]}')
case _:
pass
processes.submit(check_time)
if settings[2]['webserver']:
processes.submit(webserver.process_request())
if settings[2]['webservice']:
Logger.info(f'{language["webservice_ip"]}:{get_host_ip()}:7898')
processes.submit(webservice.process_request())
time_count = 0
while True:

20
lib/get_host_ip.py Normal file
View File

@@ -0,0 +1,20 @@
# -- coding:utf-8 --
# @Author: markushammered@gmail.com
# @Development Tool: PyCharm
# @Create Time: 2021/12/21
# @File Name: get_host_ip.py
import socket
def get_host_ip():
"""
查询本机ip地址
:return: ip
"""
ip_s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
ip_s.connect(('8.8.8.8', 80))
ip = ip_s.getsockname()[0]
ip_s.close()
return ip

View File

@@ -3,7 +3,7 @@
# @Author: markushammered@gmail.com
# @Development Tool: PyCharm
# @Create Time: 2021/12/18
# @File Name: webserver.py
# @File Name: webservice.py
import socket
@@ -11,14 +11,21 @@ import sys
from core.logger import Logger
from core.read_config import read_config
from core.information import WeatherInfo
from core.language import Language
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(('127.0.0.1', 7898))
server.bind(('localhost', 7898))
server.listen(5)
language = Language()
def build_html():
"""
构建html主体
:return:
"""
settings = read_config()
city = settings[3]['city-name']
mode = settings[1]['mode']
@@ -289,16 +296,20 @@ def build_html():
def process_request():
"""
处理请求
:return:
"""
try:
while True:
c, a = server.accept()
data = str(c.recv(1024)).split(':')[0][6:][:-17]
html = build_html()
if data == '/':
if data == '/': # 判断用户请求的目标是否为根目录, 如果是则返回html; 如果不是则继续判断
c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8'))
c.send(html.encode('utf-8'))
Logger.info(f'{a}: Get {data} --by browser')
else:
else: # 继续判断用户请求的文件是否存在
try:
with open(f'.{data}', 'rb') as f:
c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8'))
@@ -308,8 +319,8 @@ def process_request():
c.send(f'HTTP1.1/ 404 Not Found\r\n\r\n{html}'.encode('utf-8'))
c.close()
except BrokenPipeError:
Logger.critical('Link speed was too fast! Subprocess:webserver exited')
Logger.critical(f'{language["connection_speed_too_fast"]}')
sys.exit(1)
except IOError:
Logger.critical('An IO Error')
Logger.critical(f'{language["an_io_error"]}')
sys.exit(1)

View File

@@ -31,5 +31,8 @@
"language_not_filled": "Language hasn't filled, default: zh_cn.",
"no_location": "You haven't fill the location in the config file.",
"change_setting": "You are changing setting.",
"exit": "Exited."
"exit": "Exited.",
"webservice_ip": "Local webservice ip",
"connection_speed_too_fast": "Connection speed is too fast, subprocess: webservice has exited.",
"an_io_error": "An IO error."
}

View File

@@ -30,5 +30,8 @@
"language_file_read_successfully": "多语言模块加载成功",
"language_not_filled": "语言选项为填写完成或填写错误, 默认zh_cn",
"change_setting": "更改设置",
"exit": "已退出"
"exit": "已退出",
"webservice_ip": "webservice地址",
"connection_speed_too_fast": "连接速度过快, 子进程:webservice.py 已退出",
"an_io_error": "一个IO错误"
}