From b1bfec1ce2987d9fe0cc52e5ae9115977fdf8c24 Mon Sep 17 00:00:00 2001 From: Bobby <30593201+luciferreeves@users.noreply.github.com> Date: Fri, 19 Dec 2025 18:01:24 +0530 Subject: added utils, templates, routes, types, middleware, processors and a whole lot of things for a basic login page --- config/config.go | 12 ++++++------ config/env.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ config/types.go | 48 ------------------------------------------------ 3 files changed, 60 insertions(+), 54 deletions(-) create mode 100644 config/env.go delete mode 100644 config/types.go (limited to 'config') diff --git a/config/config.go b/config/config.go index a3835c5..84729c1 100644 --- a/config/config.go +++ b/config/config.go @@ -8,12 +8,12 @@ import ( ) var ( - Server ServerConfig - MailServer MailServerConfig - Database DatabaseConfig - MinIO MinIOConfig - AIServer AIServerConfig - Session SessionConfig + Server server + MailServer mail + Database database + MinIO minio + AIServer ai + Session session ) func init() { diff --git a/config/env.go b/config/env.go new file mode 100644 index 0000000..2c947d6 --- /dev/null +++ b/config/env.go @@ -0,0 +1,54 @@ +package config + +import "time" + +type server struct { + Host string `env:"SERVER_HOST" default:"localhost"` + Port int `env:"SERVER_PORT" default:"8080"` + AppSecret string `env:"APP_SECRET" default:"mysecret"` + AppName string `env:"APP_NAME" default:"Lain Mail"` + AppDescription string `env:"APP_DESCRIPTION" default:"Present day, present time!"` + AppEngine string `env:"APP_ENGINE" default:"Lain"` + AllowedDomains []string `env:"ALLOWED_DOMAINS" default:"localhost"` + DevMode bool `env:"DEV_MODE" default:"true"` +} + +type mail struct { + IMAPHost string `env:"IMAP_HOST" default:""` + IMAPPort int `env:"IMAP_PORT" default:"993"` + IMAPTLS bool `env:"IMAP_TLS" default:"true"` + SMTPHost string `env:"SMTP_HOST" default:""` + SMTPPort int `env:"SMTP_PORT" default:"587"` + SMTPTLS bool `env:"SMTP_TLS" default:"true"` +} + +type database struct { + Host string `env:"DB_HOST" default:"localhost"` + Port int `env:"DB_PORT" default:"5432"` + Username string `env:"DB_USER" default:"postgres"` + Password string `env:"DB_PASS" default:""` + Name string `env:"DB_NAME" default:"lain"` + SSLMode string `env:"DB_SSLMODE" default:"disable"` +} + +type minio struct { + Endpoint string `env:"MINIO_ENDPOINT" default:"localhost:9000"` + AccessKey string `env:"MINIO_ACCESS_KEY" default:""` + SecretKey string `env:"MINIO_SECRET_KEY" default:""` + BucketName string `env:"MINIO_BUCKET_NAME" default:"lain"` + UseSSL bool `env:"MINIO_USE_SSL" default:"false"` +} + +type ai struct { + URL string `env:"AI_SERVER_URL" default:""` + AuthKey string `env:"AI_SERVER_AUTH_KEY" default:""` +} + +type session struct { + CookieDomain string `env:"SESSION_COOKIE_DOMAIN" default:"localhost"` + CookieName string `env:"SESSION_COOKIE_NAME" default:"lain_session"` + CookiePath string `env:"SESSION_COOKIE_PATH" default:"/"` + CookieSameSite string `env:"SESSION_COOKIE_SAME_SITE" default:"Lax"` + CookieSecure bool `env:"SESSION_SECURE_COOKIE" default:"false"` + CookieTimeout time.Duration `env:"SESSION_TIMEOUT" default:"24h"` +} diff --git a/config/types.go b/config/types.go deleted file mode 100644 index c1934ef..0000000 --- a/config/types.go +++ /dev/null @@ -1,48 +0,0 @@ -package config - -import "time" - -type ServerConfig struct { - Host string `env:"SERVER_HOST" default:"localhost"` - Port int `env:"SERVER_PORT" default:"8080"` - AppSecret string `env:"APP_SECRET" default:"mysecret"` - AllowedDomains []string `env:"ALLOWED_DOMAINS" default:"localhost"` - DevMode bool `env:"DEV_MODE" default:"true"` -} - -type MailServerConfig struct { - IMAPHost string `env:"IMAP_HOST" default:""` - IMAPPort int `env:"IMAP_PORT" default:"993"` - IMAPTLS bool `env:"IMAP_TLS" default:"true"` - SMTPHost string `env:"SMTP_HOST" default:""` - SMTPPort int `env:"SMTP_PORT" default:"587"` - SMTPTLS bool `env:"SMTP_TLS" default:"true"` -} - -type DatabaseConfig struct { - Host string `env:"DB_HOST" default:"localhost"` - Port int `env:"DB_PORT" default:"5432"` - Username string `env:"DB_USER" default:"postgres"` - Password string `env:"DB_PASS" default:""` - Name string `env:"DB_NAME" default:"lain"` - SSLMode string `env:"DB_SSLMODE" default:"disable"` -} - -type MinIOConfig struct { - Endpoint string `env:"MINIO_ENDPOINT" default:"localhost:9000"` - AccessKey string `env:"MINIO_ACCESS_KEY" default:""` - SecretKey string `env:"MINIO_SECRET_KEY" default:""` - BucketName string `env:"MINIO_BUCKET_NAME" default:"lain"` - UseSSL bool `env:"MINIO_USE_SSL" default:"false"` -} - -type AIServerConfig struct { - URL string `env:"AI_SERVER_URL" default:""` - AuthKey string `env:"AI_SERVER_AUTH_KEY" default:""` -} - -type SessionConfig struct { - CookieName string `env:"SESSION_COOKIE_NAME" default:"lain_session"` - Timeout time.Duration `env:"SESSION_TIMEOUT" default:"24h"` - SecureCookie bool `env:"SESSION_SECURE_COOKIE" default:"false"` -} -- cgit v1.2.3