Password Compromise Monitoring Tool
Go to file
leo 11de8de558
All checks were successful
continuous-integration/drone/push Build is passing
go: add local breach data schema
2023-05-26 01:59:09 +02:00
app go: fix port default,flag handling 2023-05-23 16:37:33 +02:00
assets add user creation 2023-05-22 06:47:33 +02:00
config feat: add initial admin user creation 2023-05-21 18:50:41 +02:00
ent feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
handlers add user creation 2023-05-22 06:47:33 +02:00
modules go: add local breach data schema 2023-05-26 01:59:09 +02:00
slogging feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
templates add user creation 2023-05-22 06:47:33 +02:00
.air.toml air: update config [skip ci] 2023-05-06 13:49:23 +02:00
.dockerignore ci,just,pre-commit: add Containerfile 2023-05-20 18:05:26 +02:00
.drone.yml feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
.editorconfig update .editorconfig [skip ci] 2023-04-12 23:14:21 +02:00
.envrc nix: add devenv 2023-05-05 19:43:28 +02:00
.gitattributes go: redo asset handling 2023-05-08 00:13:33 +02:00
.gitignore css: stage the tailwind-built file 2023-05-16 12:13:49 +02:00
.golangci.yml add .golangci.yml [skip ci] 2023-04-19 02:40:08 +02:00
.hadolint.yaml feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
.pre-commit-config.yaml just,pre-commit: fix typos [skip ci] 2023-05-21 18:54:28 +02:00
bs.js add user listing 2023-05-22 03:22:58 +02:00
Containerfile feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
devenv.lock nix: add devenv 2023-05-05 19:43:28 +02:00
devenv.nix feat: bump configuration schema to 0.0.1-rc.2 2023-05-21 12:44:18 +02:00
devenv.yaml nix: add devenv 2023-05-05 19:43:28 +02:00
Dockerfile ci,just,pre-commit: add Containerfile 2023-05-20 18:05:26 +02:00
embed.go feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
error.go feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
exampleConfig.dhall feat: bump configuration schema to 0.0.1-rc.2 2023-05-21 12:44:18 +02:00
gen.go feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
go.mod go: add local breach data schema 2023-05-26 01:59:09 +02:00
go.sum go: add local breach data schema 2023-05-26 01:59:09 +02:00
justfile just,pre-commit: fix typos [skip ci] 2023-05-21 18:54:28 +02:00
LICENSE initial commit 2023-01-30 20:19:53 +01:00
main.go feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
package-lock.json add bulk changes 2023-04-13 00:07:08 +02:00
package.json go: redo asset handling 2023-05-08 00:13:33 +02:00
README.md readme: fixes and corrections [skip ci] 2023-05-23 14:03:02 +02:00
run_test.go feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
run.go go: fix port default,flag handling 2023-05-23 16:37:33 +02:00
svgo.config.js feat: add license headers (+spdx id) 2023-05-20 20:15:57 +02:00
tailwind.config.js add user listing 2023-05-22 03:22:58 +02:00

pcmt

Password Compromise Monitoring Tool

pre-commit Build Status Go Report Card Go Documentation

🚧 note: this project is being developed as a part of my thesis and is currently a work in progress. 🚧

pcmt Gopher logo
pcmt Gopher logo based on the Egon Elbre's awesome Gopher designs.

How to try this out

with podman and just installed, run the following:

# build the image locally using kaniko.
just kaniko

# start postgres.
just dbstart

# in another terminal, run the application.
# LiveMode=False disables loading assets and templates from the filesystem and
# instead uses the embedded resources.
podman run --rm -it -e PCMT_DBTYPE=postgres \
    -e PCMT_CONNSTRING="host=127.0.0.1 port=5432 sslmode=disable dbname=postgres password=postgres"
    -e PCMT_LIVE=False docker.io/immawanderer/pcmt:testbuild \
    -config /etc/pcmt/config.dhall

while the above runs fine, running in pods is better and more close to a production setting (assuming rootless Podman setup):

# create a pod 🦭.
podman pod create --userns=keep-id -p3005:3000 --name pcmt

# if you have the db from the previous example still running, terminate it by
# pressing ^C or running the following:
just dbstop

# run a db in the pod.
podman run --pod pcmt --replace -d --name "pcmt-pg" --rm \
    -e POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256 --auth-local=scram-sha-256" \
    -e POSTGRES_PASSWORD=postgres -v $PWD/tmp/db:/var/lib/postgresql/data \
    docker.io/library/postgres:15.2-alpine3.17

# run the application in the pod (assuming that you have built it as in the
# previous example). do note that we're connecting to the db using its
# container name, while localhost would also work. inside the pod, every
# container is reachable on localhost.
podman run --pod pcmt --replace --name pcmt-og -d --rm \
    -e PCMT_LIVE=False \
    -e PCMT_DBTYPE="postgres" \
    -e PCMT_CONNSTRING="host=pcmt-pg port=5432 sslmode=disable user=postgres dbname=postgres password=postgres" \
    -v $PWD/config.dhall:/config.dhall:ro \
    docker.io/immawanderer/pcmt:testbuild -config /config.dhall

# also, if we try to connect to the db from the host we get an error (unless
# there is another database running on localhost already, such as the one from
# the previous example).

curl localhost:5432
--> curl: (7) Failed to connect to localhost port 5432 after 0 ms: Couldn't connect to server

# that is because the database port has not been exposed from the pod (recall
# the pod creation command).

Custom config

Make sure to check out the Dhall configuration schema to see what's possible, or have a look at the example config.

If you're new to Dhall, its documentation page is a good resource to start at.

LICENSE

AGPL-3.0-only (see LICENSE for details).