diff --git a/.dockerignore b/.dockerignore index c7e699f..5dfcc42 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,3 @@ .git -_postgres_data \ No newline at end of file +_postgres_data +_docker_mnt \ No newline at end of file diff --git a/.gitignore b/.gitignore index d261bde..a8369ee 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ # Dev Postgres _postgres_data +_docker_mnt # ---> Go # Binaries for programs and plugins diff --git a/backend/internal/webhookeverything/main.go b/backend/internal/webhookeverything/main.go index a113b66..c0661b2 100644 --- a/backend/internal/webhookeverything/main.go +++ b/backend/internal/webhookeverything/main.go @@ -30,6 +30,8 @@ func WebhookEverythingRoutes(db *gorm.DB, telegramEnv *telegrampackage.Env, host // Telegram handlers env.TelegramEnv.AddTelegramHandlerFunc(env.registerWebhook) + env.TelegramEnv.AddTelegramHandlerFunc(env.displayHelp) + env.TelegramEnv.AddTelegramHandlerFunc(env.showRoutes) return r } diff --git a/backend/internal/webhookeverything/routegencontrollertelegram.go b/backend/internal/webhookeverything/routegencontrollertelegram.go index 16a492d..7a7cf90 100644 --- a/backend/internal/webhookeverything/routegencontrollertelegram.go +++ b/backend/internal/webhookeverything/routegencontrollertelegram.go @@ -30,6 +30,34 @@ func (env *Env) registerWebhook(shortCode string, text string) (bool, *string) { return false, nil } +func (env *Env) displayHelp(shortCode string, text string) (bool, *string) { + commandSplitted := telegrampackage.ParseTelegramBotCommand(text) + if len(commandSplitted) > 0 && commandSplitted[0] == "/help" { + responseText := "/register -> Register for a chat ID\n/register-webhook -> Register for a web hook\n/show -> Show existing webhooks" + return true, &responseText + } + return false, nil +} + +func (env *Env) showRoutes(shortCode string, text string) (bool, *string) { + commandSplitted := telegrampackage.ParseTelegramBotCommand(text) + if len(commandSplitted) > 0 && commandSplitted[0] == "/show" { + var results []WebhookRoute + env.DB.Where(&WebhookRoute{WebhookID: shortCode}).Find(&results) + responseText := "The following webhook URLs were previously registered:" + for _, curr := range results { + baseURL, _ := url.Parse(env.HostURL) + baseURL.Path = path.Join(baseURL.Path, "webhook") + baseURL.Path = path.Join(baseURL.Path, "routes") + baseURL.Path = path.Join(baseURL.Path, curr.WebhookID) + webhookURL := baseURL.String() + responseText += fmt.Sprintf("%s\n", webhookURL) + } + return true, &responseText + } + return false, nil +} + func genWebhookCode(n int) string { var letters = []rune("abcdefghijklmnopqrstuvwxyz1234567890") runeCode := make([]rune, n) diff --git a/docker-compose.yml b/docker-compose.yml index ff714f2..6fb7d8f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,7 @@ services: image: postgres restart: always volumes: - - "./_postgres_data:/var/lib/postgresql/data" + - "./_docker_mnt/_postgres_data:/var/lib/postgresql/data" environment: - "POSTGRES_USER=${DB_USER}" - "POSTGRES_PASSWORD=${DB_PASS}" diff --git a/scripts/deploy.sh b/scripts/deploy.sh index f5486e3..505de21 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -2,5 +2,5 @@ echo $ATHENA_DEPLOYMENT_SSH_KEY | base64 -d > /tmp/ssh-key chmod 600 /tmp/ssh-key -rsync -v -e "ssh -o StrictHostKeyChecking=no -i /tmp/ssh-key -p 777" -a --exclude="_postgres_data" --delete . samuel@athena.gaia:~/webhook-everything || true +rsync -v -e "ssh -o StrictHostKeyChecking=no -i /tmp/ssh-key -p 777" -a --exclude="_docker_mnt/_postgres_data" --delete . samuel@athena.gaia:~/webhook-everything || true ssh -p 777 -o StrictHostKeyChecking=no -i /tmp/ssh-key samuel@athena.gaia "cd /home/samuel/webhook-everything && docker-compose up --build -d" \ No newline at end of file diff --git a/scripts/dev_postgres_docker.sh b/scripts/dev_postgres_docker.sh index cb41dc4..d217ce7 100755 --- a/scripts/dev_postgres_docker.sh +++ b/scripts/dev_postgres_docker.sh @@ -1,6 +1,6 @@ docker rm -f dev_postgres docker run -d \ - -v `pwd`/_postgres_data:/var/lib/postgresql/data \ + -v `pwd`/_docker_mnt/_postgres_data:/var/lib/postgresql/data \ -e POSTGRES_USER=testuser \ -e POSTGRES_PASSWORD=testpassword \ -e POSTGRES_DB=testdb \