From f25bf10206e2605c3d17205d764d43e8c3490fc9 Mon Sep 17 00:00:00 2001 From: Julian Lobbes Date: Mon, 7 Nov 2022 22:17:05 +0100 Subject: [PATCH] feat: add base files --- .gitignore | 20 +++++ Dockerfile | 11 +++ docker-compose.yml | 48 ++++++++++ lumi2/__init__.py | 38 ++++++++ lumi2/static/css/style.css | 4 + lumi2/static/images/apple-touch-icon.png | Bin 0 -> 2889 bytes lumi2/static/images/favicon.ico | Bin 0 -> 160906 bytes lumi2/static/images/favicon.svg | 86 ++++++++++++++++++ lumi2/static/images/og.png | Bin 0 -> 31503 bytes lumi2/static/images/og.svg | 110 +++++++++++++++++++++++ lumi2/templates/base.html | 29 ++++++ lumi2/templates/usermanager/index.html | 6 ++ lumi2/usermanager.py | 14 +++ requirements.txt | 1 + 14 files changed, 367 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 lumi2/__init__.py create mode 100644 lumi2/static/css/style.css create mode 100644 lumi2/static/images/apple-touch-icon.png create mode 100644 lumi2/static/images/favicon.ico create mode 100644 lumi2/static/images/favicon.svg create mode 100644 lumi2/static/images/og.png create mode 100644 lumi2/static/images/og.svg create mode 100644 lumi2/templates/base.html create mode 100644 lumi2/templates/usermanager/index.html create mode 100644 lumi2/usermanager.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8d4e3c9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Docker container instance data directories +/data/ + +# Python virtual environment directory +.venv/ + +# Python cache files and directories +*.pyc +__pycache__/ + +# Flask app-spefific directories +instance/ +dist/ +build/ +*.egg-info/ + +# Test framework cache directories +.pytest_cache/ +.coverage +htmlcov/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6c3a3cd --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +# syntax=docker/dockerfile:1 + +# This Dockerfile builds a docker image containing all dependecies to run +# a development version of the lumi application. + +FROM python:3 + +# Install dependencies +WORKDIR /app +COPY requirements.txt /app/ +RUN pip install -r requirements.txt diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..faf3221 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,48 @@ +--- + +version: "3" + +services: + lumi2: + build: . + container_name: lumi2 + command: flask --app /app/lumi2 --debug run --host 0.0.0.0 --port 80 + volumes: + - ./lumi2/__init__.py:/app/lumi2/__init__.py:ro + - ./lumi2/usermanager.py:/app/lumi2/usermanager.py:ro + - ./lumi2/static/:/app/lumi2/static/:ro + - ./lumi2/templates/:/app/lumi2/templates/:ro + ports: + - "8000:80" + depends_on: + - lumi2-openldap + lumi2-openldap: + container_name: lumi2-openldap + image: osixia/openldap + restart: unless-stopped + volumes: + - ./data/openldap/data:/var/lib/ldap + - ./data/openldap/config:/etc/ldap/slapd.d + hostname: openldap + expose: + - 389 + environment: + LDAP_ORGANISATION: "Example Inc." + LDAP_DOMAIN: "example.com" + LDAP_ADMIN_PASSWORD: "admin" + LDAP_CONFIG_PASSWORD: "admin" + LDAP_TLS_VERIFY_CLIENT: "allow" + lumi2-phpldapadmin: + container_name: lumi2-phpldapadmin + image: osixia/phpldapadmin + restart: unless-stopped + depends_on: + - lumi2-openldap + ports: + - "8001:80" + environment: + PHPLDAPADMIN_LDAP_HOSTS: "openldap" + PHPLDAPADMIN_HTTPS: "false" + PHPLDAPADMIN_SERVER_ADMIN: "admin" + +... diff --git a/lumi2/__init__.py b/lumi2/__init__.py new file mode 100644 index 0000000..b30ea09 --- /dev/null +++ b/lumi2/__init__.py @@ -0,0 +1,38 @@ +import os + +from flask import Flask + + +def create_app(test_config=None): + """ Application factory function. + + Creates and configures the flask app. + """ + + app = Flask(__name__, instance_relative_config=True) + app.config.from_mapping( + SECRET_KEY='ChangeMeInProduction', + SITE_URL='https://www.example.com/', + SITE_TITLE='LUMI 2', + SITE_AUTHOR='LUMI 2 Development Team', + SITE_DESCRIPTION='A simple frontend for LDAP account management.', + ) + + if test_config is None: + # Load the instance config, if it exists, when not testing + app.config.from_pyfile('config.py', silent=True) + else: + # Load the test config if passed in + app.config.from_mapping(test_config) + + # Ensure the instance folder exists + try: + os.makedirs(app.instance_path) + except OSError: + pass + + from . import usermanager + app.register_blueprint(usermanager.bp) + app.add_url_rule('/', endpoint='index') + + return app diff --git a/lumi2/static/css/style.css b/lumi2/static/css/style.css new file mode 100644 index 0000000..072fe8c --- /dev/null +++ b/lumi2/static/css/style.css @@ -0,0 +1,4 @@ +body { + background-color: #222222; + color: #CCCCCC; +} diff --git a/lumi2/static/images/apple-touch-icon.png b/lumi2/static/images/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..03a2a8b7b69f5ae65ee11b2c380552c60bfefdd1 GIT binary patch literal 2889 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Š!E8qqMR}u6o0=#W<3l`Bqw|3 zZ)&)jH&QQeJ;il#u(?*?mqW|MWMLO(f-~_>KUZ=#>YrJgj_ex$@sj6bokre5AzCCt zR+2P17d$c%z1Baet=5T~$BBjrM~W1hi#Tv5B$P&NMJ#~+d-^Q6KnYV!!GE+UJ?{?> zRDMjZY{yx@cKak+K=1m#J(NZR6zGKIf;@M*y}rNt%?`bud*n)mv9C28Po_4z9=Q7L z(L<*j1B{I#tT& z9A-QW9a*;R=r6uBlkzV&e5Od+50InCn}iQ+%|4m%x2WXle&HG}jj88dCq9}A-SxV2G!w#rdI>%}A=Hd)gkS&P(#B{C zoLgS%ZD5RrK>fAK4zK^@df8IFO*ER~cQcUm#=2uB08eW=+=bVRdNMO~g^^M*zuNk3 zycs!wzYdDgp2}WUnor{HY_L4tJN8<#cxE|l`A~CG@G7A)7JMSBWa?>1ii1-W?IAuFj`)srde%{iVHVbC#_eFi zBz4{Mg6(W` z2~+w(vwmuE3zAI_x<$R98x7DZJ zdG623ja%ZQ#yNVHs>Qmu#%bMYZ1L}Smu)M+ho_A(=N%oXv&JC}^};}FE4B@b6LDkZ zBUPxiVMu4=kxP6qc3gIX%yFrN9hA=kb&GU@vhfleB!+s+3Ns8RO?+L}Du;A5t)YLt zf6!YIJ+^KJ8~hT6X0d|XdiYSJXeV2u1$cWTBg$NosCtNO4OpF6S-+E5uEWbQ<8tK_ zM|0sE;0p`Q*xTt;^O0waF;<3_k~?j=3}UV5G}3%#*UZ2 z5UeDl+Tf}mEMcwomi1uqnDcn%L2MT9JvVaEL!nHf@|U$$WqS&}g9p!K=|B^S{}gjw z=MYfr{C-Ke$&}o#jwuigw9d0^8dxLyQJ_{3YnO9jSxT;dx!+lr6d-Z*ZK+V2X&Ot4 z-MbO%u2yu|kS8qP$Fw3_xg6qTF7=Q{>PoB>&l;qs*;NP(d0`_MzHjLYZ1Qt{`qfE7s$-}zGh!5`R3-CLTq51)}xIR=UY|9q-FB z=2>0U%kmbDq^fU0CJTn2h9|0K;+@GVE^8_XK(iVlODD8Prj^(JMx)C?1fK6ey(D$js$)@MkE) z`o;6>7BIxLz9~l~1W(431c3xnF@LnJa*#zxx9f|ZKJL-p@7#{(b`~BjWkkv->8~zd zfrbsy9ei!E(hgv%QYSeO>lkSxuXG4K3)=M)s*VRAI;i(BbIFCx{^SU&p^q+Y)^tx} zjY=R=Y)?s$7AqBI47ef8_=yblrGkBo?2cpm4eyDCr6iI@ROgb$*ptfD_Mc}HY4%lffCa%18! zS)V%Pq!tgbV#$B&DSD$W_R~4I19DD7h}0sL31z)eju$H1IxA-y8w__G#mMI?8_978 z>u01^hyCn0DWm&mJ=ZRSr2PW}E{r&Y8ltn_;Jp4|UAK-y@$meoeN55-$E^+XGD)dT z;rM9Nq=YKBf=0N z@{!b-vu3UmL^6UGE3)EEMbZ)|Om?EYM|6)xeC05a&WDedEJramk<8Y+eZ#b|-ey|* z472FJ?#SN2iEJDyekINX3j4EmyrrCDN&+_>gV3Ws;kb^S%QZASswC;JK@qUTcWNZ{ zgc1DQl5Arxv(=tLsM!Ud4@3U4GBw z>)?DW^Kr7d-}2m@qjKQxUQL?dG$}RrQIx`pt$+KJjjghD9o=c5`9*Z|idbF^P8&j1 z*aL#R literal 0 HcmV?d00001 diff --git a/lumi2/static/images/favicon.svg b/lumi2/static/images/favicon.svg new file mode 100644 index 0000000..c545a99 --- /dev/null +++ b/lumi2/static/images/favicon.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + diff --git a/lumi2/static/images/og.png b/lumi2/static/images/og.png new file mode 100644 index 0000000000000000000000000000000000000000..f176efca1f76ca9d13e90d621e3d49ced90c0367 GIT binary patch literal 31503 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 literal 0 HcmV?d00001 diff --git a/lumi2/static/images/og.svg b/lumi2/static/images/og.svg new file mode 100644 index 0000000..c5ab532 --- /dev/null +++ b/lumi2/static/images/og.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + LUMI 2 + + diff --git a/lumi2/templates/base.html b/lumi2/templates/base.html new file mode 100644 index 0000000..b7382b2 --- /dev/null +++ b/lumi2/templates/base.html @@ -0,0 +1,29 @@ + + + + + + + + {{ config.SITE_TITLE }} + + + + + + + + + + + + + + + + + + {% block content %} + {% endblock content %} + + diff --git a/lumi2/templates/usermanager/index.html b/lumi2/templates/usermanager/index.html new file mode 100644 index 0000000..887618f --- /dev/null +++ b/lumi2/templates/usermanager/index.html @@ -0,0 +1,6 @@ +{% extends 'base.html' %} + +{% block content %} +

Welcome to LUMI 2

+

This site is still under construction.

+{% endblock content %} diff --git a/lumi2/usermanager.py b/lumi2/usermanager.py new file mode 100644 index 0000000..b81101a --- /dev/null +++ b/lumi2/usermanager.py @@ -0,0 +1,14 @@ +"""Views for lumi2.""" + +from flask import ( + Blueprint, render_template +) + + +bp = Blueprint('usermanager', __name__) + +@bp.route('/') +def index(): + """Home page view.""" + + return render_template('usermanager/index.html') diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c9edc1a --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +Flask==2.2.2