mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 07:57:21 +08:00
fix: 优化指令排序
This commit is contained in:
@@ -236,6 +236,18 @@ func (r *websiteRepo) Create(req *request.WebsiteCreate) (*biz.Website, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 创建配置文件目录
|
||||
if err = os.MkdirAll(filepath.Join(app.Root, "sites", req.Name, "config", "site"), 0644); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = os.MkdirAll(filepath.Join(app.Root, "sites", req.Name, "config", "shared"), 0644); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 创建日志目录
|
||||
if err = os.MkdirAll(filepath.Join(app.Root, "sites", req.Name, "log"), 0644); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 监听地址
|
||||
var listens []webservertypes.Listen
|
||||
for _, listen := range req.Listens {
|
||||
@@ -263,19 +275,6 @@ func (r *websiteRepo) Create(req *request.WebsiteCreate) (*biz.Website, error) {
|
||||
if err = vhost.SetErrorLog(filepath.Join(app.Root, "sites", req.Name, "log", "error.log")); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 创建配置文件目录
|
||||
if err = os.MkdirAll(filepath.Join(app.Root, "sites", req.Name, "config", "site"), 0644); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = os.MkdirAll(filepath.Join(app.Root, "sites", req.Name, "config", "shared"), 0644); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 创建日志目录
|
||||
if err = os.MkdirAll(filepath.Join(app.Root, "sites", req.Name, "log"), 0644); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 404 页面
|
||||
// TODO 需要兼容 Apache
|
||||
if err = vhost.SetConfig("010-error-404.conf", "site", `error_page 404 /404.html;`); err != nil {
|
||||
|
||||
@@ -200,7 +200,7 @@ func (p *Parser) Dump() string {
|
||||
// Save 保存配置到文件
|
||||
func (p *Parser) Save() error {
|
||||
p.sortDirectives(p.cfg.Directives, order)
|
||||
content := p.Dump()
|
||||
content := p.Dump() + "\n"
|
||||
if err := os.WriteFile(p.cfgPath, []byte(content), 0644); err != nil {
|
||||
return fmt.Errorf("failed to save config file: %w", err)
|
||||
}
|
||||
@@ -215,6 +215,18 @@ func (p *Parser) SetConfigPath(path string) {
|
||||
|
||||
func (p *Parser) sortDirectives(directives []config.IDirective, orderIndex map[string]int) {
|
||||
slices.SortFunc(directives, func(a config.IDirective, b config.IDirective) int {
|
||||
// 块指令(如 server、location)应该排在普通指令(如 include)后面
|
||||
aIsBlock := a.GetBlock() != nil && len(a.GetBlock().GetDirectives()) > 0
|
||||
bIsBlock := b.GetBlock() != nil && len(b.GetBlock().GetDirectives()) > 0
|
||||
|
||||
if aIsBlock != bIsBlock {
|
||||
if aIsBlock {
|
||||
return 1 // a 是块指令,排在后面
|
||||
}
|
||||
return -1 // b 是块指令,排在前面
|
||||
}
|
||||
|
||||
// 同类指令,按 order 排序
|
||||
if orderIndex[a.GetName()] != orderIndex[b.GetName()] {
|
||||
return orderIndex[a.GetName()] - orderIndex[b.GetName()]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user