mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 04:22:33 +08:00
fix: 带 i 属性的文件无法保存
This commit is contained in:
@@ -114,11 +114,11 @@ secrets file = /etc/rsyncd.secrets
|
||||
# ` + req.Name + `-END
|
||||
`
|
||||
|
||||
if err = io.WriteAppend("/etc/rsyncd.conf", conf); err != nil {
|
||||
if err = io.WriteAppend("/etc/rsyncd.conf", conf, 0644); err != nil {
|
||||
service.Error(w, http.StatusInternalServerError, "%v", err)
|
||||
return
|
||||
}
|
||||
if err = io.WriteAppend("/etc/rsyncd.secrets", fmt.Sprintf(`%s:%s\n`, req.AuthUser, req.Secret)); err != nil {
|
||||
if err = io.WriteAppend("/etc/rsyncd.secrets", fmt.Sprintf(`%s:%s\n`, req.AuthUser, req.Secret), 0600); err != nil {
|
||||
service.Error(w, http.StatusInternalServerError, "%v", err)
|
||||
return
|
||||
}
|
||||
@@ -216,7 +216,7 @@ secrets file = /etc/rsyncd.secrets
|
||||
service.Error(w, http.StatusInternalServerError, "%v", err)
|
||||
return
|
||||
}
|
||||
if err = io.WriteAppend("/etc/rsyncd.secrets", fmt.Sprintf(`%s:%s\n`, req.AuthUser, req.Secret)); err != nil {
|
||||
if err = io.WriteAppend("/etc/rsyncd.secrets", fmt.Sprintf(`%s:%s\n`, req.AuthUser, req.Secret), 0600); err != nil {
|
||||
service.Error(w, http.StatusInternalServerError, "%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ func (m *Postgres) PrivilegesRevoke(user, database string) error {
|
||||
|
||||
func (m *Postgres) HostAdd(database, user, host string) error {
|
||||
config := fmt.Sprintf("host %s %s %s scram-sha-256", database, user, host)
|
||||
if err := io.WriteAppend(m.hbaFile, config); err != nil {
|
||||
if err := io.WriteAppend(m.hbaFile, config, 0644); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -14,11 +14,10 @@ func Write(path string, data string, permission os.FileMode) error {
|
||||
return err
|
||||
}
|
||||
|
||||
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, permission)
|
||||
file, err := os.OpenFile(path, os.O_RDONLY, permission)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
iFlag, _ := chattr.IsAttr(file, chattr.FS_IMMUTABLE_FL)
|
||||
aFlag, _ := chattr.IsAttr(file, chattr.FS_APPEND_FL)
|
||||
@@ -29,6 +28,16 @@ func Write(path string, data string, permission os.FileMode) error {
|
||||
_ = chattr.UnsetAttr(file, chattr.FS_APPEND_FL)
|
||||
}
|
||||
|
||||
// 关闭文件重新以写入方式打开
|
||||
if err = file.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
file, err = os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, permission)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
_, err = file.WriteString(data)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -45,18 +54,27 @@ func Write(path string, data string, permission os.FileMode) error {
|
||||
}
|
||||
|
||||
// WriteAppend 追加写入文件
|
||||
func WriteAppend(path string, data string) error {
|
||||
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
|
||||
func WriteAppend(path string, data string, permission os.FileMode) error {
|
||||
file, err := os.OpenFile(path, os.O_RDONLY, permission)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
iFlag, _ := chattr.IsAttr(file, chattr.FS_IMMUTABLE_FL)
|
||||
if iFlag {
|
||||
_ = chattr.UnsetAttr(file, chattr.FS_IMMUTABLE_FL)
|
||||
}
|
||||
|
||||
// 关闭文件重新以写入方式打开
|
||||
if err = file.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
file, err = os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_APPEND, permission)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
_, err = file.WriteString(data)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -45,7 +45,7 @@ func (s *IOTestSuite) TestWriteAppendAppendsToFile() {
|
||||
appendData := ", World!"
|
||||
|
||||
s.NoError(Write(path, initialData, 0644))
|
||||
s.NoError(WriteAppend(path, appendData))
|
||||
s.NoError(WriteAppend(path, appendData, 0644))
|
||||
|
||||
content, err := Read(path)
|
||||
s.NoError(err)
|
||||
|
||||
Reference in New Issue
Block a user