mirror of
https://github.com/pocketbase/pocketbase.git
synced 2024-11-21 13:35:49 +02:00
78 lines
1.9 KiB
Go
78 lines
1.9 KiB
Go
package cmd
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
|
|
"github.com/pocketbase/pocketbase/apis"
|
|
"github.com/pocketbase/pocketbase/core"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
// NewServeCommand creates and returns new command responsible for
|
|
// starting the default PocketBase web server.
|
|
func NewServeCommand(app core.App, showStartBanner bool) *cobra.Command {
|
|
var allowedOrigins []string
|
|
var httpAddr string
|
|
var httpsAddr string
|
|
|
|
command := &cobra.Command{
|
|
Use: "serve [domain(s)]",
|
|
Args: cobra.ArbitraryArgs,
|
|
Short: "Starts the web server (default to 127.0.0.1:8090 if no domain is specified)",
|
|
SilenceUsage: true,
|
|
RunE: func(command *cobra.Command, args []string) error {
|
|
// set default listener addresses if at least one domain is specified
|
|
if len(args) > 0 {
|
|
if httpAddr == "" {
|
|
httpAddr = "0.0.0.0:80"
|
|
}
|
|
if httpsAddr == "" {
|
|
httpsAddr = "0.0.0.0:443"
|
|
}
|
|
} else {
|
|
if httpAddr == "" {
|
|
httpAddr = "127.0.0.1:8090"
|
|
}
|
|
}
|
|
|
|
_, err := apis.Serve(app, apis.ServeConfig{
|
|
HttpAddr: httpAddr,
|
|
HttpsAddr: httpsAddr,
|
|
ShowStartBanner: showStartBanner,
|
|
AllowedOrigins: allowedOrigins,
|
|
CertificateDomains: args,
|
|
})
|
|
|
|
if errors.Is(err, http.ErrServerClosed) {
|
|
return nil
|
|
}
|
|
|
|
return err
|
|
},
|
|
}
|
|
|
|
command.PersistentFlags().StringSliceVar(
|
|
&allowedOrigins,
|
|
"origins",
|
|
[]string{"*"},
|
|
"CORS allowed domain origins list",
|
|
)
|
|
|
|
command.PersistentFlags().StringVar(
|
|
&httpAddr,
|
|
"http",
|
|
"",
|
|
"TCP address to listen for the HTTP server\n(if domain args are specified - default to 0.0.0.0:80, otherwise - default to 127.0.0.1:8090)",
|
|
)
|
|
|
|
command.PersistentFlags().StringVar(
|
|
&httpsAddr,
|
|
"https",
|
|
"",
|
|
"TCP address to listen for the HTTPS server\n(if domain args are specified - default to 0.0.0.0:443, otherwise - default to empty string, aka. no TLS)\nThe incoming HTTP traffic also will be auto redirected to the HTTPS version",
|
|
)
|
|
|
|
return command
|
|
}
|