server

package module
v1.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2022 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ErrNoErr = iota
	ErrBadURL
	ErrServerOffline
	ErrWebsiteOffline
	ErrDomainNotFound
	ErrSubdomainNotFound
)

Variables

View Source
var (
	HashKeyString  = "NixPare Server"
	BlockKeyString = "github.com/alessio-pareto/server"
)

Functions

func CustomLogLine

func CustomLogLine(out io.Writer, req CustomLogRequest, ts time.Time, msg string, level string)

func FullRequestAddress

func FullRequestAddress(secure bool, r *http.Request, reqURI string) (req string)

func HashToString

func HashToString(data []byte) string

func ParseCommandArgs

func ParseCommandArgs(args ...string) []string

func RandStr

func RandStr(strSize int, randType string) string

Types

type BGTimer

type BGTimer int
const (
	BGTimerMinute    BGTimer = 1
	BGTimer10Minutes BGTimer = 10
	BGTimer30Minutes BGTimer = 30
	BGTimerHour      BGTimer = 60
	BGTimerInactive  BGTimer = -1
)

type Certificate

type Certificate struct {
	CertPemPath string
	KeyPemPath  string
}

type Config

type Config struct {
	Port       int
	Secure     bool
	ServerPath string
	LogFile    *os.File
	Certs      []Certificate
}

type CustomLogRequest

type CustomLogRequest struct {
	URL        url.URL
	RemoteAddr string
}

type Domain added in v1.1.0

type Domain struct {
	Name string
	// contains filtered or unexported fields
}

func (*Domain) DefaultSubdomain added in v1.2.0

func (d *Domain) DefaultSubdomain() *Subdomain

func (*Domain) DisableSubdomain added in v1.1.0

func (d *Domain) DisableSubdomain(name string) *Domain

func (*Domain) EnableSubdomain added in v1.1.0

func (d *Domain) EnableSubdomain(name string) *Domain

func (*Domain) Header added in v1.2.0

func (d *Domain) Header() http.Header

func (*Domain) RegisterDefaultSubdomain added in v1.2.0

func (d *Domain) RegisterDefaultSubdomain(c SubdomainConfig) *Subdomain

func (*Domain) RegisterSubdomain added in v1.1.0

func (d *Domain) RegisterSubdomain(subdomain string, c SubdomainConfig) *Subdomain

func (*Domain) RemoveHeader added in v1.2.0

func (d *Domain) RemoveHeader(name string) *Domain

func (*Domain) RemoveSubdomain added in v1.1.0

func (d *Domain) RemoveSubdomain(name string) *Domain

func (*Domain) SetErrorTemplate added in v1.2.0

func (d *Domain) SetErrorTemplate(content string) error

func (*Domain) SetHeader added in v1.2.0

func (d *Domain) SetHeader(name, value string) *Domain

func (*Domain) SetHeaders added in v1.2.0

func (d *Domain) SetHeaders(headers [][2]string) *Domain

func (*Domain) Subdomain added in v1.2.0

func (d *Domain) Subdomain(subdomain string) *Subdomain

type InitCloseFunction added in v1.5.0

type InitCloseFunction func(srv *Server, domain *Domain, subdomain *Subdomain, website *Website)

type Mutex

type Mutex struct {
	// contains filtered or unexported fields
}

func NewMutex

func NewMutex() *Mutex

func (*Mutex) CreateJobs

func (m *Mutex) CreateJobs(nJobs int)

func (*Mutex) Done

func (m *Mutex) Done()

func (*Mutex) ListenForSignal

func (m *Mutex) ListenForSignal()

func (*Mutex) SendSignal

func (m *Mutex) SendSignal()

func (*Mutex) Wait

func (m *Mutex) Wait()

type Process

type Process struct {
	// contains filtered or unexported fields
}

func NewProcess

func NewProcess(name string, args ...string) *Process

func (*Process) Kill

func (p *Process) Kill() (int, error)

func (*Process) Start

func (p *Process) Start() (err error)

func (*Process) Stop

func (p *Process) Stop() (int, error)

type ResponseWriter added in v1.1.0

