blob: b1d1fd61caacb7c7763aed7b6c9ef591549b4f92 [file] [log] [blame]
TRM-codingd1cbf672025-06-18 15:15:08 +08001from flask import Blueprint, render_template
2from .functions.Fpost import Fpost;
3from sqlalchemy import create_engine
4from sqlalchemy.orm import sessionmaker
5from config import Config
6from flask import jsonify,request
7
TRM-codingc4b4f3d2025-06-18 19:02:46 +08008
TRM-codingd1cbf672025-06-18 15:15:08 +08009main = Blueprint('main', __name__)
10
TRM-codingc4b4f3d2025-06-18 19:02:46 +080011
TRM-codingd1cbf672025-06-18 15:15:08 +080012@main.route('/sgiveadmin',methods=['POST','GET'])
13def giveadmin():
14 data=request.get_json()
15 print(data)
16 engine=create_engine(Config.SQLURL)
17 SessionLocal = sessionmaker(bind=engine)
18 session = SessionLocal()
19 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +080020 checres,userid=f.checkid(data['userid'],'superadmin')
TRM-codingd1cbf672025-06-18 15:15:08 +080021 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +080022 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080023 'error',
24 '系统需要超级管理员才能执行修改用户角色的操作,但是当前用户不是超级管理员',
25 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080026 return jsonify({'status': 'error', 'message': 'Unauthorized'})
27
28 res=f.giveadmin(data['targetid'])
29 if not res:
TRM-coding2a8fd602025-06-19 19:33:16 +080030 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080031 'error',
32 f"尝试修改用户{data['targetid']}角色为admin失败,用户不存在",
33 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080034 return jsonify({'status': 'error', 'message': 'User not found'})
TRM-coding2a8fd602025-06-19 19:33:16 +080035 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080036 'behavior',
37 f'用户角色为admin修改成功,用户ID: {data["targetid"]} 被修改为管理员',
38 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080039 return jsonify({'status': 'success', 'message': 'User role updated to admin'})
40
41@main.route('/sgiveuser',methods=['POST','GET'])
42def giveuser():
43 data=request.get_json()
44 print(data)
45 engine=create_engine(Config.SQLURL)
46 SessionLocal = sessionmaker(bind=engine)
47 session = SessionLocal()
48 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +080049 checres,userid=f.checkid(data['userid'],'superadmin')
TRM-codingd1cbf672025-06-18 15:15:08 +080050 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +080051 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080052 'error',
53 '系统需要超级管理员才能执行修改用户角色的操作,但是当前用户不是超级管理员',
54 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080055 return jsonify({'status': 'error', 'message': 'Unauthorized'})
56
57 res=f.giveuser(data['targetid'])
58 if not res:
TRM-coding2a8fd602025-06-19 19:33:16 +080059 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080060 'error',
61 f"尝试修改用户{data['targetid']}为user失败,用户不存在",
62 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080063 return jsonify({'status': 'error', 'message': 'User not found'})
TRM-coding2a8fd602025-06-19 19:33:16 +080064 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080065 'behavior',
66 f'用户角色修改成功,用户ID: {data["targetid"]} 被修改为普通用户',
67 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080068 return jsonify({'status': 'success', 'message': 'User role updated to user'})
69
70
71@main.route('/sgivesuperadmin',methods=['POST','GET'])
72def givesuperadmin():
73 data=request.get_json()
74 print(data)
75 engine=create_engine(Config.SQLURL)
76 SessionLocal = sessionmaker(bind=engine)
77 session = SessionLocal()
78 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +080079 checres,userid=f.checkid(data['userid'],'superadmin')
TRM-codingd1cbf672025-06-18 15:15:08 +080080 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +080081 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080082 'error',
83 '系统需要超级管理员才能执行修改用户角色的操作,但是当前用户不是超级管理员',
84 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080085 return jsonify({'status': 'error', 'message': 'Unauthorized'})
86
87 res=f.givesuperadmin(data['targetid'])
88 if not res:
TRM-coding2a8fd602025-06-19 19:33:16 +080089 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080090 'error',
91 f'尝试修改用户{data["targetid"]}角色为superadmin失败,用户不存在',
92 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080093 return jsonify({'status': 'error', 'message': 'User not found'})
TRM-coding2a8fd602025-06-19 19:33:16 +080094 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +080095 'behavior',
96 f'用户角色修改成功,用户ID: {data["targetid"]} 被修改为超级管理员',
97 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +080098 return jsonify({'status': 'success', 'message': 'User role updated to superadmin'})
99
100@main.route('/sgetuserlist',methods=['POST','GET'])
101def userlist():
102 data=request.get_json()
103 print(data)
104 engine=create_engine(Config.SQLURL)
105 SessionLocal = sessionmaker(bind=engine)
106 session = SessionLocal()
107 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +0800108 checres,userid=f.checkid(data['userid'],'superadmin')
109 print("+++++++++++++++++++++++++++++++++++++++++++++++++")
110 print(checres)
TRM-codingd1cbf672025-06-18 15:15:08 +0800111 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +0800112 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800113 'error',
114 '系统需要超级管理员才能执行获取用户列表的操作,但是当前用户不是超级管理员',
115 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800116 return jsonify({'status': 'error', 'message': 'Unauthorized'})
117 res=f.getuserlist()
118 respons=[]
119 for datai in res:
120 respons.append({
121 'id': datai[0],
122 'username': datai[1],
123 'role': datai[2]
124 })
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800125
TRM-coding2a8fd602025-06-19 19:33:16 +0800126 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800127 'access',
128 '获取用户列表成功',
129 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800130 return jsonify(respons)
131
132@main.route('/apostlist',methods=['POST','GET'])
133def postlist():
134 data=request.get_json()
135 print(data)
136 engine=create_engine(Config.SQLURL)
137 SessionLocal = sessionmaker(bind=engine)
138 session = SessionLocal()
139 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +0800140 checres,userid=f.checkid(data['userid'],'admin')
TRM-codingd1cbf672025-06-18 15:15:08 +0800141 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +0800142 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800143 'error',
144 '系统需要管理员才能执行获取帖子列表的操作,但是当前用户不是管理员',
145 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800146 return jsonify({'status': 'error', 'message': 'Unauthorized'})
147 res=f.getlist()
148 respons=[]
149 for datai in res:
150 respons.append({
151 'id': datai[0],
152 'title': datai[1],
153 'status': datai[2]
154 })
TRM-coding2a8fd602025-06-19 19:33:16 +0800155 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800156 'access',
157 '获取帖子列表成功',
158 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800159 return jsonify(respons)
160
161@main.route('/agetpost',methods=['POST','GET'])
162def post():
163 data=request.get_json()
164 engine=create_engine(Config.SQLURL)
165 SessionLocal = sessionmaker(bind=engine)
166 session = SessionLocal()
167 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +0800168 checres,userid=f.checkid(data['userid'],'admin')
TRM-codingd1cbf672025-06-18 15:15:08 +0800169 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +0800170 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800171 'error',
172 '系统需要管理员才能执行获取帖子详情的操作,但是当前用户不是管理员',
173 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800174 return jsonify({'status': 'error', 'message': 'Unauthorized'})
175 res=f.getpost(data['postid'])
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800176 if not res:
TRM-coding2a8fd602025-06-19 19:33:16 +0800177 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800178 'error',
179 f'尝试获取帖子{data["postid"]}失败,帖子不存在',
180 request.remote_addr)
181 return jsonify({'status': 'error', 'message': 'Post not found'})
TRM-coding2a8fd602025-06-19 19:33:16 +0800182 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800183 'access',
184 f'获取帖子详情成功,帖子ID: {data["postid"]}',
185 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800186 return jsonify(res.to_dict() if res else {})
187
188@main.route('/areview',methods=['POST','GET'])
189def review():
190 data=request.get_json()
191 engine=create_engine(Config.SQLURL)
192 SessionLocal = sessionmaker(bind=engine)
193 session = SessionLocal()
194 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +0800195 checres,userid=f.checkid(data['userid'],'admin')
TRM-codingd1cbf672025-06-18 15:15:08 +0800196 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +0800197 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800198 'error',
199 '系统需要管理员才能执行帖子审核的操作,但是当前用户不是管理员',
200 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800201 return jsonify({'status': 'error', 'message': 'Unauthorized'})
202
203 res=f.review(data['postid'],data['status'])
204 if not res:
TRM-coding2a8fd602025-06-19 19:33:16 +0800205 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800206 'error',
207 f'尝试审核帖子{data["postid"]}失败,帖子不存在',
208 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800209 return jsonify({'status': 'error', 'message': 'Post not found'})
TRM-coding2a8fd602025-06-19 19:33:16 +0800210 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800211 'behavior',
212 f'帖子审核成功,帖子ID: {data["postid"]} 状态更新为 {data["status"]}',
213 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800214 return jsonify({'status': 'success', 'message': 'Post reviewed successfully'})
215
216
217
218@main.route('/nginxauth',methods=['POST','GET'])
219def nginxauth():
220 data=request.get_json()
221 engine=create_engine(Config.SQLURL)
222 SessionLocal = sessionmaker(bind=engine)
223 session = SessionLocal()
224 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +0800225 checres,userid=f.checkid(data['userid'],'admin')
TRM-codingd1cbf672025-06-18 15:15:08 +0800226 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +0800227 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800228 'error',
229 '系统需要管理员才能执行Nginx认证的操作,但是当前用户不是管理员',
230 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800231 return jsonify({'status': 'error', 'message': 'Unauthorized'})
232
233 res=f.nginxauth(data['postid'],data['status'])
234 if not res:
TRM-coding2a8fd602025-06-19 19:33:16 +0800235 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800236 'error',
237 f'尝试更新Nginx认证状态失败,帖子{data["postid"]}不存在',
238 request.remote_addr)
TRM-codingd1cbf672025-06-18 15:15:08 +0800239 return jsonify({'status': 'error', 'message': 'Post not found'})
TRM-coding2a8fd602025-06-19 19:33:16 +0800240 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800241 'behavior',
242 f'Nginx认证状态更新成功,帖子ID: {data["postid"]} 状态更新为 {data["status"]}',
243 request.remote_addr)
244 return jsonify({'status': 'success', 'message': 'Nginx auth updated successfully'})
245
246@main.route('/getsyscost',methods=['POST','GET'])
247def getsyscost():
248 data=request.get_json()
249 engine=create_engine(Config.SQLURL)
250 SessionLocal = sessionmaker(bind=engine)
251 session = SessionLocal()
252 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +0800253 checres,userid=f.checkid(data['userid'],'superadmin')
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800254 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +0800255 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800256 'error',
257 '系统需要管理员才能执行获取系统性能消耗的操作,但是当前用户不是管理员',
258 request.remote_addr)
259 return jsonify({'status': 'error', 'message': 'Unauthorized'})
TRM-codingd1cbf672025-06-18 15:15:08 +0800260
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800261 res=f.getsyscost()
262 if not res:
TRM-coding2a8fd602025-06-19 19:33:16 +0800263 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800264 'error',
265 '尝试获取系统性能消耗数据失败,数据不存在',
266 request.remote_addr)
267 return jsonify({'status': 'error', 'message': 'No performance data found'})
268
TRM-coding2a8fd602025-06-19 19:33:16 +0800269 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800270 'access',
271 '获取系统性能消耗数据成功',
272 request.remote_addr)
273 resdata = []
274 for datai in res:
275 resdata.append({
276 'id': datai.id,
277 'record_time': datai.record_time.isoformat(),
278 'endpoint': datai.endpoint,
279 'elapsed_time': datai.elapsed_time,
280 'cpu_user': datai.cpu_user,
281 'cpu_system': datai.cpu_system,
282 'memory_rss': datai.memory_rss
283 })
284 return jsonify(resdata)
285@main.route('/getrecordlog',methods=['POST','GET'])
286def getrecordlog():
287 data=request.get_json()
288 engine=create_engine(Config.SQLURL)
289 SessionLocal = sessionmaker(bind=engine)
290 session = SessionLocal()
291 f=Fpost(session)
TRM-coding2a8fd602025-06-19 19:33:16 +0800292 checres,userid=f.checkid(data['userid'],'superadmin')
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800293 if(not checres):
TRM-coding2a8fd602025-06-19 19:33:16 +0800294 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800295 'error',
296 '系统需要管理员才能执行获取日志的操作,但是当前用户不是管理员',
297 request.remote_addr)
298 return jsonify({'status': 'error', 'message': 'Unauthorized'})
299
300 res=f.getrecordlog()
301 if not res:
TRM-coding2a8fd602025-06-19 19:33:16 +0800302 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800303 'error',
304 '尝试获取日志失败,日志不存在',
305 request.remote_addr)
306 return jsonify({'status': 'error', 'message': 'No logs found'})
307
TRM-coding2a8fd602025-06-19 19:33:16 +0800308 f.recordlog(userid,
TRM-codingc4b4f3d2025-06-18 19:02:46 +0800309 'access',
310 '获取日志成功',
311 request.remote_addr)
312
313 resdata = []
314 for datai in res:
315 resdata.append({
316 'id': datai.id,
317 'user_id': datai.user_id,
318 'type': datai.type,
319 'content': datai.content,
320 'ip': datai.ip,
321 'created_at': datai.created_at.isoformat()
322 })
323
324 return jsonify(resdata)
325