gPanel/pkg/database/settings.go

64 lines
1.3 KiB
Go

package database
import (
"encoding/json"
"errors"
"github.com/Ennovar/gPanel/pkg/emailer"
"github.com/boltdb/bolt"
)
type Struct_SMTP struct {
Type string `json:"type"`
Username string `json:"username"`
Password string `json:"password"`
Server string `json:"server"`
Port int `json:"port"`
}
type Struct_Admin struct {
Name string `json:"name"`
Email string `json:"email"`
}
// Function CheckAdminSettings makes sure that the
// admin settings are set and are valid.
func (ds *Datastore) CheckAdminSettings() (rerr error) {
rerr = ds.handle.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(BUCKET_GENERAL))
smtp := b.Get([]byte("smtp"))
var smtpCreds Struct_SMTP
err := json.Unmarshal(smtp, &smtpCreds)
if err != nil {
return err
}
_, err = emailer.New(smtpCreds.Type, emailer.Credentials{
Username: smtpCreds.Username,
Password: smtpCreds.Password,
Server: smtpCreds.Server,
Port: smtpCreds.Port,
})
if err != nil {
return err
}
a := b.Get([]byte("admin"))
var admin Struct_Admin
err = json.Unmarshal(a, &admin)
if err != nil {
return err
}
if len(admin.Email) == 0 || len(admin.Name) == 0 {
return errors.New("admin name and email settings are empty")
}
return nil
})
return
}