2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 13:47:15 +08:00
Files
panel/pkg/nginx/getter.go
2024-10-14 03:32:51 +08:00

164 lines
3.2 KiB
Go

package nginx
import (
"fmt"
"slices"
"strings"
)
func (p *Parser) GetListen() ([][]string, error) {
directives, err := p.Find("server.listen")
if err != nil {
return nil, err
}
var result [][]string
for _, dir := range directives {
result = append(result, dir.GetParameters())
}
return result, nil
}
func (p *Parser) GetServerName() ([]string, error) {
directive, err := p.FindOne("server.server_name")
if err != nil {
return nil, err
}
return directive.GetParameters(), nil
}
func (p *Parser) GetIndex() ([]string, error) {
directive, err := p.FindOne("server.index")
if err != nil {
return nil, err
}
return directive.GetParameters(), nil
}
func (p *Parser) GetRoot() (string, error) {
directive, err := p.FindOne("server.root")
if err != nil {
return "", err
}
if len(directive.GetParameters()) == 0 {
return "", nil
}
return directive.GetParameters()[0], nil
}
func (p *Parser) GetIncludes() ([]string, error) {
directives, err := p.Find("server.include")
if err != nil {
return nil, err
}
var result []string
for _, dir := range directives {
result = append(result, dir.GetParameters()...)
}
return result, nil
}
func (p *Parser) GetPHP() (int, error) {
directives, err := p.Find("server.include")
if err != nil {
return 0, err
}
var result int
for _, dir := range directives {
if slices.ContainsFunc(dir.GetParameters(), func(s string) bool {
return strings.HasPrefix(s, "enable-php-") && strings.HasSuffix(s, ".conf")
}) {
_, err = fmt.Sscanf(dir.GetParameters()[0], "enable-php-%d.conf", &result)
}
}
return result, err
}
func (p *Parser) GetHTTPS() bool {
directive, err := p.FindOne("server.ssl_certificate")
if err != nil {
return false
}
if len(directive.GetParameters()) == 0 {
return false
}
return true
}
func (p *Parser) GetOCSP() (bool, error) {
directive, err := p.FindOne("server.ssl_stapling")
if err != nil {
return false, err
}
if len(directive.GetParameters()) == 0 {
return false, nil
}
return directive.GetParameters()[0] == "on", nil
}
func (p *Parser) GetHSTS() (bool, error) {
directives, err := p.Find("server.add_header")
if err != nil {
return false, err
}
for _, dir := range directives {
if slices.Contains(dir.GetParameters(), "Strict-Transport-Security") {
return true, nil
}
}
return false, nil
}
func (p *Parser) GetHTTPRedirect() (bool, error) {
directives, err := p.Find("server.if")
if err != nil {
return false, err
}
for _, dir := range directives {
for _, dir2 := range dir.GetBlock().GetDirectives() {
if dir2.GetName() == "return" && slices.Contains(dir2.GetParameters(), "https://$host$request_uri") {
return true, nil
}
}
}
return false, nil
}
func (p *Parser) GetAccessLog() (string, error) {
directive, err := p.FindOne("server.access_log")
if err != nil {
return "", err
}
if len(directive.GetParameters()) == 0 {
return "", nil
}
return directive.GetParameters()[0], nil
}
func (p *Parser) GetErrorLog() (string, error) {
directive, err := p.FindOne("server.error_log")
if err != nil {
return "", err
}
if len(directive.GetParameters()) == 0 {
return "", nil
}
return directive.GetParameters()[0], nil
}