-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathfqSou.py
110 lines (87 loc) · 3.38 KB
/
fqSou.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
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import subprocess
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import Config
import Record
class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
return self.get_secure_cookie('user')
def get(self):
self.write_error(404)
def write_error(self, status_code, **kwargs):
if status_code == 404:
self.render('404.html')
else:
self.write('error:' + str(status_code))
class MainHandler(BaseHandler):
def get(self):
self.render('index.html')
class LoginHandler(BaseHandler):
def get(self):
self.render('login.html')
def post(self):
username = self.get_argument('username')
password = self.get_argument('password')
if username == Config.read_config('config.properties', 'admin',
'admin_username') and password == Config.read_config('config.properties',
'admin', 'admin_passwd'):
self.set_secure_cookie('user', username)
self.redirect('/admin')
class LogoutHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
self.set_secure_cookie('user', '')
self.redirect('/')
class ChangePasswordHandler(BaseHandler):
@tornado.web.authenticated
def post(self):
password = self.get_argument('password')
Config.write_config('config.properties', 'admin', 'admin_passwd', password)
self.redirect('/admin')
class AdminHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
json = open(Config.read_config('config.properties', 'config', 'shadowsocks_config'), 'r')
self.render('admin.html', json=json.read())
class SaveHandler(BaseHandler):
@tornado.web.authenticated
def post(self):
json = self.get_argument('json')
config = open(Config.read_config('./config.properties', 'config', 'shadowsocks_config'), 'w')
config.write(json)
config.close()
status = subprocess.call('supervisorctl restart shadowsocks:shadowsocks_00', shell=True)
Record.comment = None
self.write('成功' if status == 0 else '失败')
class LogHandler(BaseHandler):
@tornado.web.authenticated
def get(self, page='1', count='100'):
logs = Record.get_page(r'/var/log/port-ip-monitor.log', int(page), int(count))
self.render('log.html', logs=logs, page=page, count=count)
if __name__ == '__main__':
tornado.options.parse_command_line()
application = tornado.web.Application(
handlers=[
(r'/', MainHandler),
(r'/login', LoginHandler),
(r'/logout', LogoutHandler),
(r'/changepasswd', ChangePasswordHandler),
(r'/admin', AdminHandler),
(r'/save', SaveHandler),
(r'/log/([0-9]+)/([0-9]+)', LogHandler),
(r'/log', LogHandler),
(r'.*', BaseHandler),
],
template_path=os.path.join(os.path.dirname(__file__), 'templates'),
static_path=os.path.join(os.path.dirname(__file__), 'static'),
debug=False,
login_url=r'/login',
cookie_secret='61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo='
)
application.listen(3000)
tornado.ioloop.IOLoop.instance().start()