pip install flask
pip install gevent
from flask import Flask,request,redirect,jsonify, url_for
from LockIP import IPStatus, check
app = Flask(__name__)
@app.route('/new')
def newHtml():
return "lpl 加油!"
def openserver():
import datetime
timestr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f'{timestr} 服务器启动中.....')
app.run(host="0.0.0.0", port=8000,debug=True)
if __name__ == '__main__':
openserver()
网页输入 http://127.0.0.1:8000/new
这里填你自己申请的证书文件名 对应的crt和key文件
app.run(host="0.0.0.0", port=8002, ssl_context=('www.geek7.top.crt', 'www.geek7.top.key'))
协议填tcp 端口8002 备注 python服务器 其他的默认 就可以了
代码保留在案例了 自己去瞅瞅 给你一个发挥的机会 代码可以跑通 自己研究研究
ps -ef|grep PYServer|grep -v grep|cut -c 9-15|xargs kill -9
cd /www/python_projs/PYServer/
/www/server/pyporject_evn/444ab1b88bd66070681fb30537aeeb8c_venv/bin/python3 -u /www/python_projs/PYServer/server.py
怎么验证呢? 方式有很多种 最简单的一种 先关闭python项目 然后执行一次脚本 如果项目跑起来了 就表示shell脚本成功
Python Https云服务器,定时重启
from flask import Flask,request,redirect,jsonify, url_for
from LockIP import IPStatus, check
app = Flask(__name__)
@app.route('/new')
def newHtml():
ip = request.remote_addr
status = check(ip)
if status == IPStatus.Lock:
return "你已在黑名单中"
elif status == IPStatus.Suspicion:
return "频繁触发警告"
return "lpl 加油!"
@app.route('/form',methods=['POST'])
def form():
#获取上传的文件
files = request.files
for key in files:
file = files[key]
file.save(f"imgs/{file.filename}")
return "upload success"
def openserver():
import datetime
timestr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f'{timestr} 服务器启动中.....')
# 本地测试
# app.run(host="0.0.0.0", port=8000,debug=True)
# debug开发模式
# app.run(host="0.0.0.0", port=8002, ssl_context=(
# 'www.geek7.top.crt', 'www.geek7.top.key'))
#生产环境
from gevent import pywsgi
server = pywsgi.WSGIServer(('0.0.0.0',8002),app,keyfile='www.geek7.top.key', certfile='www.geek7.top.crt')
server.serve_forever()
if __name__ == '__main__':
openserver()
import time
from enum import Enum
request_history = {} #请求历史信息 包含ip 最后一次请求时间戳 频繁请求计数 违规次数
blacklist = [] #黑名单 通知一次玩家已经是在黑名单了
locklist = [] #锁定列表 返回空字符串
class IPStatus(Enum):
General = 1
Lock = 2
Suspicion = 3
def check( ip ):
# 锁定ip列表
if ip in locklist:
return IPStatus.Lock
# 黑名端 会通知一次客户端
if ip in blacklist:
locklist.append(ip)
return IPStatus.Suspicion
# 1秒内请求限制5次
if ip not in request_history.keys():
request_history[ip] = [time.time(), 1, 0 ] # 最近call的时间, 短时间内调用的次数, 频繁计数
else:
if time.time() - request_history[ip][0] < 1:
request_history[ip][1] += 1
# 频繁请求 违规处理
if request_history[ip][1] >= 5:
#违规次数统计
request_history[ip][2] += 1
if request_history[ip][2] >= 5:
blacklist.append(ip) #加入黑名端
return IPStatus.Suspicion
else:
request_history[ip][1] = 1
request_history[ip][0] = time.time()
return IPStatus.General
github