mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
working statistics api route
This commit is contained in:
parent
1f184d3e94
commit
e6bf64a41f
@ -171,14 +171,17 @@ class db_builder:
|
||||
|
||||
username = default_data.get("username", 'admin')
|
||||
password = default_data.get("password", 'crafty')
|
||||
api_token = helper.random_string_generator(32)
|
||||
|
||||
Users.insert({
|
||||
Users.username: username,
|
||||
Users.password: helper.encode_pass(password),
|
||||
Users.api_token: helper.random_string_generator(32),
|
||||
Users.api_token: api_token,
|
||||
Users.enabled: True
|
||||
}).execute()
|
||||
|
||||
console.info("API token is {}".format(api_token))
|
||||
|
||||
@staticmethod
|
||||
def is_fresh_install():
|
||||
if helper.check_file_exists(helper.db_path):
|
||||
|
@ -6,6 +6,7 @@ import tornado.escape
|
||||
import logging
|
||||
|
||||
from app.classes.shared.models import Users
|
||||
from app.classes.minecraft.stats import stats
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@ -21,20 +22,37 @@ class BaseHandler(tornado.web.RequestHandler):
|
||||
self.set_status(403)
|
||||
self.finish(self.return_response(403, {'error':'ACCESS_DENIED', 'info':'You were denied access to the requested resource'}))
|
||||
|
||||
def authenticate_user(self, token):
|
||||
def authenticate_user(self):
|
||||
try:
|
||||
log.debug("Searching for specified token")
|
||||
user_data = Users.get(api_token=token)
|
||||
user_data = Users.get(api_token=self.get_argument('token'))
|
||||
log.debug("Checking results")
|
||||
if user_data:
|
||||
# Login successful! Return the username
|
||||
# Login successful! Check perms
|
||||
log.info("User {} has authenticated to API".format(user_data.username))
|
||||
return user_data.username
|
||||
# TODO: Role check
|
||||
else:
|
||||
logging.debug("Auth unsuccessful")
|
||||
return None
|
||||
return self.access_denied("unknown")
|
||||
except:
|
||||
log.warning("Traceback occurred when authenticating user to API. Most likely wrong token")
|
||||
return None
|
||||
return self.access_denied("unknown")
|
||||
pass
|
||||
|
||||
|
||||
class ServersStats(BaseHandler):
|
||||
def get(self):
|
||||
"""Get details about all servers"""
|
||||
self.authenticate_user()
|
||||
# Get server stats
|
||||
self.finish(self.write({"servers": stats.get_servers_stats()}))
|
||||
|
||||
|
||||
class NodeStats(BaseHandler):
|
||||
def get(self):
|
||||
"""Get stats for particular node"""
|
||||
self.authenticate_user()
|
||||
# Get node stats
|
||||
node_stats = stats.get_node_stats()
|
||||
node_stats.pop("servers")
|
||||
self.finish(self.write(node_stats))
|
||||
|
@ -23,6 +23,7 @@ try:
|
||||
from app.classes.web.default_handler import DefaultHandler
|
||||
from app.classes.web.server_handler import ServerHandler
|
||||
from app.classes.web.ajax_handler import AjaxHandler
|
||||
from app.classes.web.api_handler import ServersStats, NodeStats
|
||||
|
||||
except ModuleNotFoundError as e:
|
||||
logger.critical("Import Error: Unable to load {} module".format(e, e.name))
|
||||
@ -122,6 +123,8 @@ class webserver:
|
||||
(r'/panel/(.*)', PanelHandler),
|
||||
(r'/server/(.*)', ServerHandler),
|
||||
(r'/ajax/(.*)', AjaxHandler),
|
||||
(r'/api/stats/servers', ServersStats),
|
||||
(r'/api/stats/node', NodeStats),
|
||||
]
|
||||
|
||||
app = tornado.web.Application(
|
||||
|
Loading…
Reference in New Issue
Block a user