diff options
| author | crupest <crupest@outlook.com> | 2024-11-04 22:42:15 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2024-11-04 22:42:15 +0800 | 
| commit | d9b14f2ab051ad583e820975f2fe4f8bea19245f (patch) | |
| tree | f9e97dd95efc0ed4aed14938202e1d4a85445c2f | |
| parent | 3acef776a08a7314bc5bd3888ea3068dcc83837c (diff) | |
| download | crupest-d9b14f2ab051ad583e820975f2fe4f8bea19245f.tar.gz crupest-d9b14f2ab051ad583e820975f2fe4f8bea19245f.tar.bz2 crupest-d9b14f2ab051ad583e820975f2fe4f8bea19245f.zip | |
feat(service): add 2fauth.
| -rw-r--r-- | crupest-words.txt | 1 | ||||
| -rw-r--r-- | template/docker-compose.yaml.template | 23 | ||||
| -rw-r--r-- | template/nginx/server.json | 5 | ||||
| -rw-r--r-- | tools/aio/modules/config.py | 17 | 
4 files changed, 46 insertions, 0 deletions
| diff --git a/crupest-words.txt b/crupest-words.txt index fef2115..f5dd7dc 100644 --- a/crupest-words.txt +++ b/crupest-words.txt @@ -3,6 +3,7 @@ crupest  # software  forgejo  sypht +2fauth  # secret  vnext diff --git a/template/docker-compose.yaml.template b/template/docker-compose.yaml.template index f64543b..d2ddfbd 100644 --- a/template/docker-compose.yaml.template +++ b/template/docker-compose.yaml.template @@ -191,6 +191,29 @@ services:        - ROUNDCUBEMAIL_SMTP_PORT=465        - ROUNDCUBEMAIL_DB_TYPE=sqlite +  2fauth: +    image: 2fauth/2fauth +    container_name: 2fauth +    volumes: +      - ./data/2fauth/work-dir:/2fauth +      - ./data/2fauth/database:/srv/database +    environment: +      - APP_NAME=2FAuth-crupest +      - APP_TIMEZONE=UTC +      - SITE_OWNER=crupest@crupest.life +      - APP_KEY=${CRUPEST_2FAUTH_APP_KEY} +      - APP_URL=https://2fa.${CRUPEST_DOMAIN} +      - DB_DATABASE="/srv/database/database.sqlite" +      - MAIL_MAILER=smtp +      - MAIL_HOST=smtp.crupest.life +      - MAIL_PORT=465 +      - MAIL_USERNAME=${CRUPEST_2FAUTH_MAIL_USERNAME} +      - MAIL_PASSWORD=${CRUPEST_2FAUTH_MAIL_PASSWORD} +      - MAIL_ENCRYPTION=ssl +      - MAIL_FROM_NAME=2FAuth-crupest +      - MAIL_FROM_ADDRESS=${CRUPEST_2FAUTH_MAIL_USERNAME} +      - TRUSTED_PROXIES=* +  volumes:    blog-public:    debian-dev-home: diff --git a/template/nginx/server.json b/template/nginx/server.json index b2655e2..5edf168 100644 --- a/template/nginx/server.json +++ b/template/nginx/server.json @@ -22,6 +22,11 @@              "upstream": "roundcubemail:80"          },          { +            "type": "reverse-proxy", +            "subdomain": "2fa", +            "upstream": "2fauth:8000" +        }, +        {              "type": "static-file",              "subdomain": "blog",              "root": "/srv/blog" diff --git a/tools/aio/modules/config.py b/tools/aio/modules/config.py index 962e418..d6e7d87 100644 --- a/tools/aio/modules/config.py +++ b/tools/aio/modules/config.py @@ -1,12 +1,23 @@  import os  import typing  import uuid +import random +import string  from rich.prompt import Prompt  from .path import config_file_path  def generate_uuid():      return str(uuid.uuid4()) +# generate random characters of digits and alphabets +def generate_random_string(length: int): +    characters = string.ascii_letters + string.digits +    random_string = ''.join(random.choice(characters) for _ in range(n)) +    return random_string + +def generate_random_string_32(): +    return generate_random_string(32) +  class ConfigVar:      def __init__(self, name: str, description: str, default_value_generator: typing.Callable[[], str] | str, /, default_value_for_ask=str | None):          """Create a config var. @@ -59,6 +70,12 @@ config_var_list: list = [                "Forgejo SMTP user.", "Please input your Forgejo SMTP user."),      ConfigVar("CRUPEST_FORGEJO_MAILER_PASSWD",                "Forgejo SMTP password.", "Please input your Forgejo SMTP password."), +    ConfigVar("CRUPEST_2FAUTH_APP_KEY", +              "2FAuth App Key.", generate_random_string_32), +    ConfigVar("CRUPEST_2FAUTH_MAIL_USERNAME", +              "2FAuth SMTP user.", "Please input your 2FAuth SMTP user."), +    ConfigVar("CRUPEST_2FAUTH_MAIL_PASSWORD", +              "2FAuth SMTP password.", "Please input your 2FAuth SMTP password."),  ]  config_var_name_set = set([config_var.name for config_var in config_var_list]) | 
