Compare commits

...

5 Commits

Author SHA1 Message Date
ff7bb43e03
testing
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-25 19:01:09 +03:00
lash
96b9289060
Merge remote-tracking branch 'ge/master' into lash/404
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2022-01-24 19:48:38 +00:00
lash
e9c64d6deb
Handle 404 error 2022-01-24 19:46:25 +00:00
eb287050dc
ci: add docker build
All checks were successful
continuous-integration/drone/push Build is passing
ci: update docker registry

ci: update creds

ci: update repo

ci: (fix) repo
2021-11-04 11:51:09 +03:00
63c4922f08
add: docker and test files 2021-10-27 10:06:23 +03:00
18 changed files with 763 additions and 8 deletions

View File

@ -1,2 +1 @@
tests
venv

16
.drone.yml Normal file
View File

@ -0,0 +1,16 @@
kind: pipeline
name: default
steps:
- name: docker
image: plugins/docker
environment:
DOCKER_BUILDKIT: 1
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: docker.grassecon.net/cic-auth-helper-gitea
registry: docker.grassecon.net
tags: latest

View File

@ -0,0 +1,3 @@
- "^/user(/.*)?$":
read:
- user

View File

@ -0,0 +1,3 @@
- "^/user(/.*)?$":
read:
- user

View File

@ -0,0 +1,3 @@
- "^/user(/.*)?$":
read:
- user

View File

@ -0,0 +1,3 @@
- "^/user(/.*)?$":
read:
- user

431
.wellknown/allowed.asc Normal file
View File

@ -0,0 +1,431 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=iVM9
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEQ8p39kGtoDHBJmXLR0YcMbAGvA4FAmHv0RwACgkQR0YcMbAG
vA4SfRAAsTaG8Uf0ICrTbEnHcEqvk/qnB0oM9+Z8pXGDdGn4ajvqmimqAGCUwkBr
KCnXYCNnuWrUFTJOGeuFLJGmI5Zs7aB7ouye/VpPF8mAqGObepFTs9QVujyZ6oPZ
N2t3nc6+gCzQc1CWhFLLXZ6V1PMx5d/CKcTLZcQ02aw3HtTtHw0Bhr+1RN6k7txO
slPnsuko7oPtyBQLC32iNzNhbz6mm3Vdn2OgJZtLBn5Gp/bcLZCHEgN2zmjCk4IM
3wJAksqEPlAnIlgGt23Pcr+8jfPzeaIshss1dumYxfIngoycuVpJLK5EAfuE17YZ
PUsLB9tcu3sPkn1zj8zKLg7opzw8a37vBlmX0mnBDZTe7zRt1AvHXwcUKsuVnvud
RFNEgAOSJ3s22vSFuIx1E43odD0S9fggYIQv3wtGt1YoQDByTqLSccVaMgC9JpHu
9c9kTaOrc2BYpqNTc/Zp3TuyjZSHG8DHXmTA2/ZjosTanfLyZ9r0JFgH/jBXjCPO
6+FiQzKWvXhr8CP06wCrtFAmJHOlu57HCLp4Jpx+LUwVZryUNjrYQUlSI2w8M4t4
2ThuSls6qrW9kQdT9ev/dOggAgpn/pBK/nSHU6lyOIOl2FXMX6aqqzcttmdw9IDw
tSYqfuXM1ITlCtfLKcavtk1lnCCsp8B7rXWN6hvFfaD0ijB5hYk=
=Dwpx
-----END PGP SIGNATURE-----

View File

@ -20,9 +20,10 @@ WORKDIR /home/root/app
RUN apk add --no-cache gnupg
COPY . .
COPY ./.wellknown /var/lib/cic-auth-helper/pgp
COPY --from=builder /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
EXPOSE 80
CMD uwsgi --wsgi-file cic_auth_helper/runnable/server.py --http :80 --pyargv "-vv"
CMD uwsgi --wsgi-file cic_auth_helper/runnable/server.py --http :80 --pyargv "-vv --forward-to http://cic-meta-server:80"

View File

@ -1,6 +1,6 @@
[pgp]
trusted_publickey_fingerprint =
trusted_publickey_fingerprint = 43CA77F641ADA031C12665CB47461C31B006BC0E
import_dir = /var/lib/cic-auth-helper/pgp
publickey_filename = publickeys.asc
signature_filename = signature.asc
publickey_filename = allowed.asc
signature_filename = allowed.asc.sig
run_dir =

7
cic_auth_helper/error.py Normal file
View File

@ -0,0 +1,7 @@
class NotFoundError(FileNotFoundError):
def __init__(self, code, msg, headers):
super(NotFoundError, self).__init__(msg)
self.code = code
self.msg = msg
self.headers = headers

View File

