1
0
mirror of https://github.com/laurivosandi/certidude synced 2025-09-09 06:51:04 +00:00

Refactor wrappers

Completely remove wrapper class for CA,
use certidude.authority module instead.
This commit is contained in:
2015-12-12 22:34:08 +00:00
parent 5876f61e15
commit b788d701eb
23 changed files with 1165 additions and 1439 deletions

View File

@@ -1,6 +1,7 @@
import click
import falcon
import ipaddress
import kerberos
import os
import re
@@ -70,3 +71,28 @@ def login_required(func):
raise falcon.HTTPForbidden("Forbidden", "Tried GSSAPI")
return wrapped
def authorize_admin(func):
def wrapped(self, req, resp, *args, **kwargs):
from certidude import config
# Parse remote IPv4/IPv6 address
remote_addr = ipaddress.ip_network(req.env["REMOTE_ADDR"])
# Check for administration subnet whitelist
print("Comparing:", config.ADMIN_SUBNETS, "To:", remote_addr)
for subnet in config.ADMIN_SUBNETS:
if subnet.overlaps(remote_addr):
break
else:
raise falcon.HTTPForbidden("Forbidden", "Remote address %s not whitelisted" % remote_addr)
# Check for username whitelist
kerberos_username, kerberos_realm = req.context.get("user")
if kerberos_username not in config.ADMIN_USERS:
raise falcon.HTTPForbidden("Forbidden", "User %s not whitelisted" % kerberos_username)
# Retain username, TODO: Better abstraction with username, e-mail, sn, gn?
return func(self, req, resp, *args, **kwargs)
return wrapped