Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
3301a36b5f
|
|||
da542f0bc2
|
|||
2cfbafbda5
|
@ -13,7 +13,7 @@ level = INFO
|
|||||||
handlers = console
|
handlers = console
|
||||||
|
|
||||||
[logger_access]
|
[logger_access]
|
||||||
level = INFO
|
level = ERROR
|
||||||
handlers = console
|
handlers = console
|
||||||
qualname = gunicorn.access
|
qualname = gunicorn.access
|
||||||
propagate = 0
|
propagate = 0
|
||||||
|
@ -9,7 +9,8 @@ from flask import jsonify
|
|||||||
from hsapi_client import Node, User, Route, PreAuthKey
|
from hsapi_client import Node, User, Route, PreAuthKey
|
||||||
from hsapi_client.preauthkeys import (v1CreatePreAuthKeyRequest,
|
from hsapi_client.preauthkeys import (v1CreatePreAuthKeyRequest,
|
||||||
v1ExpirePreAuthKeyRequest)
|
v1ExpirePreAuthKeyRequest)
|
||||||
from hsapi_client.nodes import v1BackfillNodeIPsResponse
|
|
||||||
|
from app.lib import remote_ip
|
||||||
|
|
||||||
|
|
||||||
log = logging.getLogger()
|
log = logging.getLogger()
|
||||||
@ -30,7 +31,7 @@ def routeToggle(routeId: int):
|
|||||||
action = 'enabled'
|
action = 'enabled'
|
||||||
log.info(
|
log.info(
|
||||||
f"route '{route.prefix}' via '{route.node.givenName}' "
|
f"route '{route.prefix}' via '{route.node.givenName}' "
|
||||||
f"{action} by '{auth.username}'")
|
f"{action} by '{auth.username}@{remote_ip()}'")
|
||||||
Route().toggle(routeId)
|
Route().toggle(routeId)
|
||||||
return redirect(request.referrer)
|
return redirect(request.referrer)
|
||||||
|
|
||||||
@ -46,7 +47,7 @@ def expireNode(nodeId: int):
|
|||||||
if not auth.userOrAdmin(node.user.name):
|
if not auth.userOrAdmin(node.user.name):
|
||||||
return auth.unathorized
|
return auth.unathorized
|
||||||
Node().expire(nodeId)
|
Node().expire(nodeId)
|
||||||
log.info(f"node '{nodeId}' expired by '{auth.username}'")
|
log.info(f"node '{nodeId}' expired by '{auth.username}@{remote_ip()}'")
|
||||||
return redirect(request.referrer)
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
|
||||||
@ -58,7 +59,7 @@ def deleteNode(nodeId: int):
|
|||||||
return auth.unathorized
|
return auth.unathorized
|
||||||
Node().expire(nodeId)
|
Node().expire(nodeId)
|
||||||
Node().delete(nodeId)
|
Node().delete(nodeId)
|
||||||
log.info(f"node '{nodeId}' deleted by '{auth.username}'")
|
log.info(f"node '{nodeId}' deleted by '{auth.username}@{remote_ip()}'")
|
||||||
return redirect(request.referrer)
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
|
||||||
@ -87,7 +88,6 @@ def deleteUser(userName: str):
|
|||||||
@auth.authorize_admins('default')
|
@auth.authorize_admins('default')
|
||||||
def createPKA(userName: str):
|
def createPKA(userName: str):
|
||||||
data = request.json
|
data = request.json
|
||||||
log.debug(data)
|
|
||||||
expiration = f"{data['expiration']}:00Z"
|
expiration = f"{data['expiration']}:00Z"
|
||||||
req = v1CreatePreAuthKeyRequest(user=userName,
|
req = v1CreatePreAuthKeyRequest(user=userName,
|
||||||
reusable=data['reusable'],
|
reusable=data['reusable'],
|
||||||
@ -100,7 +100,6 @@ def createPKA(userName: str):
|
|||||||
@rest_blueprint.route('/user/<userName>/expire/<key>', methods=['GET'])
|
@rest_blueprint.route('/user/<userName>/expire/<key>', methods=['GET'])
|
||||||
@auth.authorize_admins('default')
|
@auth.authorize_admins('default')
|
||||||
def expirePKA(userName: str, key: str):
|
def expirePKA(userName: str, key: str):
|
||||||
log.debug(key)
|
|
||||||
req = v1ExpirePreAuthKeyRequest(user=userName, key=key)
|
req = v1ExpirePreAuthKeyRequest(user=userName, key=key)
|
||||||
|
|
||||||
PreAuthKey().expire(req)
|
PreAuthKey().expire(req)
|
||||||
|
@ -11,7 +11,7 @@ preload_app = True
|
|||||||
|
|
||||||
# logconfig = "app/logging/production.ini"
|
# logconfig = "app/logging/production.ini"
|
||||||
logconfig = "app/logging/production.ini"
|
logconfig = "app/logging/production.ini"
|
||||||
access_log_format = "%(h)s %({x-forwarded-for}i)s %(t)s %(r)s %(s)s %(b)s %(L)s"
|
access_log_format = "%(h)s %({x-forwarded-for}i)s %(r)s %(s)s %(b)s %(L)s"
|
||||||
# Log to stdout.
|
# Log to stdout.
|
||||||
accesslog = "-"
|
accesslog = "-"
|
||||||
errorlog = "-"
|
errorlog = "-"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "hsman"
|
name = "hsman"
|
||||||
version = "0.9.18"
|
version = "0.9.20"
|
||||||
description = "Flask Admin webui for Headscale"
|
description = "Flask Admin webui for Headscale"
|
||||||
authors = ["Andrea Mistrali <andrea@mistrali.pw>"]
|
authors = ["Andrea Mistrali <andrea@mistrali.pw>"]
|
||||||
license = "BSD"
|
license = "BSD"
|
||||||
|
Reference in New Issue
Block a user