@ -4,6 +4,9 @@ import urllib.request
import os
import logging
# local imports
from cic_auth_helper.error import NotFoundError
logg = logging.getLogger(__name__)
@ -16,6 +19,12 @@ def add_x_headers(env, header_f):
header_f(header_orig, env[x])
class ReverseProxyHandler(urllib.request.BaseHandler):
def http_error_404(self, request, response, code, msg, hdrs):
raise NotFoundError(code, msg, response.getheaders())
class ReverseProxy:
def __init__(self, base_url, ignore_proxy_headers=[]):
@ -25,6 +34,7 @@ class ReverseProxy:
self.ignore_proxy_headers = []
for h in ignore_proxy_headers:
self.ignore_proxy_headers.append(h.lower())
self.opener = urllib.request.build_opener(ReverseProxyHandler())
def proxy_pass(self, env, headers=[]):
@ -34,7 +44,7 @@ class ReverseProxy:
add_x_headers(env, req.add_header)
req.add_header('Content-Type', env.get('CONTENT_TYPE', 'application/octet-stream'))
req.data = env.get('wsgi.input')
res = urllib.request.urlopen(req)
res = self.opener.open(req)
logg.debug('headers before reverse proxy {}'.format(headers))

View File

@ -23,6 +23,9 @@ from usumbufu.retrieve.file import FileFetcher
from usumbufu.adapters.uwsgi import UWSGIHTTPAuthorization
from usumbufu.adapters.uwsgi import UWSGIAdapter
# local imports
from cic_auth_helper.error import NotFoundError
logging.basicConfig(level=logging.WARNING)
logg = logging.getLogger()
@ -135,6 +138,7 @@ def application(env, start_response):
# return [b'']
(challenge, expire) = challenger.request(env['REMOTE_ADDR'])
headers.append(('WWW-Authenticate', hoba_auth_request_string(challenge, expire.timestamp(), realm=config.get('HTTP_AUTH_REALM'))),)
logg.debug('headers {}'.format(headers))
start_response('401 authenticate or I will SCREAM_SNAKE_CASE at you', headers)
return [b'']
@ -156,9 +160,14 @@ def application(env, start_response):
response_status = '200 OK'
content = b''
if reverse_proxy != None:
try:
(response_status, headers, content) = reverse_proxy.proxy_pass(env, headers)
except NotFoundError as e:
response_status = '404 ' + e.msg
headers = e.headers
content = b''
else:
content = str(auth_resource).encode('utf-8')
start_response('200 OK', headers)
start_response(response_status, headers)
return [content]

2
tests/.env Normal file
View File

@ -0,0 +1,2 @@
export PGP_TRUSTED_PUBLICKEY_FINGERPRINT=CCE2E1D2D0E36ADE0405E2D0995BB21816313BD5
export PGP_IMPORT_DIR=tests/pgp/dev

View File

@ -0,0 +1,3 @@
- "^/user(/.*)?$":
read:
- user

View File

@ -0,0 +1,84 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
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
HpfJD0o0eOq46T+IQlOFsqLmeqZTM7wRlwM=
=8eSx
-----END PGP PRIVATE KEY BLOCK-----

View File

@ -0,0 +1,151 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
tcsel8kPSjR46rjpP4hCU4WyouZ6plMzvBGXAw==
=Mjei
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1,14 @@
-----BEGIN PGP SIGNATURE-----
iQGzBAABCAAdFiEEzOLh0tDjat4EBeLQmVuyGBYxO9UFAmC4Be8ACgkQmVuyGBYx
O9W36Qv/amj4XpRAZfa5VAGKWWQq7RKtAsD7cIsygenG1BYUXFWSSQc4wnnbdmZF
vizM7j9ibWwhXIJuslA9oZaH2V+8Lt+69xUhN1EEKbYKZ45Amxm5Hi23Y9myUIFF
+uvgkayLHKIFH8vy5snVsll8QmmZvwPtu/+VuUWMHMeVqSbWQmAwz1+rwTAqGbbO
bVt2cqVYPO1HQWGzc6E2S4TDUR6HZUuSSDUDL17bejMEy0cFgySxBji5p9UQXmfN
7I82QdAB5wEuUE5zFr/GdvzBpbeAiLNz7rn0uhW5zbzZVMnaRfMmVl8fR7vgveXE
ILii5JYjJ0FJbO9xRoDhOlnqvMzfLCrHtwcnUd82b9iFvlt5NiiZQDrleIqvDC9S
ntY3ZrxhhaVh6qa59hJkEASzU06i120w+1hMc+6DU1e2DjwUCbEtWaDDG6iVdD2S
13QIXmo9EgCSVsrYRGv3k8LcdZFQQ2sypP1PvktFoqPz144nw8RIqLBUFS60mj5m
JBGF3FnI
=M69r
-----END PGP SIGNATURE-----