20240927-0003

This commit is contained in:
zjq
2024-09-27 17:49:37 +08:00
parent f2ea6f3d4d
commit 7c10b0fab1
3 changed files with 92 additions and 12 deletions
+8 -9
View File
@@ -1,11 +1,10 @@
PublicKey
"-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBfs3cknIcEBeJTx4OQ6
krG634p0DxWMQL5jqwKY82hD26I8o+Zo4jb4jrziqIlJw0YZfuUe+VA4Xeu+byp5
jpkhwy7cp2yxXTv+AqFszR08hj2Tfnge8wijxXrzg7Qs739H2ad2G0ar2Yd6H7iz
lAzOpitG9ZwlaVJuDIEbXA/07cO0kLAAYRh9sqtrnUhLCKymFwbGap7ob3ZOf8FZ
1l69jLvSQYAVHVWlm3/uwMmKWK0f0uiQJblt624NEEUcznK0gXAAIPKJ1EY1Uc/v
OAitE/QJ/abdKr/OC0FmD9nEy5gDjr43B2tOqit1KMoPjvmX+gEDZIAFi6E1vFpE
EQIDAQAB
-----END PUBLIC KEY-----
"
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvXngIVAn/WTGfLuAxpol
WGP3n/Iv/8lLXqksIz01v6HGzmqd61MltFngz2QJKZrK5IvvpKGkPtCB0azg5kOu
+Dz+GSnGLpIgPmmR17gDpkZMuGfCuUeqglfhgddsxnMvHMx5uYJr1LAANDzpW+D3
lCQY2F+eQHULGPIM2pCLAiXrvXCzyRvwSIGlgEXQ8guuka1d+cUmHd3555bHZwzg
+hR45wcSlkF6K4Hn30ZGRY7y93macpof0Uf+Qe+5gdQpIMf0EOOGNr48gEQNTpEh
35qVe8ldxqd+DVfPZFvx+5tJNXkK3FP1IGQE2kYNG0agYjrQhwCGThlFHHZ2ULmz
NwIDAQAB
-----END PUBLIC KEY-----"
1 PublicKey
2 -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBfs3cknIcEBeJTx4OQ6 krG634p0DxWMQL5jqwKY82hD26I8o+Zo4jb4jrziqIlJw0YZfuUe+VA4Xeu+byp5 jpkhwy7cp2yxXTv+AqFszR08hj2Tfnge8wijxXrzg7Qs739H2ad2G0ar2Yd6H7iz lAzOpitG9ZwlaVJuDIEbXA/07cO0kLAAYRh9sqtrnUhLCKymFwbGap7ob3ZOf8FZ 1l69jLvSQYAVHVWlm3/uwMmKWK0f0uiQJblt624NEEUcznK0gXAAIPKJ1EY1Uc/v OAitE/QJ/abdKr/OC0FmD9nEy5gDjr43B2tOqit1KMoPjvmX+gEDZIAFi6E1vFpE EQIDAQAB -----END PUBLIC KEY----- -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvXngIVAn/WTGfLuAxpol WGP3n/Iv/8lLXqksIz01v6HGzmqd61MltFngz2QJKZrK5IvvpKGkPtCB0azg5kOu +Dz+GSnGLpIgPmmR17gDpkZMuGfCuUeqglfhgddsxnMvHMx5uYJr1LAANDzpW+D3 lCQY2F+eQHULGPIM2pCLAiXrvXCzyRvwSIGlgEXQ8guuka1d+cUmHd3555bHZwzg +hR45wcSlkF6K4Hn30ZGRY7y93macpof0Uf+Qe+5gdQpIMf0EOOGNr48gEQNTpEh 35qVe8ldxqd+DVfPZFvx+5tJNXkK3FP1IGQE2kYNG0agYjrQhwCGThlFHHZ2ULmz NwIDAQAB -----END PUBLIC KEY-----
3
4
5
6
7
8
9
10
+2
View File
@@ -0,0 +1,2 @@
SignatureData,StartTime,EndTime
MjAyNC0wOS0yNw==&&MjAyNC0xMC0yNw==&&UZhYwPq+xmIJ+4VcYydVXNCgbYfzuOjOG3nTAnVFug5m0DT9Txroy7kkbGLmPXRKZZNHHxm1Kle5izexwkYzrZDT8K2MRZHEzgKHf1QMZrIDh3zNB0ZuwA4BFymXxPlAiv/UfLD5ja3Ib8aW3dMn4r36HnGiCjY0wrXjR1ted7tGxTn4JIZkMrGpzt0pqYEEgsqUpRILBgHrEOLgRHuhwybhjoE+6jShHsedvFsv/HxAYhCS6I3plpS9AGXW0RAHYi4sq6m5VZ9o8yAML6UwHk/om3Acj2QGmqsC00AAe+UW9IzK1744TVBJqwvNlzjtsib5asfwmjt/OTHxw7pD5g==,2024-09-27,2024-10-27
1 SignatureData StartTime EndTime
2 MjAyNC0wOS0yNw==&&MjAyNC0xMC0yNw==&&UZhYwPq+xmIJ+4VcYydVXNCgbYfzuOjOG3nTAnVFug5m0DT9Txroy7kkbGLmPXRKZZNHHxm1Kle5izexwkYzrZDT8K2MRZHEzgKHf1QMZrIDh3zNB0ZuwA4BFymXxPlAiv/UfLD5ja3Ib8aW3dMn4r36HnGiCjY0wrXjR1ted7tGxTn4JIZkMrGpzt0pqYEEgsqUpRILBgHrEOLgRHuhwybhjoE+6jShHsedvFsv/HxAYhCS6I3plpS9AGXW0RAHYi4sq6m5VZ9o8yAML6UwHk/om3Acj2QGmqsC00AAe+UW9IzK1744TVBJqwvNlzjtsib5asfwmjt/OTHxw7pD5g== 2024-09-27 2024-10-27
+82 -3
View File
@@ -14,6 +14,9 @@ CORS(app)
def get_csv_path():
return os.path.join(os.path.dirname(__file__), 'Authorize.csv')
def get_info_csv_path():
return os.path.join(os.path.dirname(__file__), 'Information.csv')
def get_public_key():
csv_path = get_csv_path()
if not os.path.exists(csv_path):
@@ -32,6 +35,57 @@ def get_current_time():
else:
raise Exception("请求时间失败")
@app.route('/check_time', methods=['POST'])
def check_time():
current_time = get_current_time()
csv_path = get_info_csv_path()
if not os.path.exists(csv_path):
return jsonify({"valid": False, "message": "信息文件不存在"}), 404
df = pd.read_csv(csv_path)
if df.empty:
return jsonify({"valid": False, "message": "信息文件为空"}), 404
start_time = datetime.strptime(df['StartTime'].iloc[0], '%Y-%m-%d')
end_time = datetime.strptime(df['EndTime'].iloc[0], '%Y-%m-%d')
time_range_message = f"有效时间范围: {start_time.strftime('%Y-%m-%d')}{end_time.strftime('%Y-%m-%d')}"
if start_time <= current_time <= end_time:
days_remaining = (end_time - current_time).days
return jsonify({
"valid": True,
"message": f"{time_range_message}",
"days_remaining": days_remaining
})
return jsonify({
"valid": False,
"message": f"{time_range_message}"
})
@app.route('/navigate', methods=['POST'])
def navigate():
current_time = get_current_time()
csv_path = get_info_csv_path()
if not os.path.exists(csv_path):
return jsonify({"valid": False, "message": "信息文件不存在"}), 404
df = pd.read_csv(csv_path)
if df.empty:
return jsonify({"valid": False, "message": "信息文件为空"}), 404
start_time = datetime.strptime(df['StartTime'].iloc[0], '%Y-%m-%d')
end_time = datetime.strptime(df['EndTime'].iloc[0], '%Y-%m-%d')
if start_time <= current_time <= end_time:
return jsonify({"valid": True, "redirect": "device"})
return jsonify({"valid": False, "redirect": "error"})
@app.route('/verify', methods=['POST', 'OPTIONS'])
def handle_verification():
if request.method == 'OPTIONS':
@@ -59,6 +113,11 @@ def handle_verification():
# Format current_time to "YYYY-MM-DD"
current_time_str = current_time.strftime('%Y-%m-%d') if current_time else None
# Save signature and timestamps to Information.csv if valid
if is_valid:
start_time, end_time = time_range
save_to_information_csv(signature_data, start_time, end_time)
return jsonify({
"valid": is_valid,
"message": message["time_range"],
@@ -107,12 +166,32 @@ def verify_signature(public_key_pem, signature_data):
end_time = datetime.strptime(end_timestamp_str, '%Y-%m-%d')
if start_time <= current_time <= end_time:
return True, {"valid": True, "time_range": f"成功。时间范围: {start_time.year}-{start_time.month}-{start_time.day}{end_time.year}-{end_time.month}- {end_time.day}"}, (start_time, end_time), current_time
return True, {"valid": True, "time_range": f"成功。时间范围: {start_time.year}-{start_time.month}-{start_time.day}{end_time.year}-{end_time.month}-{end_time.day}"}, (start_time, end_time), current_time
else:
return False, {"valid": False, "time_range": f"时间不在有效范围内。时间范围: {start_time.year}-{start_time.month}-{start_time.day}{end_time.year}-{end_time.month}- {end_time.day}"}, (start_time, end_time), current_time
return False, {"valid": False, "time_range": f"时间不在有效范围内。时间范围: {start_time.year}-{start_time.month}-{start_time.day}{end_time.year}-{end_time.month}-{end_time.day}"}, (start_time, end_time), current_time
except Exception as e:
print("发生错误:", str(e))
return False, {"valid": False, "time_range": f"发生错误: {str(e)}"}, None, None
return False, {"valid": False, "time_range": f"请输入正确的授权码"}, None, None
def save_to_information_csv(signature_data, start_time, end_time):
csv_path = get_info_csv_path()
# 创建DataFrame
data = {
'SignatureData': [signature_data],
'StartTime': [start_time.strftime('%Y-%m-%d')],
'EndTime': [end_time.strftime('%Y-%m-%d')]
}
# 如果文件存在,先读取数据
if os.path.exists(csv_path):
existing_df = pd.read_csv(csv_path)
# 清空文件内容
existing_df.to_csv(csv_path, index=False, header=False)
# 将新的数据写入CSV文件
df = pd.DataFrame(data)
df.to_csv(csv_path, index=False)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5001)