Files
bds/modules/datas/server/server.go
Matheus Sampaio Queiroga ad65c0a9b0 Refactor user management and server templates
- Removed old SQLite user schema and replaced it with a new structure that includes password handling and cookie management.
- Updated user.go to implement password encryption and user creation logic.
- Modified web templates to reflect the new server management system, including the removal of outdated templates and the addition of new server creation and listing functionalities.
- Introduced error handling templates for better user feedback on bad requests and server errors.
- Added a makefile for easier database setup and management with Docker.

Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
2025-05-09 22:03:06 -03:00

113 lines
2.4 KiB
Go

package server
import (
"database/sql"
"fmt"
"sirherobrine23.com.br/go-bds/bds/modules/datas/permission"
"sirherobrine23.com.br/go-bds/bds/modules/datas/user"
)
type ServerType uint
// Server types
const (
Bedrock ServerType = iota
Java
Pocketmine
AllayMC
SpigotMC
PurpurMC
PaperMC
FoliaMC
VelocityMC
)
var serverNames = []string{
Bedrock: "Bedrock",
Java: "Java",
Pocketmine: "PocketminineMP",
AllayMC: "AllayMC",
SpigotMC: "Spigot",
PurpurMC: "Purpur",
PaperMC: "Paper",
FoliaMC: "Folia",
VelocityMC: "Velocity",
}
func (s ServerType) String() string { return serverNames[s] }
type ServerOwner struct {
Permission permission.Permission // User permission in server
User *user.User // User
}
type ServerOwners []*ServerOwner
func (s ServerOwners) UserID(id int64) (*ServerOwner, bool) {
for _, user := range s {
if user.User.ID == id {
return user, true
}
}
return nil, false
}
// Server
type Server struct {
ID int64 // Server id
Name string // Server name
ServerType ServerType // Server type
ServerVersion string // Server version
Owners ServerOwners // Server owners
}
type ServerList struct {
Driver string // Driver name
DB *sql.DB // Database connection
}
// Get server by owner ID
func (serverDB *ServerList) ByOwner(id int64) ([]*Server, error) {
switch serverDB.Driver {
case "sqlite3":
return serverDB.sqliteByOwner(id)
default:
return nil, fmt.Errorf("%s drive not supported in Server list", serverDB.Driver)
}
}
// Get server by id
func (serverDB *ServerList) ByID(id int64) (*Server, error) {
switch serverDB.Driver {
case "sqlite3":
return serverDB.sqliteByID(id)
default:
return nil, fmt.Errorf("%s drive not supported in Server list", serverDB.Driver)
}
}
// Create server
func (serverDB *ServerList) CreateServer(name, serverVersion string, serverType ServerType, owner *user.User) (*Server, error) {
if serverVersion == "latest" {
switch serverType {
case Bedrock:
case Java:
case Pocketmine:
case AllayMC:
case SpigotMC:
case PurpurMC:
case PaperMC:
case FoliaMC:
case VelocityMC:
}
}
switch serverDB.Driver {
case "sqlite3":
return serverDB.sqliteCreateServer(name, serverVersion, serverType, owner)
default:
return nil, fmt.Errorf("%s drive not supported in Server list", serverDB.Driver)
}
}