Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/web/job
diff options
context:
space:
mode:
authormhsanaei <ho3ein.sanaei@gmail.com>2024-06-24 10:57:20 +0300
committermhsanaei <ho3ein.sanaei@gmail.com>2024-06-24 10:57:46 +0300
commit2486b5ff4309d39beed42a6f69b5b4223b985cb6 (patch)
tree756c7e7bac70445bafd44cfbd16f014bb5b04e62 /web/job
parent58647c6496f3db901d3bdff107e8cd0a06243141 (diff)
ensure file exists
Diffstat (limited to 'web/job')
-rw-r--r--web/job/clear_logs_job.go50
1 files changed, 38 insertions, 12 deletions
diff --git a/web/job/clear_logs_job.go b/web/job/clear_logs_job.go
index c0291131..c6f1d7cc 100644
--- a/web/job/clear_logs_job.go
+++ b/web/job/clear_logs_job.go
@@ -3,6 +3,7 @@ package job
import (
"io"
"os"
+ "path/filepath"
"x-ui/logger"
"x-ui/xray"
@@ -14,28 +15,53 @@ func NewClearLogsJob() *ClearLogsJob {
return new(ClearLogsJob)
}
+// ensureFileExists creates the necessary directories and file if they don't exist
+func ensureFileExists(path string) error {
+ dir := filepath.Dir(path)
+ if err := os.MkdirAll(dir, 0755); err != nil {
+ return err
+ }
+
+ file, err := os.OpenFile(path, os.O_CREATE|os.O_RDWR, 0644)
+ if err != nil {
+ return err
+ }
+ file.Close()
+ return nil
+}
+
// Here Run is an interface method of the Job interface
func (j *ClearLogsJob) Run() {
logFiles := []string{xray.GetIPLimitLogPath(), xray.GetIPLimitBannedLogPath(), xray.GetAccessPersistentLogPath()}
logFilesPrev := []string{xray.GetIPLimitBannedPrevLogPath(), xray.GetAccessPersistentPrevLogPath()}
- // clear log files and copy to previous logs
+ // Ensure all log files and their paths exist
+ for _, path := range append(logFiles, logFilesPrev...) {
+ if err := ensureFileExists(path); err != nil {
+ logger.Warning("Failed to ensure log file exists:", path, "-", err)
+ }
+ }
+
+ // Clear log files and copy to previous logs
for i := 0; i < len(logFiles); i++ {
if i > 0 {
- // copy to previous logs
+ // Copy to previous logs
logFilePrev, err := os.OpenFile(logFilesPrev[i-1], os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
if err != nil {
- logger.Warning("clear logs job err:", err)
+ logger.Warning("Failed to open previous log file for writing:", logFilesPrev[i-1], "-", err)
+ continue
+ }
+
+ logFile, err := os.OpenFile(logFiles[i], os.O_RDONLY, 0644)
+ if err != nil {
+ logger.Warning("Failed to open current log file for reading:", logFiles[i], "-", err)
+ logFilePrev.Close()
+ continue
}
- logFile, err := os.OpenFile(logFiles[i], os.O_CREATE|os.O_RDONLY, 0644)
- if err == nil {
- _, err = io.Copy(logFilePrev, logFile)
- if err != nil {
- logger.Warning("clear logs job err:", err)
- }
- } else {
- logger.Warning("clear logs job err:", err)
+ _, err = io.Copy(logFilePrev, logFile)
+ if err != nil {
+ logger.Warning("Failed to copy log file:", logFiles[i], "to", logFilesPrev[i-1], "-", err)
}
logFile.Close()
@@ -44,7 +70,7 @@ func (j *ClearLogsJob) Run() {
err := os.Truncate(logFiles[i], 0)
if err != nil {
- logger.Warning("clear logs job err:", err)
+ logger.Warning("Failed to truncate log file:", logFiles[i], "-", err)
}
}
}