gulag/app/Resources.py

38 lines
1.1 KiB
Python

from flask import request
from flask_restful import Resource, Api, abort
import json
class GulagResource(Resource):
gulag = None
def __init__(self,gulag_object):
self.gulag = gulag_object
#XXX self.check_trusted_proxy()
#XXX self.check_auth()
def check_trusted_proxy(self):
remote_ip = request.remote_addr
if 'trusted_proxies' not in self.gulag.config:
# Trusted-proxies not configured
return True
for proxy in self.gulag.config['trusted_proxies']:
for trusted_proxy_ip in self.gulag.config['trusted_proxies'][proxy]:
if(remote_ip == trusted_proxy_ip):
return True
abort(403, message="Untrusted client IP-address!")
def check_auth(self):
if not 'API-KEY' in request.headers:
abort(400, message="API-KEY header missing!")
api_key = request.headers['API-KEY']
if api_key not in self.gulag.config['api_keys']:
abort(401, message="NOT AUTHORIZED!")
class ResRoot(GulagResource):
def get(self):
return {"resource": "root :)"}
class ResQuarMails(GulagResource):
def get(self):
return {"abc": "1234"}
# return self.gulag.get_quarmails()