type ResponseWriter struct {
	// contains filtered or unexported fields
}

func (*ResponseWriter) Header added in v1.2.0

func (w *ResponseWriter) Header() http.Header

func (*ResponseWriter) Write added in v1.2.0

func (w *ResponseWriter) Write(data []byte) (int, error)

func (*ResponseWriter) WriteHeader added in v1.2.0

func (w *ResponseWriter) WriteHeader(statusCode int)

func (*ResponseWriter) WriteString added in v1.1.0

func (w *ResponseWriter) WriteString(s string) error

type Route

type Route struct {
	W             *ResponseWriter
	R             *http.Request
	Srv           *Server
	Secure        bool
	Host          string
	RemoteAddress string
	Website       *Website
	DomainName    string
	SubdomainName string
	Domain        *Domain
	Subdomain     *Subdomain
	RequestURI    string
	Method        string

	QueryMap       map[string]string
	ConnectionTime time.Time
	AvoidLogging   bool
	// contains filtered or unexported fields
}

func (*Route) DecodeCookie added in v1.2.1

func (route *Route) DecodeCookie(name string, value interface{}) (bool, error)

func (*Route) DecodeCookiePerm added in v1.2.1

func (route *Route) DecodeCookiePerm(name string, value interface{}) (bool, error)

func (*Route) DeleteCookie added in v1.2.1

func (route *Route) DeleteCookie(name string)

func (*Route) Error added in v1.2.0

func (route *Route) Error(statusCode int, messages ...string)

func (*Route) IsInternalConn added in v1.1.3

func (route *Route) IsInternalConn() bool

func (*Route) ReverseProxy added in v1.4.0

func (route *Route) ReverseProxy(URL string) error

func (*Route) ServeFile added in v1.1.0

func (route *Route) ServeFile(path string)

func (*Route) ServeHTTP

func (route *Route) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*Route) ServePlainData added in v1.1.0

func (route *Route) ServePlainData(name string, data []byte)

func (*Route) ServePlainDataWithTime added in v1.2.0

func (route *Route) ServePlainDataWithTime(name string, data []byte, t time.Time)

func (*Route) ServePlainText added in v1.1.0

func (route *Route) ServePlainText(name, text string)

func (*Route) ServePlainTextWithTime added in v1.2.0

func (route *Route) ServePlainTextWithTime(name string, text string, t time.Time)

func (*Route) ServeRootedFile added in v1.1.0

func (route *Route) ServeRootedFile(path string)

func (*Route) SetCookie added in v1.2.1

func (route *Route) SetCookie(name string, value interface{}, maxAge int) error

func (*Route) SetCookiePerm added in v1.2.1

func (route *Route) SetCookiePerm(name string, value interface{}, maxAge int) error

func (*Route) StaticServe added in v1.1.0

func (route *Route) StaticServe(serveHTML bool)

type ServeFunction added in v1.1.0

type ServeFunction func(route *Route)

type Server

type Server struct {
	Secure bool

	Running bool

	Online bool

	OnlineTimeStamp time.Time

	StartTimestamp time.Time

	Server *http.Server

	LogFile *os.File

	ServerPath string
	// contains filtered or unexported fields
}

func NewServer

func NewServer(cfg Config) (srv *Server, err error)

func (*Server) CreateCookie

func (srv *Server) CreateCookie(name string) error

func (*Server) DefaultDomain added in v1.2.0

func (srv *Server) DefaultDomain() *Domain

func (*Server) Domain added in v1.1.0

func (srv *Server) Domain(domain string) *Domain

func (*Server) ExecIsRunning

func (srv *Server) ExecIsRunning(name string) (bool, error)

func (*Server) Header added in v1.2.0

func (srv *Server) Header() http.Header

func (*Server) ReadFileConcurrent

func (srv *Server) ReadFileConcurrent(filePath string) ([]byte, error)

func (*Server) RegisterBackgroundTask

func (srv *Server) RegisterBackgroundTask(name string, task *Task, timer BGTimer)

func (*Server) RegisterDefaultDomain added in v1.2.0

