Compare commits

...

2 commits

Author SHA1 Message Date
5a550e4594
document configuration variables in README.md
All checks were successful
Build Container / Build Container (push) Successful in 1m32s
2026-05-15 08:44:28 +02:00
f72f830b36
api: configure ccujack connection via established config mechanism 2026-05-15 08:36:51 +02:00
4 changed files with 41 additions and 3 deletions

View file

@ -2,3 +2,4 @@ DOORIS_OPENID_ISSUER=https://id.hamburg.ccc.de/realms/test/
DOORIS_OPENID_CLIENT_ID=dooris DOORIS_OPENID_CLIENT_ID=dooris
DOORIS_OPENID_CLIENT_SECRET=dp9HhnvUhAtKm3pRnxfGA7q8Nwrd1td8 DOORIS_OPENID_CLIENT_SECRET=dp9HhnvUhAtKm3pRnxfGA7q8Nwrd1td8
DOORIS_BASE_URL=http://localhost:8000 DOORIS_BASE_URL=http://localhost:8000
DOORIS_CCUJACK_USER=dooris

View file

@ -10,6 +10,25 @@ Project structure:
└── app # Web UI └── app # Web UI
``` ```
## Configuration
The final application can be configured either via CLI arguments or via environment variables.
If both are given, the CLI flag takes precedence.
THe following table lists all available configuration parameters:
| CLI Flag | Environment Variable | Required? | Default Value |
| -------- | -------------------- | :-------: | ------------- |
| `--openid-issuer` | `DOORIS_OPENID_ISSUER` | Yes | *None* |
| `--openid-scope` | `DOORIS_OPENID_SCOPE` | No | `openid profile` |
| `--openid-client-id` | `DOORIS_OPENID_CLIENT_ID` | Yes | *None* |
| `--openid-client-secret` | `DOORIS_OPENID_CLIENT_SECRET` | Yes | *None* |
| `--base-url` | `DOORIS_BASE_URL` | Yes | *None* |
| `--serve-static` | `DOORIS_SERVE_STATIC` | No | *None* |
| `--ccujack-url` | `DOORIS_CCUJACK_URL` | No | `https://hmdooris-ccu.ccchh.net:2122` |
| `--ccujack-user` | `DOORIS_CCUJACK_USER` | Yes | *None* |
| `--ccujack-password` | `DOORIS_CCUJACK_PASSWORD` | Yes | *None* |
## API Development ## API Development
Most things should automatically be set up with the included [direnv script](./.envrc.dist) but if you don't use that, take the following steps: Most things should automatically be set up with the included [direnv script](./.envrc.dist) but if you don't use that, take the following steps:

View file

@ -19,7 +19,7 @@ def main():
) )
argp.add_argument( argp.add_argument(
"--openid-scope", "--openid-scope",
default=os.environ.get("DOORIS_OPENID_SCOPE", "openid profile ccchh-roles"), default=os.environ.get("DOORIS_OPENID_SCOPE", "openid profile"),
help="The Keycloak OpenID isser to use for authentication", help="The Keycloak OpenID isser to use for authentication",
) )
argp.add_argument( argp.add_argument(
@ -46,6 +46,24 @@ def main():
default=os.environ.get("DOORIS_SERVE_STATIC", None), default=os.environ.get("DOORIS_SERVE_STATIC", None),
help="In addition to the API functionality, serve static files from this path", help="In addition to the API functionality, serve static files from this path",
) )
argp.add_argument(
"--ccujack-url",
required=False,
default=os.environ.get("DOORIS_CCUJACK_URL", "https://hmdooris-ccu.ccchh.net:2122"),
help="The URL under which a CCUJACK instance is hosted that actually operates the locks",
)
argp.add_argument(
"--ccujack-user",
required="DOORIS_CCUJACK_USER" not in os.environ,
default=os.environ.get("DOORIS_CCUJACK_USER", None),
help="The username used to authenticate against the CCUJACK",
)
argp.add_argument(
"--ccujack-password",
required="DOORIS_CCUJACK_PASSWORD" not in os.environ,
default=os.environ.get("DOORIS_CCUJACK_PASSWORD", None),
help="The password used to authenticate against the CCUJACK"
)
args = argp.parse_args() args = argp.parse_args()
app_config.set(args) app_config.set(args)

View file

@ -37,8 +37,8 @@ async def lifespan(app: FastAPI):
) )
app.extra["ccujack"] = CCUJackClient( app.extra["ccujack"] = CCUJackClient(
"https://hmdooris-ccu.ccchh.net:2122", base_uri=app_cfg.ccujack_url,
auth=BasicAuth("dooris", os.environ["HMDOORIS_PW"]), auth=BasicAuth(app_cfg.ccujack_user, app_cfg.ccujack_password)
) )
await app.extra["ccujack"].find_locks() await app.extra["ccujack"].find_locks()