Add notifier and remove local config from repo
ci/woodpecker/push/build Pipeline was successful
Details
ci/woodpecker/push/build Pipeline was successful
Details
This commit is contained in:
parent
384b0d14de
commit
21df52fafb
|
@ -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
|
|
@ -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"`
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -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=
|
|
@ -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
|
|
@ -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'
|
|
@ -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
|
|
@ -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
|
|
@ -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
1
go.mod
|
@ -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
2
go.sum
|
@ -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=
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
Reference in New Issue