func (srv *Server) RegisterDefaultDomain(displayName string) *Domain

func (*Server) RegisterDefaultRoute added in v1.2.0

func (srv *Server) RegisterDefaultRoute(displayName string, c SubdomainConfig) (*Domain, *Subdomain)

func (*Server) RegisterDomain added in v1.1.0

func (srv *Server) RegisterDomain(displayName, domain string) *Domain

func (*Server) RegisterExec

func (srv *Server) RegisterExec(name, dir string, redirect bool, execName string, args ...string) error

func (*Server) RegisterExecAndStart

func (srv *Server) RegisterExecAndStart(name, dir string, redirect bool, execName string, args ...string) error

func (*Server) RemoveHeader added in v1.2.0

func (srv *Server) RemoveHeader(name string) *Server

func (*Server) RestartExec

func (srv *Server) RestartExec(name string) error

func (*Server) Run added in v1.1.0

func (srv *Server) Run()

func (*Server) SetBackgroundTaskState

func (srv *Server) SetBackgroundTaskState(name string, timer BGTimer) error

func (*Server) SetErrorTemplate added in v1.2.0

func (srv *Server) SetErrorTemplate(content string) error

func (*Server) SetHeader added in v1.2.0

func (srv *Server) SetHeader(name, value string) *Server

func (*Server) SetHeaders added in v1.2.0

func (srv *Server) SetHeaders(headers [][2]string) *Server

func (*Server) SetInternalConnFilter added in v1.1.2

func (srv *Server) SetInternalConnFilter(f func(remoteAddress string) bool) *Server

func (*Server) ShutdownServer

func (srv *Server) ShutdownServer()

func (*Server) Start added in v1.1.1

func (srv *Server) Start()

func (*Server) StartExec

func (srv *Server) StartExec(name string) error

func (*Server) StartProgram

func (srv *Server) StartProgram(name string, args []string, dir string, wait bool, stdin, stdout, stderr string) (exitCode int, err error)

func (*Server) StopAllExecs

func (srv *Server) StopAllExecs()

func (*Server) StopExec

func (srv *Server) StopExec(name string) error

func (*Server) Wait

func (srv *Server) Wait()

func (*Server) WriteLogClosure

func (srv *Server) WriteLogClosure(t time.Time)

func (*Server) WriteLogStart

func (srv *Server) WriteLogStart(t time.Time)

type Subdomain added in v1.1.0

type Subdomain struct {
	Name string
	// contains filtered or unexported fields
}

func (*Subdomain) Disable added in v1.1.0

func (sd *Subdomain) Disable() *Subdomain

func (*Subdomain) Enable added in v1.1.0

func (sd *Subdomain) Enable() *Subdomain

func (*Subdomain) Header added in v1.2.0

func (sd *Subdomain) Header() http.Header

func (*Subdomain) RemoveHeader added in v1.2.0

func (sd *Subdomain) RemoveHeader(name string) *Subdomain

func (*Subdomain) SetErrorTemplate added in v1.2.0

func (sd *Subdomain) SetErrorTemplate(content string) error

func (*Subdomain) SetHeader added in v1.2.0

func (sd *Subdomain) SetHeader(name, value string) *Subdomain

func (*Subdomain) SetHeaders added in v1.2.0

func (sd *Subdomain) SetHeaders(headers [][2]string) *Subdomain

type SubdomainConfig added in v1.1.3

type SubdomainConfig struct {
	Website Website
	ServeF  ServeFunction
	InitF   InitCloseFunction
	CloseF  InitCloseFunction
}

type Task

type Task struct {
	Object      interface{}
	StartupFunc TaskFunc
	ExecFunc    TaskFunc
	CleanupFunc TaskFunc
}

type TaskFunc

type TaskFunc func(srv *Server, t *Task)

type Website

type Website struct {
	Name                   string
	Dir                    string
	MainPages              []string
	NoLogPages             []string
	AllFolders             []string
	HiddenFolders          []string
	PageHeaders            map[string][][2]string
	Cookies                []string
	EnableCSSX             bool
	AvoidCompression       bool
	AvoidMetricsAndLogging bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL