From 8629b01da3b1df543aafc51ab5acca3cf66d72fc Mon Sep 17 00:00:00 2001 From: relikd Date: Mon, 2 Oct 2023 23:39:20 +0200 Subject: [PATCH] Initial --- .gitignore | 1 + Makefile | 45 ++++++ README.md | 125 ++++++++++++++++ backend/.gitignore | 10 ++ backend/Dockerfile | 22 +++ backend/app/__init__.py | 0 backend/app/admin.py | 41 +++++ backend/app/apps.py | 6 + backend/app/form/file_with_img_preview.py | 38 +++++ backend/app/migrations/0001_initial.py | 49 ++++++ backend/app/migrations/__init__.py | 0 backend/app/models/__init__.py | 2 + backend/app/models/member.py | 97 ++++++++++++ backend/app/models/organization.py | 53 +++++++ backend/app/static/favicon.ico | Bin 0 -> 1300 bytes backend/app/static/favicon.svg | 21 +++ backend/app/templates/forms/img-file.html | 14 ++ backend/app/urls.py | 24 +++ backend/app/utils.py | 28 ++++ backend/app/views.py | 32 ++++ backend/config/__init__.py | 0 backend/config/asgi.py | 16 ++ backend/config/settings.py | 140 ++++++++++++++++++ backend/config/urls.py | 31 ++++ backend/config/wsgi.py | 16 ++ backend/manage.py | 22 +++ backend/requirements.txt | 2 + backend/scripts/on-deploy.sh | 7 + backend/scripts/on-init.sh | 4 + backend/setup.py | 26 ++++ backend/templates/admin/base_site.html | 5 + docker-compose.yml | 32 ++++ docs/card.png | Bin 0 -> 81241 bytes frontend/README.md | 68 +++++++++ .../org/d9498400-2640-442e-a092-6b4537a9b74d | Bin 0 -> 46789 bytes frontend/example-html/img/bg.png | Bin 0 -> 6748 bytes frontend/example-html/img/header.svg | 18 +++ frontend/example-html/img/logo.svg | 5 + frontend/example-html/img/no-img.svg | 1 + frontend/example-html/index.html | 35 +++++ frontend/example-html/manifest.json | 4 + frontend/example-html/script.js | 124 ++++++++++++++++ frontend/example-html/style.css | 125 ++++++++++++++++ frontend/js-encryption/decrypt.js | 13 ++ frontend/js-encryption/encrypt.js | 11 ++ frontend/nginx-same-path.conf | 49 ++++++ frontend/nginx-split-path.conf | 50 +++++++ 47 files changed, 1412 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 backend/.gitignore create mode 100755 backend/Dockerfile create mode 100644 backend/app/__init__.py create mode 100644 backend/app/admin.py create mode 100644 backend/app/apps.py create mode 100644 backend/app/form/file_with_img_preview.py create mode 100644 backend/app/migrations/0001_initial.py create mode 100644 backend/app/migrations/__init__.py create mode 100644 backend/app/models/__init__.py create mode 100644 backend/app/models/member.py create mode 100644 backend/app/models/organization.py create mode 100644 backend/app/static/favicon.ico create mode 100644 backend/app/static/favicon.svg create mode 100644 backend/app/templates/forms/img-file.html create mode 100644 backend/app/urls.py create mode 100644 backend/app/utils.py create mode 100644 backend/app/views.py create mode 100644 backend/config/__init__.py create mode 100644 backend/config/asgi.py create mode 100644 backend/config/settings.py create mode 100644 backend/config/urls.py create mode 100644 backend/config/wsgi.py create mode 100755 backend/manage.py create mode 100644 backend/requirements.txt create mode 100755 backend/scripts/on-deploy.sh create mode 100755 backend/scripts/on-init.sh create mode 100644 backend/setup.py create mode 100644 backend/templates/admin/base_site.html create mode 100755 docker-compose.yml create mode 100644 docs/card.png create mode 100644 frontend/README.md create mode 100644 frontend/example-html/data/org/d9498400-2640-442e-a092-6b4537a9b74d create mode 100644 frontend/example-html/img/bg.png create mode 100644 frontend/example-html/img/header.svg create mode 100644 frontend/example-html/img/logo.svg create mode 100644 frontend/example-html/img/no-img.svg create mode 100644 frontend/example-html/index.html create mode 100644 frontend/example-html/manifest.json create mode 100644 frontend/example-html/script.js create mode 100644 frontend/example-html/style.css create mode 100644 frontend/js-encryption/decrypt.js create mode 100644 frontend/js-encryption/encrypt.js create mode 100644 frontend/nginx-same-path.conf create mode 100644 frontend/nginx-split-path.conf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2eea525 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b9e8ce0 --- /dev/null +++ b/Makefile @@ -0,0 +1,45 @@ +SSH ?= vps3:~/ausweis-docker + +.PHONY: help +help: + @echo 'defaults: SSH=$(SSH)' + @echo + @echo 'available commands:' + @echo ' - for docker: start, stop, nuke, init, gen-key' + @echo ' - for rsync: push [SSH=xxx]' + +# ---------- +# docker +# ---------- + +.PHONY: init +init: + docker-compose exec app sh /django_project/scripts/on-init.sh + +.PHONY: gen-key +gen-key: + docker-compose exec app python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())' + +.PHONY: start +start: + docker-compose up -d --force-recreate + +.PHONY: stop +stop: + docker-compose stop + +.PHONY: nuke +nuke: + docker rm ausweis || true + docker network rm ausweis || true + docker image rm ausweis || true + +# ---------- +# rsync +# ---------- + +.PHONY: push +push: + rsync -av --delete --exclude=backend/data --exclude=.venv --exclude=.git --exclude=.DS_Store \ + backend docker-compose.yml Makefile \ + $(SSH)/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..22230ea --- /dev/null +++ b/README.md @@ -0,0 +1,125 @@ +# Ausweis + +A Django app for digital membership cards. + +![example member card](docs/card.png) + + +## Features + +- Encrypted personal data +- Cards with limited validity and auto-expire +- Daily validity and animation to prohibit screenshots +- Access your cards as bookmark or Homescreen app +- Fully customizable card design (html,css,js knowledge required) +- Extensible custom fields +- Static frontend with separate backend for card management (can be used offline) + + +## Install (Docker) + +### 1. Clone this repo or download the code to your server. + +Alternatively you can rsync the content to your server: + +```sh +make push SSH=user@domain:/path/to/ausweis +``` + +(this will rsync: `backend/*`, `Makefile`, `docker-compose.yml`) + + +### 2. Create your environment file + +You must generate a secure key first. Alternatively, you can run `make gen-key` to generate a new key but this will only work if the container is already running (next step). To apply the new key, you must reboot the container (`make stop start`). + +File: `/path/to/ausweis/.env` + +```sh +DJANGO_SECRET_KEY='your-fancy-secret' +ALLOWED_HOSTS=mydomain +#URL_SUBPATH=backend +DEBUG=0 +``` + + +Then set the permissions of the file to be readable only by the docker user: + +```sh +chown root:root "/path/to/ausweis/.env" +chmod 600 "/path/to/ausweis/.env" +``` + + +### 3. Start the container + +```sh +make start +make init # only needed the first time (creates admin user) +``` + + +### 4. Configure webserver + +You can run this server either on same url or split the backend and frontend part into two. Refer to the `nginx.conf` files in `frontend`. + +Make sure to configure the file properly. See [frontend/README.md](frontend/README.md) for further instructions. + +You may need to create an SSL certificat first (e.g., Certbot). + + +### 5. Test your server + +Open the administration page to create new cards. Depending on your configuration this URL will be hosted at `https://your-domain.com//edit/`. + + + +## Install (vanilla) + +**Not tested** but should be similar to the Docker setup. You will need to install `pip install gunicorn uvicorn` and run the Django application directly (see `scripts/on_deploy.sh`). Further, you will need to update `STATIC_ROOT` and `EXPORT_PATH` in your `settings.py`. (And probably check how to pass the env-file to `gunicorn`). Finally, you should persist the service to respawn after a system reboot. + + + +## Next steps + +So your server is running and you have created your first card. What's next? + +- Modify the frontend html example to match the design of your business / workshop (see [Frontend](#frontend) below). + +- If you need more fields, use the "Additional data" json (e.g., `{"extra":"Value"}`). And in your html: `placeholder`. + +- You probably want to modify the webmanifest so that you can "install" your member card as an "app" (incl. `apple-touch-icon` etc.). Have a look at the [real favicon generator](https://realfavicongenerator.net/) or create your own. + + + +## Develop + +### Frontend + +1. Start a webserver from `./frontend/example-html/`. +A simple static server is sufficient (e.g., `python -m SimpleHTTPServer 80` or `php -S 0:80`) + +2. Open http://127.0.0.1/#org/d9498400-2640-442e-a092-6b4537a9b74d/rpsLvt6armrp + + +### Backend + +1. Prepare virtual environment and start dev server: + +```sh +cd backend +python3 -m venv .venv +. ./.venv/bin/activate +pip install -r requirements.txt +./manage.py runserver +``` + +2. Open http://127.0.0.1:8000/edit/ +3. Create a member and an organization (with URL `http://127.0.0.1`) +4. Create a symlink for the data folder to use your backend json files directly: + +```sh +cd frontend/example-html +ln -s ../../backend/data/export data +# alternative: edit `EXPORT_PATH` in `backend/config/settings.py` +``` diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..be360a9 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,10 @@ +data/ + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100755 index 0000000..6d1c78a --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,22 @@ +FROM python:3.11-alpine + +EXPOSE 8099 + +# install base system +RUN apk add --no-cache gcc libc-dev linux-headers +RUN pip install --upgrade pip +RUN pip install uvicorn gunicorn + +# install requirements +WORKDIR /django_project +COPY ./requirements.txt . +RUN pip install -r requirements.txt + +# then scripts (likely wont change often) +ENV PATH="/scripts:/py/bin:$PATH" +COPY --chmod=700 ./scripts /scripts + +# finally copy app (likely will invalidate cache) +COPY . . + +CMD ["on-deploy.sh"] diff --git a/backend/app/__init__.py b/backend/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/app/admin.py b/backend/app/admin.py new file mode 100644 index 0000000..17af445 --- /dev/null +++ b/backend/app/admin.py @@ -0,0 +1,41 @@ +from django.contrib import admin +from django.contrib.auth.models import Group # , User +from django.utils.safestring import mark_safe + +from .models import Organization, Member + +admin.site.site_header = 'Ausweis-Verwaltung' # top-most title +admin.site.index_title = 'Ausweis' # title at root +admin.site.site_title = 'Ausweis-Verwaltung' # suffix to + +admin.site.unregister(Group) +# admin.site.unregister(User) + + +@admin.register(Organization) +class OrganizationAdmin(admin.ModelAdmin): + prepopulated_fields = {'slug': ['name']} + list_display = ('name', 'slug', 'member_count') + list_display_links = ('name', 'slug') + search_fields = ('name', 'slug') + + @admin.display(description='Mitglieder') + def member_count(self, obj: 'Organization'): + return obj.members.count() + + +@admin.register(Member) +class MemberAdmin(admin.ModelAdmin): + readonly_fields = ('uuid', 'url_link_full') + list_display = ( + 'name', 'member_id', 'valid_since', 'valid_until', 'url_link_short') + search_fields = ('name', 'member_id') + + @admin.display(description='URL') + def url_link_short(self, obj: 'Member'): + return mark_safe(f'<a target="blank" href="{obj.export_url}">Link</a>') + + @admin.display(description='URL') + def url_link_full(self, obj: 'Member'): + return mark_safe('<a target="blank" href="{0}">{0}</a>'.format( + obj.export_url)) diff --git a/backend/app/apps.py b/backend/app/apps.py new file mode 100644 index 0000000..ed327d2 --- /dev/null +++ b/backend/app/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class AppConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'app' diff --git a/backend/app/form/file_with_img_preview.py b/backend/app/form/file_with_img_preview.py new file mode 100644 index 0000000..df0e336 --- /dev/null +++ b/backend/app/form/file_with_img_preview.py @@ -0,0 +1,38 @@ +from django.conf import settings +# from django.contrib.admin.widgets import AdminFileWidget +# from django.core.exceptions import ValidationError +from django.db import models +from django.forms import ValidationError +from django.forms.widgets import ClearableFileInput + +# class ImageFileWidget(AdminFileWidget): + + +class ImageFileWidget(ClearableFileInput): + template_name = 'forms/img-file.html' + + def get_context(self, name, value, attrs): + context = super().get_context(name, value, attrs) + context['MEDIA_URL'] = settings.MEDIA_URL + return context + + +class FileWithImagePreview(models.FileField): + def formfield(self, **kwargs): + # if 'widget' not in kwargs: # only if no other is set (admin UI) + kwargs['widget'] = ImageFileWidget + return super().formfield(**kwargs) + + +class ImageValidator: + help_text = 'Ideal: 250 x 320 px (JPEG oder PNG)' + + @staticmethod + def validate(value: 'models.FieldFile') -> None: + # TODO: make configurable + if value.size > 512 * 1024: + raise ValidationError('Datei darf maximal 512 KB groß sein.') + + content_type = getattr(value.file, 'content_type', None) + if content_type not in ['image/png', 'image/jpeg', None]: + raise ValidationError('Nur JPEG und PNG Bilder werden unterstützt') diff --git a/backend/app/migrations/0001_initial.py b/backend/app/migrations/0001_initial.py new file mode 100644 index 0000000..adbdd64 --- /dev/null +++ b/backend/app/migrations/0001_initial.py @@ -0,0 +1,49 @@ +# Generated by Django 4.2.5 on 2023-10-02 14:25 + +import app.form.file_with_img_preview +import app.utils +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Organization', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, verbose_name='Name')), + ('slug', models.SlugField(unique=True, verbose_name='URL Slug')), + ('exportBaseUrl', models.URLField(verbose_name='Export Base-URL')), + ], + options={ + 'verbose_name': 'Organisation', + 'verbose_name_plural': 'Organisationen', + }, + ), + migrations.CreateModel( + name='Member', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('secret', models.CharField(default=app.utils.random_secret, editable=False, max_length=20)), + ('member_id', models.CharField(max_length=20, verbose_name='Mitglieder-Nr.')), + ('name', models.CharField(max_length=100, verbose_name='Name')), + ('valid_since', models.DateField(verbose_name='Mitglied seit')), + ('valid_until', models.DateField(blank=True, null=True, verbose_name='Mitglied bis')), + ('image', app.form.file_with_img_preview.FileWithImagePreview(blank=True, help_text='Ideal: 250 x 320 px (JPEG oder PNG)', null=True, upload_to=app.utils.overwrite_upload, validators=[app.form.file_with_img_preview.ImageValidator.validate], verbose_name='Bild')), + ('additional', models.JSONField(blank=True, null=True, verbose_name='Zusätzliche Daten (JSON)')), + ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='members', to='app.organization')), + ], + options={ + 'verbose_name': 'Mitglied', + 'verbose_name_plural': 'Mitglieder', + }, + ), + ] diff --git a/backend/app/migrations/__init__.py b/backend/app/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/app/models/__init__.py b/backend/app/models/__init__.py new file mode 100644 index 0000000..768a859 --- /dev/null +++ b/backend/app/models/__init__.py @@ -0,0 +1,2 @@ +from .organization import Organization # noqa: F401 +from .member import Member # noqa: F401 diff --git a/backend/app/models/member.py b/backend/app/models/member.py new file mode 100644 index 0000000..bdc1bfd --- /dev/null +++ b/backend/app/models/member.py @@ -0,0 +1,97 @@ +from pathlib import PosixPath +from django.conf import settings +from django.db import models + +from app.form.file_with_img_preview import FileWithImagePreview, ImageValidator +from app.utils import encrypt, overwrite_upload, random_secret + +import os +import uuid +import json +import base64 + + +class Member(models.Model): + # auto-generated ids + uuid = models.UUIDField( + primary_key=True, default=uuid.uuid4, editable=False) + secret = models.CharField( + max_length=20, default=random_secret, editable=False) + + # member info + organization = models.ForeignKey( + 'Organization', on_delete=models.CASCADE, related_name='members') + member_id = models.CharField('Mitglieder-Nr.', max_length=20) + name = models.CharField('Name', max_length=100) + valid_since = models.DateField('Mitglied seit') + valid_until = models.DateField('Mitglied bis', blank=True, null=True) + image = FileWithImagePreview( + 'Bild', blank=True, null=True, + upload_to=overwrite_upload, validators=[ImageValidator.validate], + help_text=ImageValidator.help_text) + additional = models.JSONField( + 'Zusätzliche Daten (JSON)', blank=True, null=True) + + class Meta: + verbose_name = 'Mitglied' + verbose_name_plural = 'Mitglieder' + + def __str__(self) -> str: + return self.name + + @property + def export_url(self) -> str: + return self.organization.exportBaseUrl + \ + f"#{self.organization.slug}/{self.uuid}/{self.secret}" + + @property + def export_os_path(self) -> PosixPath: + return settings.EXPORT_PATH / self.organization.slug / str(self.uuid) + + @property + def image_save_url(self) -> str: + return f'{self.organization.slug}/{self.uuid}' + + @property + def image_os_path(self) -> PosixPath: + return settings.MEDIA_ROOT / self.organization.slug / str(self.uuid) + + @property + def json(self): + return json.dumps({ + 'name': self.name, + 'org': self.organization.name, + 'id': self.member_id, + 'valid_since': str(self.valid_since or ''), + 'valid_until': str(self.valid_until or ''), + 'data': self.additional or '', + 'img': base64.b64encode(self.image.read()).decode( + 'utf-8') if self.image else None, + }) + + @property + def json_encrypted(self) -> bytes: + return encrypt(self.json, self.secret) + + def export(self): + os.makedirs(self.export_os_path.parent, exist_ok=True) + with open(self.export_os_path, 'wb') as fp: + fp.write(self.json_encrypted) + + def save(self, *args, **kwargs): + if self.pk: + try: + prev = Member.objects.get(pk=self.pk) + if prev.image != self.image: + prev.image.delete(save=False) + except Member.DoesNotExist: + pass + self.export() + return super().save(*args, **kwargs) + + def delete(self, *args, **kwargs): + if self.image: + self.image.delete(save=False) + if os.path.isfile(self.export_os_path): + os.remove(self.export_os_path) + return super().delete(*args, **kwargs) diff --git a/backend/app/models/organization.py b/backend/app/models/organization.py new file mode 100644 index 0000000..5983fb2 --- /dev/null +++ b/backend/app/models/organization.py @@ -0,0 +1,53 @@ +from django.conf import settings +from django.db import models + +import os +import shutil +import typing + +if typing.TYPE_CHECKING: + from app.models.member import Member + + +class Organization(models.Model): + name = models.CharField('Name', max_length=100) + slug = models.SlugField('URL Slug', unique=True, max_length=50) + exportBaseUrl = models.URLField('Export Base-URL', max_length=200) + members: 'models.QuerySet[Member]' + + class Meta: + verbose_name = 'Organisation' + verbose_name_plural = 'Organisationen' + + def __str__(self) -> str: + return self.name + + def save(self, *args, **kwargs): + if self.pk: + try: + prev = Organization.objects.get(pk=self.pk) + if prev.slug != self.slug: + renameSlug(prev.slug, self.slug) + except Organization.DoesNotExist: + pass + return super().save(*args, **kwargs) + + def delete(self, *args, **kwargs): + deleteSlug(self.slug) + return super().delete(*args, **kwargs) + + +def renameSlug(oldSlug: str, newSlug: str): + if newSlug == oldSlug: + return + oldExportPath = settings.EXPORT_PATH / oldSlug + oldMediaPath = settings.MEDIA_ROOT / oldSlug + if os.path.exists(oldExportPath): + os.rename(oldExportPath, settings.EXPORT_PATH / newSlug) + if os.path.exists(oldMediaPath): + os.rename(oldMediaPath, settings.MEDIA_ROOT / newSlug) + + +def deleteSlug(oldSlug: str): + shutil.rmtree(settings.EXPORT_PATH / oldSlug, ignore_errors=True) + shutil.rmtree(settings.MEDIA_ROOT / oldSlug, ignore_errors=True) diff --git a/backend/app/static/favicon.ico b/backend/app/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..35c8fd8202473d2d32f6233584e90fc2c58e6df4 GIT binary patch literal 1300 zcmZQzU}Rus5D;KsU|>*S;AdoDFaxm^ApCWV3=FP}3=9Sa5WXT41H)$~28PZ6KX+a( zDJ}*E23}7OmmmfP29OB?9Bd2>4Dz4<Co(WFT=R5s45?sTJE@WFP=H9=`^9(McjRAK z%KjqOso|Z2hscx$9v5b|s}3CkJgm14g!D}CIPmgcrlfS)rupZO{kd=Zu5X3*rArBm zHhuER_B|#c_Tt7n4~?Z7R?Dx%uZdisyi|oTxW;p(?bnC}&3Y_T&YzsMe!F$3r{e}& zmn(00R;H?bso2M%X<fV3ej4`&My3YM2;m1u*1f)bfO~~`{G}WB1txJ8ZjyfUp)Wmf zLhpQb&c{m_maW!FxXbv@K|*!GFWH2N|IVgQ+|XxW*?0KS_EYyYy3-c9$W}71zV2ao zkgY2R6d<0ielF{r5}L3C2Pgm)z`;>mRrQ5|fw2@497z&B2_g~<g?0kWx7ITCwJp-v zGk?SU4fU6l8D6oo@berHWs2hWI3i~<@rFc-Q()G^II+ndAqy^g2so%bDA}Lhep~i@ z?T+PM^76%R@4YWRSH5kt;LHmV1+A~A-I~<0GX2(8J-$gQifgyBEIg`KB(cD4vE!iz zH69yLwkbg@IkIyuKZ>%}TFAI0^Hk`Hz-g&0Is9!~?!0nQHDSp3#kS<bX`VZN^H!D{ zE<1dYckkZ%6H*qt>wX9=NV}&lZy@flC-m-tQ_udzbOj2sAAA{qS2o0a!<AQOY)dNb zKSqljIX?aRE4H$}9&JA76OBG>52Oy>ww4ur8vS1G^2w{R?HjkS?tM6e;m+ziOk&Tw zPcZ5!H~d>K*<JDEz`~}Qw(}3!c6>?gxy7Ux%PF{uBUvJkA-Bt{jU(`7^4YTcfAbg) zYYAB0pV4IhExo1HMe3cC(cfcJbGVo-^_L!#5d7txdH2!-hZ)N*lud}xI;~@L)#r8k z1Nr%8UW)Bp%Mx1%#1<%d8-Qagoatvf0|Vm=NNl~G$>`3UC~^F|;5Wf{%6H6nTx5@! zpTwZXa)oa}LbK2ULyu;*TTUx2rkHM7a8`D*Q0Z)s1DF54oEe<I{p#+IcPjt?kuAUT zZ-4du@0DfmpZ4_hY*JM(a^2Cr>Ot9)%O|D?-B&PfKVLsrVOwhC6N^3-<;&$9@;4a+ z9#3v{YOJ}hzR<}mrN?;(1IN#m?TH?jT6<1d$+9jhjGZ1aeLM52`4x+LeAX20Jj1Yr zB_eWtmkD>|X5I&Pc~@566HQH-#j6m{rtp_x@4*hU*Sb-+t&a#k)wN|f9$uSTdc)Fc zar~0l|MKx_-HZo%yQapfGSvM4;KP+U-LGed9z*%_Bl4@tZEiB0?S8kPLBQd7{(Jdu z#searOb31m?C&uD7Jcf&(k$mX(L)?ON{b&IIn2!Uy!x=9rpbGm<As&k3BMQE?p5@X zPAGW1{5t2>^}jE_3Rz`pke<p|@OJ+7Xu+JAj0(<YpSqI|mGUy!T;0!*VB)fdvDd0^ zxf&D0-SEXfIeut2Do8OfS#3NfBE)>4v_5XJ{)w!VJ!da{Osl&2p6yxh83qZ4uh)_e z%-;R@<BTQTlF74oGcw%y@vTaLMJ4n^+U;-sZ@=2~GfB5J2&P<R?_;?6c>av49TS9< gS5FPj5IwAP=R`(I$`sLBCS8|;^(-I19Y#(d05+K+(*OVf literal 0 HcmV?d00001 diff --git a/backend/app/static/favicon.svg b/backend/app/static/favicon.svg new file mode 100644 index 0000000..a547dc2 --- /dev/null +++ b/backend/app/static/favicon.svg @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1000 1000"> +<rect fill="#000" y="112.5" rx="108" width="1000" height="775"/> +<g transform="translate(50,50)scale(.9)"> +<rect fill="#fff" y="125" rx="80" width="1000" height="750"/> +<g fill="#43768F"> +<rect x="62" y="187" rx="17" width="876" height="63"/> +<rect x="62" y="207" width="876" height="43"/> +<circle cx="282" cy="435" r="94"/> +<path d="M438.2,654.1c0-17.6-1.2-33.9-3.7-49.1c-2.5-15.1-6.4-29.8-11.9-44c-5.5 +-14.2-13.8-25.3-24.9-33.4c-11-8.1-24.3-12.2-39.6-12.2c-20.8,20.8-46.2,31.2 +-76.2,31.2s-55.4-10.4-76.2-31.2c-15.3,0-28.5,4.1-39.6,12.2c-11.1,8.1-19.4,19.3 +-24.9,33.4c-5.5,14.2-9.5,28.8-11.9,44c-2.4,15.2-3.7,31.5-3.7,49.1c0,17.9,5.1, +33.1,15.4,45.6c10.3,12.5,22.5,18.8,36.9,18.8h207.9c14.3,0,26.6-6.2,36.9-18.8 +C433.2,687.2,438.2,672,438.2,654.1z"/> +<rect x="500" y="375" width="375" height="63"/> +<rect x="500" y="500" width="190" height="63"/> +<rect x="750" y="500" width="125" height="63"/> +<rect x="500" y="625" width="375" height="63"/> +</g></g> +</svg> diff --git a/backend/app/templates/forms/img-file.html b/backend/app/templates/forms/img-file.html new file mode 100644 index 0000000..95a9655 --- /dev/null +++ b/backend/app/templates/forms/img-file.html @@ -0,0 +1,14 @@ +<p> + {% if widget.is_initial %} + <img src="{{MEDIA_URL}}{{widget.value}}" style="max-width: 150px; max-height: 150px; margin: 8px;" /> + {% if not widget.required %} + <span class="clearable-file-input"> + <input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}"{% if widget.attrs.disabled %} disabled{% endif %}> + <label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label> + </span> + {% endif %} + <br> + <span>{{ widget.input_text }}:</span> + {% endif %} + <input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}> +</p> \ No newline at end of file diff --git a/backend/app/urls.py b/backend/app/urls.py new file mode 100644 index 0000000..d5a67ff --- /dev/null +++ b/backend/app/urls.py @@ -0,0 +1,24 @@ +from django.conf import settings +from django.core.exceptions import PermissionDenied +from django.http import HttpRequest +from django.urls import path +from django.views.static import serve + +from app.views import EncryptedJsonREST + + +def ensure_authenticated(request: HttpRequest): + if not request.user.is_authenticated: + raise PermissionDenied() + + +def protected_serve(request, **kwargs): + ensure_authenticated(request) + return serve(request, **kwargs) + + +urlpatterns = [] + +if settings.API_ENABLED: + urlpatterns.append( + path('api/json/<str:org>/<uuid:uuid>', EncryptedJsonREST.as_view())) diff --git a/backend/app/utils.py b/backend/app/utils.py new file mode 100644 index 0000000..207574c --- /dev/null +++ b/backend/app/utils.py @@ -0,0 +1,28 @@ +from django.utils.crypto import get_random_string +from cryptography.hazmat.primitives.ciphers.aead import AESGCM +from cryptography.hazmat.primitives.hashes import Hash, SHA256 + +import os +import typing + +if typing.TYPE_CHECKING: + from app.models.member import Member + + +def random_secret(): + return get_random_string(16) + + +def overwrite_upload(instance: 'Member', filename: str): + if os.path.isfile(instance.image_os_path): + os.remove(instance.image_os_path) + return instance.image_save_url + + +def encrypt(plaintext: str, key: str): + digest = Hash(SHA256()) + digest.update(key.encode('utf8')) + aesgcm = AESGCM(digest.finalize()) + iv = os.urandom(12) + ct = aesgcm.encrypt(iv, plaintext.encode('utf8'), iv) + return iv + ct diff --git a/backend/app/views.py b/backend/app/views.py new file mode 100644 index 0000000..8fdb1dc --- /dev/null +++ b/backend/app/views.py @@ -0,0 +1,32 @@ +from django.conf import settings +from django.http import HttpRequest, HttpResponse +from django.shortcuts import get_object_or_404 +from django.views import View +from django.views.static import serve + +from app.models import Member + + +class EncryptedJsonREST(View): + http_method_names = ['get'] + + def get(self, request: HttpRequest, *args, **kwargs): + return serveStaticJson(request, **kwargs) + # return serveDynamicJson(**kwargs) + + +def memberOr404(kwargs: 'dict[str, str]'): + org, uuid = kwargs['org'], kwargs['uuid'] + return get_object_or_404(Member, uuid=uuid, organization__slug=org) + + +def serveStaticJson(request: HttpRequest, **kwargs): + org, uuid = kwargs['org'], kwargs['uuid'] + return serve( + request, path=f'{org}/{uuid}', document_root=settings.EXPORT_PATH) + + +def serveDynamicJson(**kwargs): + mem = memberOr404(kwargs) + return HttpResponse( + mem.json_encrypted, content_type='application/octet-stream') diff --git a/backend/config/__init__.py b/backend/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/config/asgi.py b/backend/config/asgi.py new file mode 100644 index 0000000..3535150 --- /dev/null +++ b/backend/config/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') + +application = get_asgi_application() diff --git a/backend/config/settings.py b/backend/config/settings.py new file mode 100644 index 0000000..b462a1d --- /dev/null +++ b/backend/config/settings.py @@ -0,0 +1,140 @@ +""" +Django settings for project. + +Generated by 'django-admin startproject' using Django 4.2.4. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/4.2/ref/settings/ +""" + +import os +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', 'insecure-$a^nh$d!tgut43^91@') + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = SECRET_KEY.startswith('insecure') or \ + os.environ.get('DEBUG', '0').lower() not in ['false', 'no', '0'] + +ALLOWED_HOSTS = [] +ALLOWED_HOSTS.extend( + filter( + None, + os.environ.get('ALLOWED_HOSTS', '*').split(','), + ) +) +CSRF_TRUSTED_ORIGINS = ['https://' + x for x in ALLOWED_HOSTS] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'app.apps.AppConfig', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.locale.LocaleMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'config.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [BASE_DIR / 'templates'], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'config.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/4.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'data' / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'}, + {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'}, + {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'}, + {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'}, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.2/topics/i18n/ + +LANGUAGE_CODE = 'de' +TIME_ZONE = 'Europe/Berlin' +USE_I18N = True +USE_TZ = False + + +# Default primary key field type +# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.2/howto/static-files/ + +STATIC_URL = 'static/' +STATIC_ROOT = BASE_DIR / 'data' / 'static' + +MEDIA_URL = 'upload/' +MEDIA_ROOT = BASE_DIR / 'data' / 'upload' + +# custom + +API_ENABLED = False +EXPORT_PATH = BASE_DIR / 'data' / 'export' + +# enable sub-path URLs +URL_SUBPATH = os.environ.get('URL_SUBPATH') or '' +URL_SUBPATH = (URL_SUBPATH.strip('/') + '/').lstrip('/') +if URL_SUBPATH: + STATIC_URL = URL_SUBPATH + STATIC_URL + MEDIA_URL = URL_SUBPATH + MEDIA_URL diff --git a/backend/config/urls.py b/backend/config/urls.py new file mode 100644 index 0000000..f8bf7cf --- /dev/null +++ b/backend/config/urls.py @@ -0,0 +1,31 @@ +""" +URL configuration for project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.conf import settings +from django.conf.urls.static import static +from django.urls import include, path + +from app.urls import protected_serve + + +urlpatterns = [ + path(settings.URL_SUBPATH, include('app.urls')), + path(settings.URL_SUBPATH + 'edit/', admin.site.urls), + # enable authenticated upload file access + path(settings.MEDIA_URL.lstrip('/') + '<path:path>', protected_serve, + {'document_root': settings.MEDIA_ROOT}), +] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) diff --git a/backend/config/wsgi.py b/backend/config/wsgi.py new file mode 100644 index 0000000..c7d8a2f --- /dev/null +++ b/backend/config/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') + +application = get_wsgi_application() diff --git a/backend/manage.py b/backend/manage.py new file mode 100755 index 0000000..8e7ac79 --- /dev/null +++ b/backend/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..67c2fad --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,2 @@ +Django==4.2.5 +cryptography==41.0.4 diff --git a/backend/scripts/on-deploy.sh b/backend/scripts/on-deploy.sh new file mode 100755 index 0000000..c14cee7 --- /dev/null +++ b/backend/scripts/on-deploy.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +python manage.py collectstatic --noinput +python manage.py migrate + +# python -m uvicorn --port 8099 config.asgi:application +python -m gunicorn -b 0.0.0.0:8099 -k uvicorn.workers.UvicornWorker config.asgi:application diff --git a/backend/scripts/on-init.sh b/backend/scripts/on-init.sh new file mode 100755 index 0000000..b7010dc --- /dev/null +++ b/backend/scripts/on-init.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +python manage.py migrate +python manage.py createsuperuser diff --git a/backend/setup.py b/backend/setup.py new file mode 100644 index 0000000..d001bca --- /dev/null +++ b/backend/setup.py @@ -0,0 +1,26 @@ +from setuptools import setup, find_packages + +with open('README.md') as fp: + longdesc = fp.read() + +setup( + name='ausweis', + version='0.9.0', + author='OWBA', + description='Django app for digital membership cards', + long_description=longdesc, + long_description_content_type="text/markdown", + url='https://github.com/owba/ausweis', + license='MIT', + classifiers=[ + 'Programming Language :: Python :: 3', + 'License :: OSI Approved :: BSD License', + 'Environment :: Web Environment', + 'Framework :: Django', + 'Operating System :: OS Independent', + ], + python_requires='>=3.8', + packages=find_packages(), + scripts=['manage.py'], + install_requires=[], +) diff --git a/backend/templates/admin/base_site.html b/backend/templates/admin/base_site.html new file mode 100644 index 0000000..9e28f7f --- /dev/null +++ b/backend/templates/admin/base_site.html @@ -0,0 +1,5 @@ +{% extends "admin/base_site.html" %} +{% load static %} +{% block extrahead %} + <link rel="shortcut icon" href="{% static 'favicon.ico' %}" /> +{% endblock %} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100755 index 0000000..766abb6 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,32 @@ +version: '3' +services: + app: + container_name: ausweis + build: + context: ./backend + # dockerfile: . + pull_policy: build + ports: + - 127.0.0.1:8099:8099 + image: ausweis:latest + working_dir: /django_project + environment: + DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY} + ALLOWED_HOSTS: ${ALLOWED_HOSTS} + URL_SUBPATH: ${URL_SUBPATH:-} + DEBUG: ${DEBUG:-0} + volumes: + - volume-ausweis:/django_project/data + - /srv/http/de-owba-mitglied/data:/django_project/data/export:rw + - /srv/http/de-owba-mitglied/app_static:/django_project/data/static:rw + restart: unless-stopped + networks: + - network-ausweis + +volumes: + volume-ausweis: + name: ausweis + +networks: + network-ausweis: + name: ausweis \ No newline at end of file diff --git a/docs/card.png b/docs/card.png new file mode 100644 index 0000000000000000000000000000000000000000..16990d8f9c095d6bd37db1b658eb685d44eb5958 GIT binary patch literal 81241 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 {c*;@! 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 K&t;ucLK6TCOf}>H literal 0 HcmV?d00001 diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..13afa0a --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,68 @@ +# Webserver config + +There are two ways to host this app: + +- `nginx-split-path.conf`: backend and frontend are served at different URLs +- `nginx-same-path.conf`: backend and frontend use the same base URL + +Both examples use `/srv/http/my-domain/` as the base folder, make sure it exists. +The server will create files at these locations: + + +```sh +/srv/http/my-domain/ # base folder, make sure it exists +/srv/http/my-domain/backend_data/ # holds the encrypted json files +/srv/http/my-domain/backend_static/ # holds static js files (mostly django admin) +/srv/http/my-domain/frontend/ # place your frontend html here (e.g. content of example-html) +/srv/http/my-domain/root/ # root-level files ("/") (only split-path) +``` + + +## Split path + +Since both parts are served separately, you can host the server on two different machines (or two different subpaths). The frontend is a purely static server. You can use a CDN if you want. + +If you serve the backend on a subpath (not root "/"), you need to pass that subpath to the env file. E.g., `URL_SUBPATH=my/sub/path`. + +If you use two different servers, you have to transfer the encryted json files to the frontend server somehow (e.g., with rsync or a tiny REST API). Or use the integrated API `api/json/<org>/<uuid>` (disabled by default). Though the other way (pushing data from backend to frontend) is more favorable. That way you will not expose the backend server to the public. + + +## Same path + +With this config, both – frontend and backend – are served from the root of the domain ("/"). You can still serve them from two different servers, but its easy to guess the url and discover the other server. + +If you use two different servers, you will need to declare the exception explicitly (namely, `edit`, `upload`, `static`, and `api`). If the backend URLs change, you will need to update the config too. But in the given example, nginx will fallback to the backend server whever a file cannot be found. + +**Note:** you can not have files in your frontend which are named like any of the backend URLs. For example, if you create a static `upload` or `edit` folder in your frontend code, it would probably break the administration backend (precedence). + + +## Comparison + +Assuming we configured the split-path config to use `frontend="card"` and `backend="hidden-service"` the URLs would be: + + +| | Split path | Same path | +|--------|------------------------------|---------------| +|Frontend| /card/#org/id/pw | /#org/id/pw | +|Backend | /hidden-service/edit/ | /edit/ | +|Static | /hidden-service/static/ | /static/ | +|Data | /card/data/org/id | /data/org/id/ | +|API | /hidden-service/api/json/... | /api/json/... | +|Root | /other-service/ | – | + + +## Security considerations + +A dynamic server (like Django) is always a security risk. You should limit public access wherever possible. For example: + +- If you are the only person managing member cards, you can run the backend in a local-only environment and just sync the changes with rsync to a static frontend server. + +- If you run the backend as a public server, you can try to limit the access. For example, by allowing only known IP Adresses (again, only if there are few people managing the cards and/or the connection location is fixed, e.g., business network). + +- If your backend is public, at least do not use common URL paths. For example, `/admin/` is easy to guess and most crawlers will try these locations. + +- Both configs allow you to run the backend and frontend on separate servers. This separates the sensitive data (Django app with unencrypted raw data) from the publicly accessible data (encrypted json). + +- If you need to communicate between both servers, try to push the data from backend to frontend instead of the other way around. This way your frontend stays static and an attacker will not discover the backend server just by analyzing the web traffic. (attention: you may still expose it through Certificate Transparency Logs) + +- Needless to say, communication between servers must be authenticated. Or else someone can just create new member cards arbitrarily. diff --git a/frontend/example-html/data/org/d9498400-2640-442e-a092-6b4537a9b74d b/frontend/example-html/data/org/d9498400-2640-442e-a092-6b4537a9b74d new file mode 100644 index 0000000000000000000000000000000000000000..844cbebfbe10b39bac65d1ef145e9940a30a073a GIT binary patch literal 46789 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 literal 0 HcmV?d00001 diff --git a/frontend/example-html/img/bg.png b/frontend/example-html/img/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6074ccefa7fbf5904e6f2342542d5ee29074a8fa GIT binary patch literal 6748 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 SRxvOzFnGH9xvX<aXaWFxygar5 literal 0 HcmV?d00001 diff --git a/frontend/example-html/img/header.svg b/frontend/example-html/img/header.svg new file mode 100644 index 0000000..3831c91 --- /dev/null +++ b/frontend/example-html/img/header.svg @@ -0,0 +1,18 @@ +<svg viewBox="0 0 657.3 53.6" xmlns="http://www.w3.org/2000/svg"> +<path d="m3.8 53.1c-1 0-1.8-.2-2.6-.6-.8-.5-1.2-1.1-1.2-2v-47.5c0-.8.4-1.4 1.1-1.9.7-.4 1.5-.6 2.3-.6h25.3c.9 0 1.5.4 1.9 1.1s.6 1.5.6 2.2c0 .9-.2 1.7-.6 2.4s-1 1-1.8 1h-21v16.5h11.2c.8 0 1.4.3 1.8.9s.6 1.3.6 2.2c0 .7-.2 1.3-.6 2-.4.6-1 1-1.9 1h-11.3v20.8c0 .9-.4 1.5-1.2 1.9-.7.4-1.6.6-2.6.6z"/> +<path d="m30.2 53.1c-.7 0-1.4-.1-2.2-.4s-1.4-.7-1.9-1.1c-.5-.5-.7-1-.7-1.6 0-.1 0-.4.1-.6l14.4-46.8c.3-.9.9-1.5 1.8-1.9s1.9-.6 3-.6 2.1.2 3.1.6c.9.4 1.5 1.1 1.8 1.9l14.3 46.7c.1.3.1.5.1.6 0 .6-.3 1.1-.8 1.6s-1.1.9-1.9 1.2c-.7.3-1.5.4-2.2.4-.6 0-1.2-.1-1.6-.4-.5-.2-.8-.6-1-1.2l-3-10.2h-17.7l-2.9 10.2c-.1.6-.5 1-1 1.2s-1 .4-1.7.4zm7.3-18h14.4l-7.2-24.7z"/> +<path d="m73.1 53.1c-1 0-1.8-.2-2.4-.7s-.9-1.1-.9-1.7v-47.7c0-.8.4-1.4 1.1-1.9.7-.4 1.5-.6 2.3-.6h13.1c2.6 0 5 .3 7.2 1s4 1.9 5.3 3.7 2 4.4 2 7.7c0 3-.5 5.5-1.6 7.5s-2.6 3.4-4.5 4.2c1.5.6 2.8 1.3 3.9 2.3 1.1.9 2 2.2 2.6 3.7.6 1.6.9 3.6.9 6v1.4c0 3.7-.6 6.6-1.9 8.9-1.2 2.2-3 3.8-5.1 4.8-2.2 1-4.6 1.5-7.3 1.5h-14.7zm4.2-31.6h8.6c2.4 0 4.3-.6 5.4-1.9 1.2-1.2 1.8-3.1 1.8-5.5 0-1.6-.3-3-.9-4s-1.5-1.8-2.6-2.2c-1.1-.5-2.4-.7-3.9-.7h-8.5v14.3zm0 24.8h9c2.6 0 4.6-.7 6-2.1s2.1-3.7 2.1-6.8v-1.2c0-3.2-.7-5.4-2.1-6.7s-3.4-1.9-6-1.9h-9z"/> +<path d="m127.3 53.1c-.8 0-1.6-.2-2.3-.6s-1.1-1.1-1.1-1.9v-47.7c0-.9.4-1.5 1.2-1.9s1.7-.6 2.6-.6c1 0 1.8.2 2.6.6s1.2 1 1.2 1.9v43.4h18.7c.8 0 1.3.3 1.7 1s.6 1.5.6 2.3-.2 1.6-.6 2.3-1 1.1-1.7 1.1h-22.9z"/> +<path d="m159 53.1c-.7 0-1.4-.1-2.2-.4s-1.4-.7-1.9-1.1c-.5-.5-.7-1-.7-1.6 0-.1 0-.4.1-.6l14.3-46.7c.3-.9.9-1.5 1.8-1.9s1.9-.6 3-.6 2.1.2 3.1.6c.9.4 1.5 1.1 1.8 1.9l14.3 46.7c.1.3.1.5.1.6 0 .6-.3 1.1-.8 1.6s-1.1.9-1.9 1.2c-.7.3-1.5.4-2.2.4-.6 0-1.2-.1-1.6-.4-.5-.2-.8-.6-1-1.2l-3-10.2h-17.9l-2.9 10.2c-.1.6-.5 1-1 1.2-.2.1-.7.3-1.4.3zm7.3-18h14.4l-7.2-24.7z"/> +<path d="m201.9 53.1c-1 0-1.8-.2-2.4-.7s-.9-1.1-.9-1.7v-47.7c0-.8.4-1.4 1.1-1.9.7-.4 1.5-.6 2.3-.6h13c2.6 0 5 .3 7.2 1s4 1.9 5.3 3.7 2 4.4 2 7.7c0 3-.5 5.5-1.6 7.5s-2.6 3.4-4.5 4.2c1.5.6 2.8 1.3 3.9 2.3 1.1.9 2 2.2 2.6 3.7.6 1.6.9 3.6.9 6v1.4c0 3.7-.6 6.6-1.9 8.9-1.2 2.2-3 3.8-5.1 4.8-2.2 1-4.6 1.5-7.3 1.5h-14.6zm4.2-31.6h8.6c2.4 0 4.3-.6 5.4-1.9 1.2-1.2 1.8-3.1 1.8-5.5 0-1.6-.3-3-.9-4s-1.5-1.8-2.6-2.2c-1.1-.5-2.4-.7-3.9-.7h-8.5v14.3zm0 24.8h9c2.6 0 4.6-.7 6-2.1s2.1-3.7 2.1-6.8v-1.2c0-3.2-.7-5.4-2.1-6.7s-3.4-1.9-6-1.9h-9z"/> +<path d="m256.5 53.1c-1 0-1.8-.2-2.6-.6s-1.2-1.1-1.2-1.9v-46.4c0-1.4.4-2.4 1.2-3s1.7-.8 2.6-.8 1.7.1 2.4.4 1.3.7 1.9 1.3 1.2 1.5 1.8 2.6l10.1 19.1 10.2-19.1c.6-1.1 1.2-2 1.8-2.6s1.2-1.1 1.8-1.3c.7-.3 1.5-.4 2.4-.4 1 0 1.9.3 2.7.8.8.6 1.2 1.5 1.2 3v46.3c0 .8-.4 1.4-1.2 1.9s-1.7.6-2.6.6c-1 0-1.8-.2-2.6-.6s-1.2-1.1-1.2-1.9v-34.5l-9.6 17.9c-.4.6-.8 1.1-1.3 1.3-.5.3-1 .4-1.5.4-.4 0-.9-.1-1.4-.4-.5-.2-.9-.7-1.2-1.4l-9.6-18.3v35c0 .8-.4 1.4-1.2 1.9s-1.9.7-2.9.7z"/> +<path d="m303.1 53.1c-.7 0-1.4-.1-2.2-.4s-1.4-.7-1.9-1.1c-.5-.5-.7-1-.7-1.6 0-.1 0-.4.1-.6l14.3-46.7c.3-.9.9-1.5 1.8-1.9s1.9-.6 3-.6 2.1.2 3.1.6c.9.4 1.5 1.1 1.8 1.9l14.3 46.7c.1.3.1.5.1.6 0 .6-.3 1.1-.8 1.6s-1.1.9-1.9 1.2c-.7.3-1.5.4-2.2.4-.6 0-1.2-.1-1.6-.4-.5-.2-.8-.6-1-1.2l-3-10.2h-17.9l-2.9 10.2c-.1.6-.5 1-1 1.2-.2.1-.8.3-1.4.3zm7.3-18h14.4l-7.2-24.7z"/> +<path d="m346.4 53.1c-1 0-1.8-.2-2.6-.6s-1.2-1.1-1.2-1.9v-47.7c0-.9.4-1.5 1.2-1.9s1.7-.6 2.6-.6c1 0 1.8.2 2.6.6s1.2 1 1.2 1.9v21.9l17.6-23.3c.5-.7 1.2-1.1 2.2-1.1.6 0 1.3.2 2 .6s1.3.9 1.7 1.5c.5.6.7 1.2.7 1.9 0 .2 0 .4-.1.7s-.2.6-.4.8l-13.8 17.3 16.4 25c.3.4.4.9.4 1.4 0 .6-.2 1.2-.6 1.8s-1 1-1.7 1.4-1.4.5-2.1.5c-.5 0-1-.1-1.5-.3s-.9-.6-1.2-1.1l-14.7-22.2-4.7 5.9v15c0 .8-.4 1.4-1.2 1.9s-1.9.6-2.8.6z"/> +<path d="m385 53.1c-.8 0-1.6-.2-2.3-.6s-1.1-1.1-1.1-1.9v-47.6c0-.8.4-1.4 1.1-1.9s1.5-.6 2.3-.6h25.6c.9 0 1.6.4 1.9 1.1.4.7.6 1.5.6 2.2 0 .9-.2 1.7-.6 2.4s-1.1 1-1.9 1h-21.4v16.5h11.1c.8 0 1.4.3 1.9.9.4.6.6 1.3.6 2.2 0 .7-.2 1.3-.6 2-.4.6-1 1-1.9 1h-11.1v16.6h21.4c.8 0 1.4.3 1.9 1 .4.7.6 1.5.6 2.4 0 .8-.2 1.5-.6 2.2s-1 1.1-1.9 1.1z"/> +<path d="m447.5 53.3c-.6 0-1.2-.2-1.7-.6s-.9-1-1.3-1.6l-10.5-20.6h-7.2v20.1c0 .8-.4 1.4-1.2 1.9s-1.7.6-2.6.6c-1 0-1.8-.2-2.6-.6s-1.2-1.1-1.2-1.9v-47.7c0-.7.2-1.2.7-1.7s1.1-.7 1.9-.7h13.7c3 0 5.8.4 8.3 1.3s4.5 2.4 6 4.5 2.2 5.1 2.2 8.8c0 2.9-.4 5.3-1.3 7.2s-2.1 3.4-3.6 4.6c-1.5 1.1-3.2 2-5.1 2.5l10.1 18.9c.1.1.2.3.2.5s.1.4.1.5c0 .6-.2 1.2-.7 1.8s-1.1 1.1-1.8 1.5c-.9.5-1.6.7-2.4.7zm-20.7-29h8.6c2.7 0 4.8-.6 6.4-1.9s2.4-3.5 2.4-6.6-.8-5.3-2.4-6.6-3.8-1.9-6.4-1.9h-8.6z"/> +<path d="m486.6 53.6c-3.1 0-5.9-.5-8.3-1.4s-4.3-2-5.6-3.3-2-2.6-2-3.8c0-.6.2-1.2.5-1.8s.7-1.2 1.2-1.6c.5-.5 1-.7 1.6-.7.7 0 1.3.3 1.9.8.6.6 1.3 1.2 2.2 2s1.9 1.4 3.2 2 3 .9 5 .9c1.7 0 3.3-.3 4.6-.8 1.4-.6 2.4-1.4 3.2-2.5s1.2-2.6 1.2-4.3c0-1.8-.4-3.3-1.3-4.5-.8-1.2-2-2.2-3.4-3s-2.9-1.6-4.6-2.2c-1.6-.7-3.3-1.4-5-2.2s-3.2-1.7-4.6-2.8-2.5-2.4-3.3-4.1-1.3-3.7-1.3-6.2c0-2.6.5-4.8 1.5-6.6s2.3-3.2 3.9-4.2c1.6-1.1 3.4-1.8 5.4-2.3s3.9-.7 5.8-.7c1.2 0 2.5.1 4 .3s2.9.5 4.3.9 2.5.9 3.5 1.6c.9.7 1.4 1.5 1.4 2.4 0 .5-.1 1-.4 1.7s-.6 1.2-1 1.7c-.5.5-1 .7-1.8.7-.6 0-1.3-.2-2.1-.7s-1.8-.9-3-1.4-2.8-.7-4.9-.7c-1.7 0-3.3.2-4.6.7-1.4.5-2.4 1.2-3.2 2.1s-1.2 2.2-1.2 3.7.4 2.8 1.3 3.8c.8 1 2 1.8 3.3 2.5 1.4.7 2.9 1.4 4.6 2s3.3 1.4 5 2.2 3.2 1.9 4.6 3.1 2.5 2.7 3.4 4.6c.8 1.8 1.3 4.1 1.3 6.9 0 3.5-.7 6.3-2.1 8.6s-3.4 4-5.8 5.1c-2.4 1-5.2 1.5-8.4 1.5z"/> +<path d="m514 53.1c-1 0-1.8-.2-2.6-.6s-1.2-1-1.2-1.9v-47.7c0-.7.3-1.2.8-1.7.6-.5 1.3-.7 2.1-.7h14c2.9 0 5.6.5 8 1.5s4.3 2.7 5.7 5 2.1 5.4 2.1 9.3v.6c0 3.8-.7 6.9-2.2 9.3-1.4 2.3-3.4 4-5.8 5.1s-5.2 1.6-8.2 1.6h-8.9v17.8c0 .9-.4 1.5-1.2 1.9-.8.3-1.6.5-2.6.5zm3.8-26.4h8.9c2.7 0 4.8-.8 6.3-2.3s2.3-3.9 2.3-7.1v-.9c0-3.2-.8-5.5-2.3-7s-3.6-2.3-6.3-2.3h-8.9z"/> +<path d="m547.3 53.1c-.7 0-1.4-.1-2.2-.4s-1.4-.7-1.9-1.1c-.5-.5-.7-1-.7-1.6 0-.1 0-.4.1-.6l14.4-46.8c.3-.9.9-1.5 1.8-1.9s1.9-.6 3-.6 2.1.2 3.1.6c.9.4 1.5 1.1 1.8 1.9l14.3 46.6c.1.3.1.5.1.6 0 .6-.3 1.1-.8 1.6s-1.1.9-1.9 1.2c-.7.3-1.5.4-2.2.4-.6 0-1.2-.1-1.6-.4-.5-.2-.8-.6-1-1.2l-3-10.2h-17.9l-2.7 10.3c-.1.6-.5 1-1 1.2s-1 .4-1.7.4zm7.3-18h14.4l-7.2-24.7z"/> +<path d="m602.2 53.5c-2.9 0-5.5-.5-8-1.6-2.4-1.1-4.4-2.8-5.8-5.1-1.4-2.4-2.2-5.5-2.2-9.4v-21c0-3.9.7-7 2.2-9.4 1.4-2.4 3.4-4.1 5.8-5.1 2.4-1.1 5.1-1.6 8-1.6 3.3 0 6.2.6 8.6 1.7s4.3 2.7 5.7 4.6 2.1 4.2 2.1 6.7c0 1.6-.3 2.7-.9 3.2s-1.6.8-2.9.8c-1.2 0-2.1-.2-2.7-.6-.7-.4-1-1-1.1-1.9 0-.6-.2-1.4-.4-2.2-.2-.9-.6-1.7-1.1-2.6-.5-.7-1.4-1.4-2.5-2s-2.6-.8-4.5-.8c-2.8 0-4.9.8-6.4 2.3s-2.2 3.9-2.2 7v21c0 3.2.8 5.5 2.3 7s3.7 2.3 6.6 2.3c1.8 0 3.3-.3 4.4-.8 1.1-.6 1.9-1.2 2.4-2.1.5-.8.9-1.7 1.1-2.7.2-.9.3-1.8.4-2.6 0-.9.4-1.6 1.1-1.9.7-.4 1.6-.6 2.6-.6 1.3 0 2.3.3 3 .8.6.5.9 1.6.9 3.2 0 2.6-.7 4.9-2.1 6.9s-3.3 3.6-5.7 4.8c-2.5 1.1-5.4 1.7-8.7 1.7z"/> +<path d="m629.1 53.1c-.8 0-1.6-.2-2.3-.6s-1.1-1.1-1.1-1.9v-47.6c0-.8.4-1.4 1.1-1.9s1.5-.6 2.3-.6h25.6c.9 0 1.6.4 1.9 1.1.4.7.6 1.5.6 2.2 0 .9-.2 1.7-.6 2.4s-1.1 1-1.9 1h-21.4v16.5h11.1c.8 0 1.4.3 1.9.9.4.6.6 1.3.6 2.2 0 .7-.2 1.3-.6 2-.4.6-1 1-1.9 1h-11.1v16.6h21.4c.8 0 1.4.3 1.9 1 .4.7.6 1.5.6 2.4 0 .8-.2 1.5-.6 2.2s-1 1.1-1.9 1.1z"/> +</svg> \ No newline at end of file diff --git a/frontend/example-html/img/logo.svg b/frontend/example-html/img/logo.svg new file mode 100644 index 0000000..b66bcd6 --- /dev/null +++ b/frontend/example-html/img/logo.svg @@ -0,0 +1,5 @@ +<svg viewBox="0 0 547 546.8" xmlns="http://www.w3.org/2000/svg"> +<path fill="#0e9a48" d="m208.1 485.8v-65.2c2.3-.9 4.6-2 6.8-3.3 31.1-18.3 34.4-70.4 7.3-116.3s-74.2-68.2-105.3-49.9-34.4 70.4-7.3 116.3c4.4 7.4 9.3 14.2 14.5 20.3v48.4l-67-38.3v-240.1l-23.5-15.5c-21.4 39-33.6 83.7-33.6 131.3 0 147.9 117.4 268.3 264.1 273.2v-28.2z"/> +<path fill="#cb2026" d="m130.3 104.2 41 24.3c-.8 6.7-.8 14.1-.8 16.7.4 36.1 49.2 63.5 102.5 63s91.2-32.8 90.9-64.6c-.3-36.1-35-64.3-88.3-65.9-18-.5-35.4 3.1-43.3 4.6l-29.9-19.1 71-40.5 209.4 121.7 24-13.2c-23.1-38-55.8-70.9-97.1-94.6-128-73.9-290.9-32.3-368.3 92.5l23.8 15z"/> +<path fill="#35469d" d="m490 236.5-44.5 23.3c-1.6-.3-11.5-9.5-13.7-10.8-31.5-17.6-77.9 5.7-103.9 52.2-25.9 46.5-23.7 99.8 7.8 117.3 31.5 17.6 78.5-3.5 104.4-50 4.2-7.5 9.8-24.9 12.4-32.6l37.9-21.9-.2 83.3-208.9 122 .1 27.5c44.4-1.2 89.2-13.4 130.3-37.4 127.6-74.8 172.3-236.9 102.3-366l-24 13.2z"/> +</svg> \ No newline at end of file diff --git a/frontend/example-html/img/no-img.svg b/frontend/example-html/img/no-img.svg new file mode 100644 index 0000000..6d5abf4 --- /dev/null +++ b/frontend/example-html/img/no-img.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 70 90" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h70v90h-70z" fill="#ddd"/><g fill="#888"><path d="m66.2 73.1c0 3.6-1 6.6-3 9.1-2.1 2.5-4.5 3.8-7.3 3.8h-41.8c-2.9 0-5.4-1.2-7.3-3.8s-3-5.5-3-9.1c0-2.8.2-5.4.4-7.9s.8-4.9 1.5-7.4 1.7-4.6 2.9-6.4 2.7-3.2 4.6-4.4 4.1-1.7 6.6-1.7c4.3 4.2 9.4 6.2 15.3 6.2s11-2.1 15.3-6.2c2.5 0 4.6.5 6.6 1.7s3.4 2.6 4.6 4.4 2.1 3.9 2.9 6.4c.7 2.5 1.2 5 1.5 7.4s.2 5.1.2 7.9z"/><circle cx="35.1" cy="29.9" r="18.7"/></g></svg> \ No newline at end of file diff --git a/frontend/example-html/index.html b/frontend/example-html/index.html new file mode 100644 index 0000000..c8d0837 --- /dev/null +++ b/frontend/example-html/index.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html lang="de"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0" /> + <title>Member card + + + + + +
+
Loading ...
+ +
+ + + \ No newline at end of file diff --git a/frontend/example-html/manifest.json b/frontend/example-html/manifest.json new file mode 100644 index 0000000..4696c18 --- /dev/null +++ b/frontend/example-html/manifest.json @@ -0,0 +1,4 @@ +{ + "name": "Ausweis", + "display": "fullscreen" +} diff --git a/frontend/example-html/script.js b/frontend/example-html/script.js new file mode 100644 index 0000000..aeba01d --- /dev/null +++ b/frontend/example-html/script.js @@ -0,0 +1,124 @@ +async function decrypt(ciphertext, password) { + const pwUtf8 = new TextEncoder().encode(password); + const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8); + const ctUtf8 = new Uint8Array(ciphertext); + const iv = ctUtf8.slice(0, 12); + const alg = { name: 'AES-GCM', iv: iv, additionalData: iv }; + const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['decrypt']); + try { + const buf = await crypto.subtle.decrypt(alg, key, ctUtf8.slice(12)); + return new TextDecoder().decode(buf); + } catch (e) { + throw new Error('Decrypt failed') + } +} + +function setError(text) { + document.getElementById('msg').innerText = text; +} + +function setFields(elem, fields) { + for (const [k, v] of Object.entries(fields)) { + for (const el of elem.querySelectorAll('#' + k)) { + el.innerText = v; + } + } +} + +async function apply(data, password) { + const json = JSON.parse(await decrypt(data, password)); + const now = new Date().getTime(); + const vA = new Date(json['valid_since'] + 'T00:00:00'); + if (vA.getTime() > now) { + return setError('Member card not valid yet'); + } + const vZ = new Date(json['valid_until'] + 'T23:59:59'); + if (vZ.getTime() < now) { + return setError('Member card expired'); + } + const pass = document.getElementById('pass'); + const imgElem = pass.querySelector('#img'); + if (imgElem) { + if (json['img']) { + imgElem.src = 'data:image;base64,' + json['img']; + } else { + imgElem.src = 'img/no-img.svg'; + } + } + setFields(pass, { + name: json['name'], + member_id: json['id'], + org_name: json['org'], + valid: 'on ' + new Date().toLocaleDateString('en'), + }); + setFields(pass, json['data']); // may overwrite previous fields + + const title = 'Member card for ' + json['name'] + ' – ' + json['org']; + document.head.querySelector('title').innerText = title; + document.getElementById('msg').classList.add('hidden'); + pass.classList.remove('hidden'); +} + +async function onLoad() { + // reset previous download + document.getElementById('pass').classList.add('hidden'); + const msg = document.getElementById('msg'); + msg.innerText = msg.dataset.load; + msg.classList.remove('hidden'); + // download new data + const [org, uuid, secret] = location.hash.slice(1).split('/'); + if (!org || !uuid || !secret) { + return setError('Invalid URL'); + } + const res = await fetch('./data/' + org + '/' + uuid); + if (!res.ok) { + return setError('Error loading\n\n' + res.status + ' ' + res.statusText); + } + try { + const data = await res.arrayBuffer(); + await apply(data, secret); + } catch (e) { + setError(e); + } +} + +// load and parse data +window.onload = onLoad; +// force reload if hash params change +window.addEventListener('hashchange', onLoad, true); + +// ------------- +// scale-up card +// ------------- + +function onResize() { + const card = document.getElementById('card'); + const sw = window.innerWidth / card.offsetWidth; + const sh = window.innerHeight / card.offsetHeight; + card.style.scale = Math.min(Math.min(sw, sh) * 0.97, 2); +} + +window.addEventListener('resize', onResize, true); +window.addEventListener('orientationchange', onResize, true); +screen?.orientation?.addEventListener('change', onResize, true); + +// ----------------- +// check for updates +// ----------------- + +lastUpdate = new Date().getTime(); + +function needsUpdate() { + // reload page if older than 15min + const now = new Date().getTime(); + if (now - lastUpdate > 900_000) { + lastUpdate = now; + onLoad(); + } +} +// setInterval(needsUpdate, 1000); +window.addEventListener('focus', needsUpdate, true); +window.addEventListener('pageshow', needsUpdate, true); +window.addEventListener('visibilitychange', function () { + !document.hidden && document.visibilityState !== 'hidden' && needsUpdate(); +}, true); diff --git a/frontend/example-html/style.css b/frontend/example-html/style.css new file mode 100644 index 0000000..66a7771 --- /dev/null +++ b/frontend/example-html/style.css @@ -0,0 +1,125 @@ +:root { + --w: 85.6mm; + --h: 54mm; + --r: 3.18mm; + --iw: 2.5cm; + --ih: 3.2cm; + --ratio: 2.5 / 3.2; +} + +body { + background: #666; + font-family: sans-serif; +} + +#msg { + position: absolute; + top: 50%; + transform: translateY(-50%); + text-align: center; + width: 100%; +} + +#card { + position: absolute; + background: #fff; + width: var(--w); + height: var(--h); + top: calc(50% - var(--h)/2); + left: calc(50% - var(--w)/2); + border-radius: var(--r); + box-shadow: 0 0 4px; +} + +#pass { + display: flex; + flex-direction: column; + justify-content: space-between; + height: 100%; + border-radius: var(--r); + font-size: 3mm; +} + +header { + padding: 1mm; + border-radius: var(--r) var(--r) 0 0; + max-height: 6mm; +} + +footer { + padding: 1mm 3mm; + border-radius: 0 0 var(--r) var(--r); +} + +main { + display: flex; + font-size: 1.2em; +} + +main>div { + display: flex; + flex-direction: column; + justify-content: center; + gap: 2mm; + text-shadow: 1px 0 #fff, 0 1px #fff, -1px 0 #fff, 0 -1px #fff, + 1px 1px #fff, -1px -1px #fff, 1px -1px #fff, -1px 1px #fff; +} +main>div>div { + display: flex; + gap: 1mm; +} + +#img { + max-width: var(--iw); + max-height: var(--ih); + object-fit: cover; + border-radius: 1mm; + margin: 0 2mm; + aspect-ratio: var(--ratio); +} + +.hidden { + display: none !important; +} + +.spin { + position: absolute; + bottom: 1.2mm; + right: 1.5mm; + width: 2mm; + height: 2mm; + border: .5mm solid transparent; + border-top-color: #fff; + border-bottom-color: #fff; + border-radius: 50%; + animation: spin 2s steps(5) infinite; +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +@media print { + body { + background: unset; + } + #card { + top: unset; + left: unset; + scale: 1 !important; + } +} + +/* Customize appearance */ + +#pass { + background: url('img/bg.png') 25mm 6mm/60mm no-repeat; +} +footer { + color: #fff; + background: #0E9A48; +} \ No newline at end of file diff --git a/frontend/js-encryption/decrypt.js b/frontend/js-encryption/decrypt.js new file mode 100644 index 0000000..0ccdd9a --- /dev/null +++ b/frontend/js-encryption/decrypt.js @@ -0,0 +1,13 @@ +async function decrypt(ciphertext, password) { + const pwUtf8 = new TextEncoder().encode(password); + const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8); + const ctUtf8 = new Uint8Array(Array.from(atob(ciphertext)).map(x => x.charCodeAt(0))); + const alg = { name: 'AES-GCM', iv: ctUtf8.slice(0,12) }; + const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['decrypt']); + try { + const buf = await crypto.subtle.decrypt(alg, key, ctUtf8.slice(12)); + return new TextDecoder().decode(buf); + } catch (e) { + throw new Error('Decrypt failed') + } +} diff --git a/frontend/js-encryption/encrypt.js b/frontend/js-encryption/encrypt.js new file mode 100644 index 0000000..d28574f --- /dev/null +++ b/frontend/js-encryption/encrypt.js @@ -0,0 +1,11 @@ +async function encrypt(plaintext, password) { + const pwUtf8 = new TextEncoder().encode(password); + const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8); + const iv = crypto.getRandomValues(new Uint8Array(12)); + const alg = { name: 'AES-GCM', iv: iv }; + const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['encrypt']); + const ptUint8 = new TextEncoder().encode(plaintext); + const buf = await crypto.subtle.encrypt(alg, key, ptUint8); + const ctStr = Array.from(new Uint8Array(buf)).map(b => String.fromCharCode(b)).join(''); + return btoa(String.fromCharCode(...iv) + ctStr); +} diff --git a/frontend/nginx-same-path.conf b/frontend/nginx-same-path.conf new file mode 100644 index 0000000..6d9b690 --- /dev/null +++ b/frontend/nginx-same-path.conf @@ -0,0 +1,49 @@ +upstream ausweis { server 127.0.0.1:8099; } +server { + server_name MYDOMAIN; + listen 80; + listen [::]:80; + return 301 https://$host$request_uri; +} +server { + server_name MYDOMAIN; + listen 443 ssl http2; + listen [::]:443 ssl http2; + access_log /var/log/nginx/ausweis.access.log; + error_log /var/log/nginx/ausweis.error.log warn; + + # make sure everything under / is in a sub-folder + root /srv/http/my-domain/frontend/; + + add_header Permissions-Policy "interest-cohort=()"; + add_header Cache-Control must-revalidate; + expires 300; + + location /data/ { + alias /srv/http/my-domain/backend_data/; + try_files $uri =404; # disable index, prevent attacks on finding a valid slug + expires 30; + } + + location /static/ { + alias /srv/http/my-domain/backend_static/; + try_files $uri =404; # disable index + access_log off; + } + + location / { + try_files $uri $uri/ @app_server; + } + + location @app_server { + proxy_pass http://ausweis; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_redirect off; + proxy_buffering off; + } + + ssl_certificate fullchain.pem; # managed by Certbot + ssl_certificate_key privkey.pem; # managed by Certbot +} \ No newline at end of file diff --git a/frontend/nginx-split-path.conf b/frontend/nginx-split-path.conf new file mode 100644 index 0000000..44de8a2 --- /dev/null +++ b/frontend/nginx-split-path.conf @@ -0,0 +1,50 @@ +upstream ausweis { server 127.0.0.1:8099; } +server { + server_name MYDOMAIN; + listen 80; + listen [::]:80; + return 301 https://$host$request_uri; +} +server { + server_name MYDOMAIN; + listen 443 ssl http2; + listen [::]:443 ssl http2; + access_log /var/log/nginx/ausweis.access.log; + error_log /var/log/nginx/ausweis.error.log warn; + + # make sure everything under / is in a sub-folder + root /srv/http/my-domain/root/; + + add_header Permissions-Policy "interest-cohort=()"; + add_header Cache-Control must-revalidate; + expires 300; + + location /frontend/data/ { + alias /srv/http/my-domain/backend_data/; + try_files $uri =404; # disable index, prevent attacks on finding a valid slug + expires 30; + } + + location /frontend { + alias /srv/http/my-domain/frontend/; + access_log off; + } + + location /backend/static/ { + alias /srv/http/my-domain/backend_static/; + try_files $uri =404; # disable index + access_log off; + } + + location /backend/ { + proxy_pass http://ausweis; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_redirect off; + proxy_buffering off; + } + + ssl_certificate fullchain.pem; # managed by Certbot + ssl_certificate_key privkey.pem; # managed by Certbot +}