Start working on flask app
This commit is contained in:
parent
8e19d33343
commit
b84d91c9c0
10 changed files with 155 additions and 16 deletions
15
Dockerfile
Normal file
15
Dockerfile
Normal file
|
@ -0,0 +1,15 @@
|
|||
FROM python:3.10.4-slim-bullseye
|
||||
|
||||
WORKDIR /app
|
||||
RUN mkdir keys
|
||||
RUN mkdir nagrest
|
||||
COPY requirements.txt ./
|
||||
COPY app/* ./
|
||||
COPY lib/* ./nagrest/
|
||||
COPY keys/* ./keys/
|
||||
RUN pip3 install --no-cache-dir -r requirements.txt
|
||||
RUN apt update && apt upgrade && apt install -y gnupg
|
||||
RUN ["/bin/bash", "-c", "pwd && ls -l"]
|
||||
RUN ["/bin/bash", "-c", "gpg --import /app/keys/*.asc"]
|
||||
|
||||
CMD [ "python3", "./main.py" ]
|
27
app/main.py
Normal file
27
app/main.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
from flask import Flask
|
||||
from flask_gnupg import GnuPG
|
||||
import json
|
||||
from nagrest.nag_parse import NagParse
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config['GPG_HOME_DIR'] = "/root/.gnupg"
|
||||
app.config['GPG_BINARY'] = "/usr/bin/gpg"
|
||||
gpg = GnuPG(app)
|
||||
parser = NagParse()
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
keys_list = gpg.list_keys()
|
||||
for key in keys_list:
|
||||
gpg.trust_keys(key['fingerprint'], 'TRUST_ULTIMATE')
|
||||
file = "/app/keys/test.sig"
|
||||
with open(file, 'rb') as fh:
|
||||
verified = gpg.decrypt_file(fh)
|
||||
if verified.trust_level == verified.TRUST_ULTIMATE:
|
||||
return str(verified).strip()
|
||||
return '{}'
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# use 0.0.0.0 to use it in container
|
||||
app.run(host='0.0.0.0')
|
75
keys/kano@sunet.se.pub.asc
Normal file
75
keys/kano@sunet.se.pub.asc
Normal file
|
@ -0,0 +1,75 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
DVhe
|
||||
=wTa2
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
20
keys/test.sig
Normal file
20
keys/test.sig
Normal file
|
@ -0,0 +1,20 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
{"valid": "message"}
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCgAdFiEEIpL7dwHsMfazpY3ODaCnpXCP4lcFAmJEGYwACgkQDaCnpXCP
|
||||
4lfKwhAAx45ZJGwf6o+aZ5lFtB6b8Nqx/fOm8Ax6IFwQcLebLM79I1yvOSFlcoKk
|
||||
7t3Vwj0pL8d0w+PwNLrkjC78fKDqltTlHtD7ByW7b6lPXEUX1i/e2uBTd6zv+7zg
|
||||
vkWQ1tYk9IOa7X4LubwhIC3L04BC0xNwbnlDioyUox1QzOVKpRufOrr30N0CQE3d
|
||||
U1S6U8y3jLAvHi7dxC+RyvHYH8QGRWoRj6TXa3lsw1aeTShct2f3fXuZT0bQlsap
|
||||
TJoffKKpr2Fw5wxLja00MYkBA4SXl568HLohSeL3uSxa2D//mwZ0zowERf1C+BC7
|
||||
Gx7kSIkH/+16Mn1aHVMktNIZlhvAyoLwGUvZvL81bBTP+BMttPOOHzodRHljPFlW
|
||||
fCWnozTKR0ouWczXR611rIEVCjeXardiDzXyYG41fCl/83TTmMQcQ+NxMbU3Uslk
|
||||
FjvjANzkz/zzdte0S2kpzfe/zCwHT8vsfQM4Jvs+i8ycH+Ui03ShirjPdtwVuKui
|
||||
WIj0o8h3PnBsl6aB3uDtHAjzeDsA4qZddoCqIAcrLVm8rIHXYfvFstevMYtGBqZ7
|
||||
TIq2WhtFIvF8PECXjGK5gN8V4g+uWeBJTykAUbrdWJRaH9g3kbCa2NYRuVvdkwSw
|
||||
LXJnPXqIDkdxqnO2IiIdsTvTdS6iiK1wwPG+oPVkexQB3tM/Auc=
|
||||
=W+Mg
|
||||
-----END PGP SIGNATURE-----
|
BIN
lib/__pycache__/nag_parse.cpython-310.pyc
Normal file
BIN
lib/__pycache__/nag_parse.cpython-310.pyc
Normal file
Binary file not shown.
|
@ -3,7 +3,7 @@ import re
|
|||
import json
|
||||
import hashlib
|
||||
from enum import Enum, auto
|
||||
from nag_object import NagObject, NagObjectType
|
||||
from .nag_object import NagObject, NagObjectType
|
||||
|
||||
class ParserState(Enum):
|
||||
COMMENT = auto()
|
||||
|
@ -18,20 +18,29 @@ def hash_string(string:str) -> int:
|
|||
return int(digest,16) * 1000000
|
||||
|
||||
class NagParse:
|
||||
def __init__(self, config_files: list[str]):
|
||||
self.m_config_files: list[str] = config_files
|
||||
def __init__(self):
|
||||
self.m_config_table: dict[int,str] = dict()
|
||||
self.m_objects: list[NagObject] = list()
|
||||
for config_file in self.m_config_files:
|
||||
self.m_config_table[hash_string(config_file)] = config_file
|
||||
for object in self.parse_config(config_file):
|
||||
self.m_objects.append(object)
|
||||
|
||||
|
||||
def __str__(self):
|
||||
string = str()
|
||||
for object in self.m_objects:
|
||||
string += str(object) + "\n"
|
||||
return string
|
||||
|
||||
def consume_config_files(self, config_files: list[str]) -> None:
|
||||
for config_file in config_files:
|
||||
self.m_config_table[hash_string(config_file)] = config_file
|
||||
for object in self.parse_config(config_file):
|
||||
self.m_objects.append(object)
|
||||
|
||||
def consume_config_list(self, config_list: list[dict] ) -> None:
|
||||
for object in config_list:
|
||||
nag_object = NagObject()
|
||||
nag_object.from_object(object)
|
||||
self.m_objects.append(nag_object)
|
||||
|
||||
def to_json(self):
|
||||
return json.dumps([x.to_object() for x in self.m_objects])
|
||||
|
2
requirements.txt
Normal file
2
requirements.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Flask-GnuPG
|
||||
Flask
|
|
@ -1,3 +0,0 @@
|
|||
import os, sys
|
||||
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
|
||||
from nagparse import NagParse
|
|
@ -1,6 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
import sys
|
||||
from nagparse import NagParse
|
||||
parser = NagParse(sys.argv[1:])
|
||||
for object in parser.m_objects:
|
||||
print(object.get_id())
|
Loading…
Add table
Reference in a new issue