forked from Yasil/carewebsite
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadminsite.py
230 lines (184 loc) · 6.2 KB
/
adminsite.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# -*- coding:utf-8 -*-
import os
from bottle import route, run, template, static_file
from bottle import hook, request, response, get, error, abort, post, redirect
import hashlib
import json
from sitehandler import create_session, check_session, clear_session, check_user, json_resp
from sitehandler import web_get_url, web_get_alert, web_get_user, web_get_history, web_get_urldetail, web_get_url_delete, web_url_add
from sitehandler import web_get_url_delete, web_url_add, web_user_delete, web_user_add, web_alert_empty, web_history_empty
import log
logger = log.logging.getLogger("site")
@hook('before_request')
def validate():
"""
钩子函数,处理请求路由之前需要做什么的事情
:return:
"""
"""使用勾子处理页面或接口访问事件"""
# 让bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求
REQUEST_METHOD = request.environ.get('REQUEST_METHOD')
HTTP_ACCESS_CONTROL_REQUEST_METHOD = request.environ.get('HTTP_ACCESS_CONTROL_REQUEST_METHOD')
if REQUEST_METHOD == 'OPTIONS' and HTTP_ACCESS_CONTROL_REQUEST_METHOD:
request.environ['REQUEST_METHOD'] = HTTP_ACCESS_CONTROL_REQUEST_METHOD
# check userlogin
path_info = request.environ.get("PATH_INFO")
if request.method == 'OPTIONS':
# actual request; reply with the actual response
# print('打印!!!')
logger.warning("OPTIONS")
# 获取当前访问的Url路径
# 过滤不用做任何操作的路由
if path_info in ['/favicon.ico', '/check_err/', '/log/']:
return ''
@hook('after_request')
def enable_cors():
"""
钩子函数,处理请求路由之后需要做什么的事情
:return:
"""
pass
# response.headers['Access-Control-Allow-Origin'] = '*'
@route('/<filepath:path>')
def server_static(filepath):
return static_file(filepath, root='./html/')
@route('/')
def server_default():
return static_file('/html/login.html', root='./html/')
@route('/index')
def server_default():
return static_file('index.html', root='./html/')
@route('/hello/<name>')
def index(name):
session = request.get_cookie('session')
return template('<b>Hello {{name}}</b>!', name=name)
@post('/logout')
def logout():
# sessionid = request.get_cookie('session')
sessionid = request.forms.get("session")
clear_session(sessionid)
redirect("/html/login.html")
def check_login():
sessionid = request.get_cookie('session')
if sessionid is None:
# return json_resp(1,"login first")
# redirect("/html/login.html")
return json_resp(1,"login first")
success,errmsg = check_session(sessionid)
logger.debug("session:{},{},{}".format(sessionid, success, errmsg))
if success is False:
# redirect("/html/login.html")
return json_resp(1, errmsg)
@post('/api/loginpost')
def login():
name = request.forms.get("username")
pw = request.forms.get("password")
if check_user(name, pw):
# login
session = create_session(name)
response.set_cookie('session', session)
return '{"errcode": 0,"errmsg": "login success","data":"'+ session +'"}'
else:
return '''{"errcode": 1,"errmsg": "user not exists or else"}'''
@route('/api/urls')
def urls():
check_result = check_login()
if check_result is not None:
return check_result
page = request.query.page
limit = request.query.limit
count, data = web_get_url(int(page), int(limit))
return json_resp(0,'ok', count, data)
@route('/api/alerts')
def alerts():
check_result = check_login()
if check_result is not None:
return check_result
page = request.query.page
limit = request.query.limit
count, data = web_get_alert(int(page), int(limit))
return json_resp(0,'ok', count, data)
@route('/api/users')
def alerts():
check_result = check_login()
if check_result is not None:
return check_result
page = request.query.page
limit = request.query.limit
count, data = web_get_user(int(page), int(limit))
return json_resp(0,'ok', count, data)
@route('/api/historys')
def alerts():
check_result = check_login()
if check_result is not None:
return check_result
page = request.query.page
limit = request.query.limit
count, data = web_get_history(int(page), int(limit))
return json_resp(0,'ok', count, data)
@route('/api/urldetail')
def urldetail():
check_result = check_login()
if check_result is not None:
return check_result
urlid = request.query.id
count, data = web_get_urldetail(urlid)
return json_resp(0,'ok', count, data)
@post('/api/url/delete')
def urldetail():
check_result = check_login()
if check_result is not None:
return check_result
urlid = request.forms.id
web_get_url_delete(urlid)
return json_resp(0,'ok')
@post('/api/url/add')
def urladd():
check_result = check_login()
if check_result is not None:
return check_result
addurl = dict(request.forms)
name = request.forms.getunicode("name")
addurl.update(name=name)
keyword = request.forms.getunicode("keyword")
addurl.update(keyword=keyword)
post = request.forms.getunicode("post")
addurl.update(post=post)
url = request.forms.getunicode("url")
addurl.update(url=url)
web_url_add(addurl)
return json_resp(0,'ok')
@post('/api/user/delete')
def userdetail():
check_result = check_login()
if check_result is not None:
return check_result
userid = request.forms.id
web_user_delete(userid)
return json_resp(0,'ok')
@post('/api/user/add')
def urladd():
check_result = check_login()
if check_result is not None:
return check_result
web_user_add(dict(request.forms))
return json_resp(0,'ok')
@get('/api/alert/empty')
def alertempty():
check_result = check_login()
if check_result is not None:
return check_result
web_alert_empty()
return json_resp(0,'ok')
@get('/api/hitory/empty')
def hisempty():
check_result = check_login()
if check_result is not None:
return check_result
web_history_empty()
return json_resp(0,'ok')
def run_web_site():
''' run web site '''
run(host='', port=8080)
if __name__ == '__main__':
pass