package rui import ( _ "embed" "strings" ) //go:embed app_scripts.js var defaultScripts string //go:embed app_styles.css var appStyles string //go:embed defaultTheme.rui var defaultThemeText string // Application represent generic application interface, see also [Session] type Application interface { // Finish finishes the application Finish() // Params returns application parameters set by StartApp function Params() AppParams removeSession(id int) } // AppParams defines parameters of the app type AppParams struct { // Title - title of the app window/tab Title string // TitleColor - background color of the app window/tab (applied only for Safari and Chrome for Android) TitleColor Color // Icon - the icon file name Icon string // CertFile - path of a certificate for the server must be provided // if neither the Server's TLSConfig.Certificates nor TLSConfig.GetCertificate are populated. // If the certificate is signed by a certificate authority, the certFile should be the concatenation // of the server's certificate, any intermediates, and the CA's certificate. CertFile string AutoCertDomain string // KeyFile - path of a private key for the server must be provided // if neither the Server's TLSConfig.Certificates nor TLSConfig.GetCertificate are populated. KeyFile string // Redirect80 - if true then the function of redirect from port 80 to 443 is created Redirect80 bool // NoSocket - if true then WebSockets will not be used and information exchange // between the client and the server will be carried out only via http. NoSocket bool // SocketAutoClose - time in seconds after which the socket is automatically closed for an inactive session. // The countdown begins after the OnPause event arrives. // If the value of this property is less than or equal to 0 then the socket is not closed. SocketAutoClose int } func getStartPage(buffer *strings.Builder, params AppParams) { buffer.WriteString(`