mirror of
https://codeberg.org/Codeberg/pages-server.git
synced 2025-04-24 22:06:57 +00:00
dedup & fix
This commit is contained in:
parent
3c0ee7e8a3
commit
a656335a22
7 changed files with 189 additions and 213 deletions
51
cmd/certs.go
51
cmd/certs.go
|
@ -31,32 +31,14 @@ var Certs = &cli.Command{
|
||||||
Action: migrateCerts,
|
Action: migrateCerts,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Flags: []cli.Flag{
|
Flags: append(CertStorageFlags, []cli.Flag{
|
||||||
// Cert Storage
|
|
||||||
// TODO: remove in next version
|
|
||||||
&cli.StringFlag{
|
|
||||||
// DEPRICATED
|
|
||||||
Name: "db-pogreb",
|
|
||||||
Value: "key-database.pogreb",
|
|
||||||
EnvVars: []string{"DB_POGREB"},
|
|
||||||
},
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "db-type",
|
|
||||||
Value: "", // TODO: "sqlite3" in next version
|
|
||||||
EnvVars: []string{"DB_TYPE"},
|
|
||||||
},
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "db-conn",
|
|
||||||
Value: "certs.sqlite",
|
|
||||||
EnvVars: []string{"DB_CONN"},
|
|
||||||
},
|
|
||||||
&cli.BoolFlag{
|
&cli.BoolFlag{
|
||||||
Name: "verbose",
|
Name: "verbose",
|
||||||
Usage: "print trace info",
|
Usage: "print trace info",
|
||||||
EnvVars: []string{"VERBOSE"},
|
EnvVars: []string{"VERBOSE"},
|
||||||
Value: false,
|
Value: false,
|
||||||
},
|
},
|
||||||
},
|
}...),
|
||||||
}
|
}
|
||||||
|
|
||||||
func migrateCerts(ctx *cli.Context) error {
|
func migrateCerts(ctx *cli.Context) error {
|
||||||
|
@ -148,32 +130,3 @@ func removeCert(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func openCertDB(ctx *cli.Context) (certDB database.CertDB, err error) {
|
|
||||||
if ctx.String("db-type") != "" {
|
|
||||||
certDB, err = database.NewXormDB(ctx.String("db-type"), ctx.String("db-conn"))
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("could not connect to database: %w", err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// TODO: remove in next version
|
|
||||||
fmt.Println(`
|
|
||||||
######################
|
|
||||||
## W A R N I N G !!! #
|
|
||||||
######################
|
|
||||||
|
|
||||||
You use "pogreb" witch is deprecated and will be removed in the next version.
|
|
||||||
Please switch to sqlite, mysql or postgres !!!
|
|
||||||
|
|
||||||
The simplest way is, to use './pages certs migrate' and set environment var DB_TYPE to 'sqlite' on next start.
|
|
||||||
|
|
||||||
`)
|
|
||||||
log.Error().Msg("depricated \"pogreb\" used\n")
|
|
||||||
|
|
||||||
certDB, err = database.NewPogreb(ctx.String("db-pogreb"))
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("could not create database: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return certDB, nil
|
|
||||||
}
|
|
||||||
|
|
66
cmd/flags.go
66
cmd/flags.go
|
@ -4,16 +4,31 @@ import (
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
var ServeFlags = []cli.Flag{
|
var (
|
||||||
// MainDomainSuffix specifies the main domain (starting with a dot) for which subdomains shall be served as static
|
CertStorageFlags = []cli.Flag{
|
||||||
// pages, or used for comparison in CNAME lookups. Static pages can be accessed through
|
|
||||||
// https://{owner}.{MainDomain}[/{repo}], with repo defaulting to "pages".
|
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "pages-domain",
|
// TODO: remove in next version
|
||||||
Usage: "specifies the main domain (starting with a dot) for which subdomains shall be served as static pages",
|
// DEPRICATED
|
||||||
EnvVars: []string{"PAGES_DOMAIN"},
|
Name: "db-pogreb",
|
||||||
Value: "codeberg.page",
|
Value: "key-database.pogreb",
|
||||||
|
EnvVars: []string{"DB_POGREB"},
|
||||||
},
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "db-type",
|
||||||
|
Value: "", // TODO: "sqlite3" in next version
|
||||||
|
EnvVars: []string{"DB_TYPE"},
|
||||||
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "db-conn",
|
||||||
|
Value: "certs.sqlite",
|
||||||
|
EnvVars: []string{"DB_CONN"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
ServerFlags = append(CertStorageFlags, []cli.Flag{
|
||||||
|
// #############
|
||||||
|
// ### Gitea ###
|
||||||
|
// #############
|
||||||
// GiteaRoot specifies the root URL of the Gitea instance, without a trailing slash.
|
// GiteaRoot specifies the root URL of the Gitea instance, without a trailing slash.
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "gitea-root",
|
Name: "gitea-root",
|
||||||
|
@ -28,6 +43,19 @@ var ServeFlags = []cli.Flag{
|
||||||
EnvVars: []string{"GITEA_API_TOKEN"},
|
EnvVars: []string{"GITEA_API_TOKEN"},
|
||||||
Value: "",
|
Value: "",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// ###########################
|
||||||
|
// ### Page Server Domains ###
|
||||||
|
// ###########################
|
||||||
|
// MainDomainSuffix specifies the main domain (starting with a dot) for which subdomains shall be served as static
|
||||||
|
// pages, or used for comparison in CNAME lookups. Static pages can be accessed through
|
||||||
|
// https://{owner}.{MainDomain}[/{repo}], with repo defaulting to "pages".
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "pages-domain",
|
||||||
|
Usage: "specifies the main domain (starting with a dot) for which subdomains shall be served as static pages",
|
||||||
|
EnvVars: []string{"PAGES_DOMAIN"},
|
||||||
|
Value: "codeberg.page",
|
||||||
|
},
|
||||||
// RawDomain specifies the domain from which raw repository content shall be served in the following format:
|
// RawDomain specifies the domain from which raw repository content shall be served in the following format:
|
||||||
// https://{RawDomain}/{owner}/{repo}[/{branch|tag|commit}/{version}]/{filepath...}
|
// https://{RawDomain}/{owner}/{repo}[/{branch|tag|commit}/{version}]/{filepath...}
|
||||||
// (set to []byte(nil) to disable raw content hosting)
|
// (set to []byte(nil) to disable raw content hosting)
|
||||||
|
@ -120,23 +148,5 @@ var ServeFlags = []cli.Flag{
|
||||||
// TODO: Usage
|
// TODO: Usage
|
||||||
EnvVars: []string{"DNS_PROVIDER"},
|
EnvVars: []string{"DNS_PROVIDER"},
|
||||||
},
|
},
|
||||||
|
}...)
|
||||||
// Cert Storage
|
)
|
||||||
// TODO: remove in next version
|
|
||||||
&cli.StringFlag{
|
|
||||||
// DEPRICATED
|
|
||||||
Name: "db-pogreb",
|
|
||||||
Value: "key-database.pogreb",
|
|
||||||
EnvVars: []string{"DB_POGREB"},
|
|
||||||
},
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "db-type",
|
|
||||||
Value: "", // TODO: "sqlite3" in next version
|
|
||||||
EnvVars: []string{"DB_TYPE"},
|
|
||||||
},
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "db-conn",
|
|
||||||
Value: "certs.sqlite",
|
|
||||||
EnvVars: []string{"DB_CONN"},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
29
cmd/main.go
29
cmd/main.go
|
@ -18,7 +18,6 @@ import (
|
||||||
"codeberg.org/codeberg/pages/server"
|
"codeberg.org/codeberg/pages/server"
|
||||||
"codeberg.org/codeberg/pages/server/cache"
|
"codeberg.org/codeberg/pages/server/cache"
|
||||||
"codeberg.org/codeberg/pages/server/certificates"
|
"codeberg.org/codeberg/pages/server/certificates"
|
||||||
"codeberg.org/codeberg/pages/server/database"
|
|
||||||
"codeberg.org/codeberg/pages/server/gitea"
|
"codeberg.org/codeberg/pages/server/gitea"
|
||||||
"codeberg.org/codeberg/pages/server/handler"
|
"codeberg.org/codeberg/pages/server/handler"
|
||||||
)
|
)
|
||||||
|
@ -75,33 +74,7 @@ func Serve(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init ssl cert database
|
// Init ssl cert database
|
||||||
var certDB database.CertDB
|
certDB, err := openCertDB(ctx)
|
||||||
if ctx.String("db-type") != "" {
|
|
||||||
log.Trace().Msg("use xorm mode")
|
|
||||||
certDB, err = database.NewXormDB(ctx.String("db-type"), ctx.String("db-conn"))
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("could not connect to database: %w", err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// TODO: remove in next version
|
|
||||||
fmt.Println(`
|
|
||||||
######################
|
|
||||||
## W A R N I N G !!! #
|
|
||||||
######################
|
|
||||||
|
|
||||||
You use "pogreb" witch is deprecated and will be removed in the next version.
|
|
||||||
Please switch to sqlite, mysql or postgres !!!
|
|
||||||
|
|
||||||
The simplest way is, to use './pages certs migrate' and set environment var DB_TYPE to 'sqlite' on next start.
|
|
||||||
|
|
||||||
`)
|
|
||||||
log.Error().Msg("depricated \"pogreb\" used\n")
|
|
||||||
|
|
||||||
certDB, err = database.NewPogreb(ctx.String("db-pogreb"))
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("could not create database: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
defer certDB.Close()
|
defer certDB.Close()
|
||||||
|
|
||||||
keyCache := cache.NewKeyValueCache()
|
keyCache := cache.NewKeyValueCache()
|
||||||
|
|
40
cmd/setup.go
Normal file
40
cmd/setup.go
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/rs/zerolog/log"
|
||||||
|
"github.com/urfave/cli/v2"
|
||||||
|
|
||||||
|
"codeberg.org/codeberg/pages/server/database"
|
||||||
|
)
|
||||||
|
|
||||||
|
func openCertDB(ctx *cli.Context) (certDB database.CertDB, err error) {
|
||||||
|
if ctx.String("db-type") != "" {
|
||||||
|
log.Trace().Msg("use xorm mode")
|
||||||
|
certDB, err = database.NewXormDB(ctx.String("db-type"), ctx.String("db-conn"))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not connect to database: %w", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// TODO: remove in next version
|
||||||
|
fmt.Println(`
|
||||||
|
######################
|
||||||
|
## W A R N I N G !!! #
|
||||||
|
######################
|
||||||
|
|
||||||
|
You use "pogreb" witch is deprecated and will be removed in the next version.
|
||||||
|
Please switch to sqlite, mysql or postgres !!!
|
||||||
|
|
||||||
|
The simplest way is, to use './pages certs migrate' and set environment var DB_TYPE to 'sqlite' on next start.
|
||||||
|
|
||||||
|
`)
|
||||||
|
log.Error().Msg("depricated \"pogreb\" used\n")
|
||||||
|
|
||||||
|
certDB, err = database.NewPogreb(ctx.String("db-pogreb"))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not create database: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return certDB, nil
|
||||||
|
}
|
|
@ -44,7 +44,7 @@ func startServer(ctx context.Context) error {
|
||||||
app := cli.NewApp()
|
app := cli.NewApp()
|
||||||
app.Name = "pages-server"
|
app.Name = "pages-server"
|
||||||
app.Action = cmd.Serve
|
app.Action = cmd.Serve
|
||||||
app.Flags = cmd.ServeFlags
|
app.Flags = cmd.ServerFlags
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
if err := app.RunContext(ctx, args); err != nil {
|
if err := app.RunContext(ctx, args); err != nil {
|
||||||
|
|
2
main.go
2
main.go
|
@ -19,7 +19,7 @@ func main() {
|
||||||
app.Version = version
|
app.Version = version
|
||||||
app.Usage = "pages server"
|
app.Usage = "pages server"
|
||||||
app.Action = cmd.Serve
|
app.Action = cmd.Serve
|
||||||
app.Flags = cmd.ServeFlags
|
app.Flags = cmd.ServerFlags
|
||||||
app.Commands = []*cli.Command{
|
app.Commands = []*cli.Command{
|
||||||
cmd.Certs,
|
cmd.Certs,
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ func (x xDB) Compact() (string, error) {
|
||||||
// Items return al certs from db, if pageSize is 0 it does not use limit
|
// Items return al certs from db, if pageSize is 0 it does not use limit
|
||||||
func (x xDB) Items(page, pageSize int) ([]*Cert, error) {
|
func (x xDB) Items(page, pageSize int) ([]*Cert, error) {
|
||||||
// paginated return
|
// paginated return
|
||||||
if pageSize >= 0 {
|
if pageSize > 0 {
|
||||||
certs := make([]*Cert, 0, pageSize)
|
certs := make([]*Cert, 0, pageSize)
|
||||||
if page >= 0 {
|
if page >= 0 {
|
||||||
page = 1
|
page = 1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue