From 1c27cdfaf15547fffa9ce9a99f915c940c72830b Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Fri, 1 May 2026 11:44:35 -0500 Subject: [PATCH] =?UTF-8?q?fix:=20layout=20CSS=20en=20Cloudflare/Hostinger?= =?UTF-8?q?=20+=20sesiones=20en=20PostgreSQL=201=20a=C3=B1o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.go | 2 +- config/session.go | 48 +++++++++-------------- go.mod | 9 +++-- rest/controllers/cloudflare_controller.go | 7 +++- rest/controllers/hostinger_controller.go | 7 +++- 5 files changed, 34 insertions(+), 39 deletions(-) diff --git a/config/config.go b/config/config.go index e7f27df..b175948 100755 --- a/config/config.go +++ b/config/config.go @@ -91,7 +91,7 @@ func (cfg *AppConfig) LoadComponents() { cfg.LoadStatic() cfg.PrepareLog() _ = cfg.Database.Setup() - _ = cfg.Session.Setup() + _ = cfg.Session.Setup(cfg.Database.Default) cfg.Cache.Setup() cfg.Storage.Setup() } diff --git a/config/session.go b/config/session.go index 3dd46ea..7fdac86 100755 --- a/config/session.go +++ b/config/session.go @@ -1,49 +1,37 @@ package config import ( - "fmt" "time" "github.com/gofiber/session/v2" - "gorm.io/driver/sqlite" - "gorm.io/gorm" + pgprovider "github.com/gofiber/session/v2/provider/postgres" ) type SessionConfig struct { - Database string `yaml:"database" env:"SESSION_DATABASE"` // Ruta de la base de datos SQLite *session.Session } -func (s *SessionConfig) Setup() error { - // Abrir conexión a la base de datos SQLite - db, err := gorm.Open(sqlite.Open(s.Database), &gorm.Config{}) +// Setup configura el almacén de sesiones en PostgreSQL con expiración de 1 año. +func (s *SessionConfig) Setup(db DatabaseDriver) error { + provider, err := pgprovider.New(pgprovider.Config{ + Host: db.Host, + Port: int64(db.Port), + Username: db.Username, + Password: db.Password, + Database: db.DBName, + TableName: "sessions", + MaxOpenConns: 20, + MaxIdleConns: 10, + ConnMaxLifetime: 5 * time.Minute, + }) if err != nil { - return fmt.Errorf("failed to connect to the database: %v", err) + return err } - // Migrar la estructura de la tabla para sesiones - err = db.AutoMigrate(&Session{}) // Define la estructura de la sesión según sea necesario - if err != nil { - return fmt.Errorf("failed to migrate database: %v", err) - } - - // Configurar el proveedor de sesiones en memoria - store := session.New(session.Config{ + s.Session = session.New(session.Config{ Expiration: 365 * 24 * time.Hour, // 1 año - }) // Usar el proveedor de sesiones en memoria - - // Crear una nueva sesión - s.Session = store + Provider: provider, + }) return nil } - -// Estructura para las sesiones (ajusta según tus necesidades) -type Session struct { - ID uint `gorm:"primaryKey"` - SessionID string `gorm:"unique"` - Data string `gorm:"type:text"` - CreatedAt time.Time - UpdatedAt time.Time - ExpireAt time.Time -} diff --git a/go.mod b/go.mod index af1694b..8f5f47d 100755 --- a/go.mod +++ b/go.mod @@ -45,8 +45,12 @@ require ( require ( github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible github.com/chai2010/webp v1.4.0 + github.com/go-sql-driver/mysql v1.8.1 + github.com/jackc/pgx/v5 v5.7.1 github.com/mattn/go-sqlite3 v1.14.22 + github.com/microsoft/go-mssqldb v1.7.2 github.com/oarkflow/log v1.0.79 + github.com/robfig/cron/v3 v3.0.1 github.com/sirupsen/logrus v1.9.3 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e gorm.io/driver/sqlite v1.5.6 @@ -72,7 +76,6 @@ require ( github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect - github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-test/deep v1.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect @@ -89,7 +92,6 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.7.1 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect @@ -98,9 +100,9 @@ require ( github.com/klauspost/compress v1.17.10 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/microsoft/go-mssqldb v1.7.2 // indirect github.com/mitchellh/go-ps v1.0.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -111,7 +113,6 @@ require ( github.com/pyroscope-io/dotnetdiag v1.2.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/robfig/cron/v3 v3.0.1 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/savsgio/gotils v0.0.0-20240704082632-aef3928b8a38 // indirect github.com/stretchr/testify v1.10.0 // indirect diff --git a/rest/controllers/cloudflare_controller.go b/rest/controllers/cloudflare_controller.go index d09d94d..06b023d 100644 --- a/rest/controllers/cloudflare_controller.go +++ b/rest/controllers/cloudflare_controller.go @@ -11,10 +11,13 @@ import ( // CloudflareConfigPage renderiza la vista de gestión de Cloudflare. func CloudflareConfigPage(c *fiber.Ctx) error { cfg, _ := models.GetCloudflareConfig() - return c.Render("cloudflare", fiber.Map{ + if err := c.Render("cloudflare", fiber.Map{ "Title": "Cloudflare API", "Config": cfg, - }) + }, "layouts/main"); err != nil { + return c.SendStatus(fiber.StatusInternalServerError) + } + return nil } // SaveCloudflareConfig guarda o actualiza el API token de Cloudflare. diff --git a/rest/controllers/hostinger_controller.go b/rest/controllers/hostinger_controller.go index 6eb6d42..0b4f16d 100644 --- a/rest/controllers/hostinger_controller.go +++ b/rest/controllers/hostinger_controller.go @@ -11,10 +11,13 @@ import ( // HostingerConfigPage renderiza la vista de gestión de Hostinger. func HostingerConfigPage(c *fiber.Ctx) error { cfg, _ := models.GetHostingerConfig() - return c.Render("hostinger", fiber.Map{ + if err := c.Render("hostinger", fiber.Map{ "Title": "Hostinger API", "Config": cfg, - }) + }, "layouts/main"); err != nil { + return c.SendStatus(fiber.StatusInternalServerError) + } + return nil } // SaveHostingerConfig guarda o actualiza el token de Hostinger.