Add notifier and remove local config from repo
ci/woodpecker/push/build Pipeline was successful Details

This commit is contained in:
Melon 2023-03-12 02:25:37 +00:00
parent 384b0d14de
commit 21df52fafb
Signed by: melon
GPG Key ID: 6C9D970C50D26A25
13 changed files with 63 additions and 83 deletions

View File

@ -1,8 +0,0 @@
database: summer:summer@tcp(summer-mariadb:3306)/summer?charset=utf8&parseTime=True&loc=Local
listen:
http: :80
https: :443
api: :7070
auth:
public: /etc/melon-summer/keys/public.key.pem
apiDomain: api.summer.test

View File

@ -2,12 +2,14 @@ package main
import (
"code.mrmelon54.com/melon/summer/pkg/api"
"code.mrmelon54.com/melon/summer/pkg/notifier"
"code.mrmelon54.com/melon/summer/pkg/renewal"
)
type ButtercupConfig struct {
Database string `yaml:"database"`
Listen string `yaml:"listen"`
Renewal renewal.Config `yaml:"renewal"`
Auth api.AuthConfig `yaml:"auth"`
Database string `yaml:"database"`
Listen string `yaml:"listen"`
Renewal renewal.Config `yaml:"renewal"`
Auth api.AuthConfig `yaml:"auth"`
Notify notifier.Config `yaml:"notify"`
}

View File

@ -1,8 +0,0 @@
database: summer:summer@tcp(summer-mariadb:3306)/summer?charset=utf8&parseTime=True&loc=Local
listen: :7070
renewal:
letsEncrypt:
directory: https://pebble:14000/dir
certificate: pebble
auth:
public: /etc/melon-summer/keys/public.key.pem

View File

@ -1,14 +0,0 @@
database: summer:summer@tcp(summer-mariadb:3306)/summer?charset=utf8&parseTime=True&loc=Local
listen: :7070
auth:
issuer: Melon ID
authClient: https://id.summer.test:5443/oauth/authorize
key: /etc/melon-summer/keys/private.key.pem
public: /etc/melon-summer/keys/public.key.pem
smtp:
certificate: /etc/melon-summer/keys/smtp.cert.pem
tls: true
server: smtp.captainalm.com:465
from: noreply@mrmelon54.com
username: noreply@mrmelon54.com
password: hwDnnpf9jZ+uvNg38pzKI5BVjyl5vKEyk7wI5TEqEs4=

View File

@ -1,4 +0,0 @@
database: summer:summer@tcp(summer-mariadb:3306)/summer?charset=utf8&parseTime=True&loc=Local
listen: :7070
auth:
public: /etc/melon-summer/keys/public.key.pem

View File

@ -1,11 +0,0 @@
database: summer:summer@tcp(database:3306)/summer?charset=utf8&parseTime=True&loc=Local
listen:
http: :80
https: :443
api: :7070
auth:
public: /etc/melon-summer/keys/public.key.pem
apiDomain: api.summer.test
rateLimit: 300
418: '/etc/melon-summer/418.html'
inkscape: 'inkscape'

View File

@ -1,8 +0,0 @@
database: summer:summer@tcp(database:3306)/summer?charset=utf8&parseTime=True&loc=Local
listen: :7070
renewal:
letsEncrypt:
directory: https://localhost:14000/dir
certificate: pebble
auth:
public: /etc/melon-summer/keys/public.key.pem

View File

@ -1,22 +0,0 @@
database: summer:summer@tcp(database:3306)/summer?charset=utf8&parseTime=True&loc=Local
listen: :7070
auth:
issuer: http://localhost:7070
authClient: https://id.summer.test:5443/oauth/authorize
key: /etc/melon-summer/keys/private.key.pem
public: /etc/melon-summer/keys/public.key.pem
smtp:
startTls: false
tls: false
server: mailhog:1025
from: No-Reply <noreply@example.com>
username: noreply@example.com
password: no
user:
default-icons:
- https://cdn.mrmelon54.com/assets/default-icons/0.svg
- https://cdn.mrmelon54.com/assets/default-icons/1.svg
- https://cdn.mrmelon54.com/assets/default-icons/2.svg
- https://cdn.mrmelon54.com/assets/default-icons/3.svg
- https://cdn.mrmelon54.com/assets/default-icons/4.svg
- https://cdn.mrmelon54.com/assets/default-icons/5.svg

View File

@ -1,4 +0,0 @@
database: summer:summer@tcp(database:3306)/summer?charset=utf8&parseTime=True&loc=Local
listen: :7070
auth:
public: /etc/melon-summer/keys/public.key.pem

1
go.mod
View File

@ -10,6 +10,7 @@ require (
github.com/go-acme/lego/v4 v4.9.1
github.com/go-oauth2/oauth2/v4 v4.5.1
github.com/go-sql-driver/mysql v1.6.0
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1
github.com/golang-jwt/jwt/v4 v4.4.3
github.com/google/uuid v1.3.0
github.com/gorilla/handlers v1.5.1

2
go.sum
View File

@ -163,6 +163,8 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 h1:wG8n/XJQ07TmjbITcGiUaOtXxdrINDz1b0J1w0SzqDc=
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1/go.mod h1:A2S0CWkNylc2phvKXWBBdD3K0iGnDBGbzRpISP2zBl8=
github.com/goccy/go-json v0.8.1 h1:4/Wjm0JIJaTDm8K1KcGrLHJoa8EsJ13YWeX+6Kfq6uI=
github.com/goccy/go-json v0.8.1/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=

23
pkg/notifier/notifier.go Normal file
View File

@ -0,0 +1,23 @@
package notifier
import "errors"
var ErrInvalidNotifierType = errors.New("invalid notifier type")
type Notifier interface {
SendMessage(s string)
}
type Config struct {
Type string `yaml:"type"`
Token string `yaml:"token"` // the token used to log in to the bot
Target string `yaml:"target"` // the target chat or user to send updates to
}
func Init(conf Config) (Notifier, error) {
switch conf.Type {
case "telegram":
return newTelegram(conf.Token, conf.Target)
}
return nil, ErrInvalidNotifierType
}

31
pkg/notifier/telegram.go Normal file
View File

@ -0,0 +1,31 @@
package notifier
import (
tgBotApi5 "github.com/go-telegram-bot-api/telegram-bot-api/v5"
"log"
"strconv"
)
type Telegram struct {
bot *tgBotApi5.BotAPI
chatId int64
}
func newTelegram(token, chat string) (*Telegram, error) {
bot, err := tgBotApi5.NewBotAPI(token)
if err != nil {
return nil, err
}
chatId, err := strconv.ParseInt(chat, 10, 64)
if err != nil {
return nil, err
}
return &Telegram{bot: bot, chatId: chatId}, nil
}
func (t *Telegram) SendMessage(s string) {
_, err := t.bot.Send(tgBotApi5.NewMessage(t.chatId, s))
if err != nil {
log.Printf("[Notifier:Telegram] Failed to send message: %s\n", err)
}
}