From 9d51a9e5e6943cbbfcf0c6db1cd87c924153de2c Mon Sep 17 00:00:00 2001 From: netbenix Date: Sat, 5 Feb 2022 15:40:12 +0100 Subject: [PATCH 1/4] style(Naming): Renamed Command funcs correctly --- Commands/GenerateDefaultConfigs.go | 2 +- Commands/StartBackupProc.go | 79 ++++++++++++++++-------------- main.go | 4 +- 3 files changed, 44 insertions(+), 41 deletions(-) diff --git a/Commands/GenerateDefaultConfigs.go b/Commands/GenerateDefaultConfigs.go index 3e35915..eedacad 100644 --- a/Commands/GenerateDefaultConfigs.go +++ b/Commands/GenerateDefaultConfigs.go @@ -8,7 +8,7 @@ import ( "scabiosa/Tools" ) -func GenerateNewConfigs() *cli.Command { +func GenerateNewConfigsCommand() *cli.Command { logger := Logging.Logger("generate-configs") return &cli.Command{ diff --git a/Commands/StartBackupProc.go b/Commands/StartBackupProc.go index 97ee12a..58e82ff 100644 --- a/Commands/StartBackupProc.go +++ b/Commands/StartBackupProc.go @@ -12,7 +12,7 @@ import ( "time" ) -func StartBackupProc() *cli.Command { +func StartBackupProcCommand() *cli.Command { logger := Logging.Logger("backup") return &cli.Command{ @@ -21,43 +21,7 @@ func StartBackupProc() *cli.Command { Description: "Compresses and uploads/stores the backups", HelpName: "backup", Action: func(c *cli.Context) error { - Tools.CheckIfConfigExists() - config := Tools.GetConfig() - - SQL.CreateDefaultTables(SQL.GetSQLInstance()) - - for _, backupItem := range config.FolderToBackup { - - var storage StorageTypes.Storage - var destPath string - - if backupItem.RemoteStorageType != "none" { - storage = StorageTypes.CheckStorageType(backupItem.RemoteStorageType) - destPath = checkTmpPath(backupItem.CreateLocalBackup, backupItem.LocalTargetPath) - } else { - destPath = backupItem.LocalTargetPath - } - - bakFile := Compressor.CreateBakFile(backupItem.BackupName+getTimeSuffix(), backupItem.FolderPath, destPath, backupItem.BackupName) - - if backupItem.RemoteStorageType != "none" { - StorageTypes.UploadFile(storage, bakFile, backupItem.BackupName, backupItem.RemoteTargetPath) - } - - if !backupItem.CreateLocalBackup && backupItem.RemoteStorageType != "none" { - backupItem.LocalTargetPath = "NONE" - - _ = os.Remove(bakFile) - SQL.NewLogEntry(SQL.GetSQLInstance(), uuid.New(), SQL.LogInfo, backupItem.BackupName, SQL.SQLStage_DeleteTmp, SQL.REMOTE_NONE, "Deleted tmp file", time.Now()) - } - - if backupItem.RemoteStorageType == "none" { - backupItem.CreateLocalBackup = true - backupItem.RemoteTargetPath = "NONE" - } - SQL.NewBackupEntry(SQL.GetSQLInstance(), backupItem.BackupName, time.Now(), backupItem.CreateLocalBackup, backupItem.FolderPath, StorageTypes.CheckRemoteStorageType(backupItem.RemoteStorageType), backupItem.RemoteTargetPath, backupItem.LocalTargetPath) - } - + StartBackupProc() return nil }, OnUsageError: func(cc *cli.Context, err error, isSubcommand bool) error { @@ -69,6 +33,45 @@ func StartBackupProc() *cli.Command { } } +func StartBackupProc() { + Tools.CheckIfConfigExists() + config := Tools.GetConfig() + + SQL.CreateDefaultTables(SQL.GetSQLInstance()) + + for _, backupItem := range config.FolderToBackup { + + var storage StorageTypes.Storage + var destPath string + + if backupItem.RemoteStorageType != "none" { + storage = StorageTypes.CheckStorageType(backupItem.RemoteStorageType) + destPath = checkTmpPath(backupItem.CreateLocalBackup, backupItem.LocalTargetPath) + } else { + destPath = backupItem.LocalTargetPath + } + + bakFile := Compressor.CreateBakFile(backupItem.BackupName+getTimeSuffix(), backupItem.FolderPath, destPath, backupItem.BackupName) + + if backupItem.RemoteStorageType != "none" { + StorageTypes.UploadFile(storage, bakFile, backupItem.BackupName, backupItem.RemoteTargetPath) + } + + if !backupItem.CreateLocalBackup && backupItem.RemoteStorageType != "none" { + backupItem.LocalTargetPath = "NONE" + + _ = os.Remove(bakFile) + SQL.NewLogEntry(SQL.GetSQLInstance(), uuid.New(), SQL.LogInfo, backupItem.BackupName, SQL.SQLStage_DeleteTmp, SQL.REMOTE_NONE, "Deleted tmp file", time.Now()) + } + + if backupItem.RemoteStorageType == "none" { + backupItem.CreateLocalBackup = true + backupItem.RemoteTargetPath = "NONE" + } + SQL.NewBackupEntry(SQL.GetSQLInstance(), backupItem.BackupName, time.Now(), backupItem.CreateLocalBackup, backupItem.FolderPath, StorageTypes.CheckRemoteStorageType(backupItem.RemoteStorageType), backupItem.RemoteTargetPath, backupItem.LocalTargetPath) + } +} + func getTimeSuffix() string { currTime := time.Now() diff --git a/main.go b/main.go index f6dbfa8..11bd6eb 100644 --- a/main.go +++ b/main.go @@ -21,8 +21,8 @@ func main() { }, Copyright: "(c) 2021-2022 netbenix", Commands: []*cli.Command{ - Commands.StartBackupProc(), - Commands.GenerateNewConfigs(), + Commands.StartBackupProcCommand(), + Commands.GenerateNewConfigsCommand(), }, } From 25eca89a1f51c4678666605d16a572a9ac6fc17b Mon Sep 17 00:00:00 2001 From: netbenix Date: Sat, 5 Feb 2022 15:40:40 +0100 Subject: [PATCH 2/4] refactor(go.mod): Added go-svc package --- go.mod | 3 ++- go.sum | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 12aac11..e6d3abe 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,10 @@ require github.com/sirupsen/logrus v1.8.1 require ( github.com/Azure/azure-storage-file-go v0.8.0 github.com/cheggaaa/pb/v3 v3.0.8 + github.com/denisenkom/go-mssqldb v0.11.0 github.com/go-sql-driver/mysql v1.6.0 github.com/google/uuid v1.3.0 + github.com/judwhite/go-svc v1.2.1 github.com/urfave/cli/v2 v2.3.0 ) @@ -16,7 +18,6 @@ require ( github.com/Azure/azure-pipeline-go v0.2.1 // indirect github.com/VividCortex/ewma v1.1.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d // indirect - github.com/denisenkom/go-mssqldb v0.11.0 // indirect github.com/fatih/color v1.10.0 // indirect github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect github.com/mattn/go-colorable v0.1.8 // indirect diff --git a/go.sum b/go.sum index e5ebb45..cdf2cf6 100644 --- a/go.sum +++ b/go.sum @@ -21,6 +21,8 @@ github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZ github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/judwhite/go-svc v1.2.1 h1:a7fsJzYUa33sfDJRF2N/WXhA+LonCEEY8BJb1tuS5tA= +github.com/judwhite/go-svc v1.2.1/go.mod h1:mo/P2JNX8C07ywpP9YtO2gnBgnUiFTHqtsZekJrUuTk= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -62,6 +64,7 @@ golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= From cd700be26ce5adfe36713017d4ac8a9fc6cf6f1e Mon Sep 17 00:00:00 2001 From: netbenix Date: Sat, 5 Feb 2022 15:41:00 +0100 Subject: [PATCH 3/4] feat(WindowsSrvc): Implemented Base of service --- Service/WindowsService.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Service/WindowsService.go diff --git a/Service/WindowsService.go b/Service/WindowsService.go new file mode 100644 index 0000000..4cd20b1 --- /dev/null +++ b/Service/WindowsService.go @@ -0,0 +1,39 @@ +package Service + +import ( + "github.com/judwhite/go-svc" + "log" + "sync" +) + +type program struct { + wg sync.WaitGroup + quit chan struct{} +} + +//TODO: replace all the 'log' crap with an actual logger. + +func (p *program) Init(env svc.Environment) error { + log.Printf("is win service? %v\n", env.IsWindowsService()) + return nil +} + +func (p *program) Start() error { + p.quit = make(chan struct{}) + + p.wg.Add(1) + go func() { + //Do stuff + }() + + return nil +} + +func (p *program) Stop() error { + log.Println("Stopping...") + close(p.quit) + p.wg.Wait() + log.Println("Stopped.") + + return nil +} From 06b8631ca3268e4d483e0a52e36d743f24ac77f8 Mon Sep 17 00:00:00 2001 From: netbenix Date: Sat, 19 Feb 2022 17:38:16 +0100 Subject: [PATCH 4/4] style(DeepSource): Added two ignores --- Commands/StartBackupProc.go | 1 + Compressor/Compression.go | 11 ++++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Commands/StartBackupProc.go b/Commands/StartBackupProc.go index 58e82ff..0cb6c25 100644 --- a/Commands/StartBackupProc.go +++ b/Commands/StartBackupProc.go @@ -78,6 +78,7 @@ func getTimeSuffix() string { return "_" + currTime.Format("02-01-2006_15-04") } +// skipcq: RVV-A0005 func checkTmpPath(createLocalBackup bool, targetPath string) string { logger := Logging.DetailedLogger("mainThread", "checkTmpPath") if !createLocalBackup { diff --git a/Compressor/Compression.go b/Compressor/Compression.go index eba1707..b11bac0 100644 --- a/Compressor/Compression.go +++ b/Compressor/Compression.go @@ -19,21 +19,18 @@ func CreateBakFile(fileName string, folderPath string, destinationPath string, b pathToFile := destinationPath + string(os.PathSeparator) + fileName + ".bak" - fileToWrite, err := os.OpenFile(pathToFile, os.O_CREATE|os.O_RDWR, os.FileMode(0775)) if err != nil { logger.Fatal(err) } compress(fileToWrite, folderPath, backupName) - SQL.NewLogEntry(SQL.GetSQLInstance(), uuid.New(), SQL.LogInfo, backupName, SQL.SQLStage_Compress, SQL.REMOTE_NONE, "File successfully written.", time.Now()) - return pathToFile } -func compress(fileToWrite *os.File, folderPath string, backupName string){ +func compress(fileToWrite *os.File, folderPath string, backupName string) { logger := Logging.DetailedLogger("Gzip", "compress") zr, _ := gzip.NewWriterLevel(fileToWrite, flate.BestCompression) @@ -41,6 +38,7 @@ func compress(fileToWrite *os.File, folderPath string, backupName string){ go fmt.Printf("[%s] Start compression...\n", backupName) SQL.NewLogEntry(SQL.GetSQLInstance(), uuid.New(), SQL.LogInfo, backupName, SQL.SQLStage_Compress, SQL.REMOTE_NONE, "Start compression", time.Now()) + // skippcq: SCC-SA4009 filepath.Walk(folderPath, func(file string, fi os.FileInfo, err error) error { header, err := tar.FileInfoHeader(fi, file) if err != nil { @@ -54,7 +52,7 @@ func compress(fileToWrite *os.File, folderPath string, backupName string){ logger.Fatal(err) } - if !fi.IsDir(){ + if !fi.IsDir() { data, err := os.Open(file) if err != nil { logger.Fatal(err) @@ -77,7 +75,6 @@ func compress(fileToWrite *os.File, folderPath string, backupName string){ logger.Fatal(err) } - go fmt.Printf("[%s] Compression Done.\n", backupName) SQL.NewLogEntry(SQL.GetSQLInstance(), uuid.New(), SQL.LogInfo, backupName, SQL.SQLStage_Compress, SQL.REMOTE_NONE, "Compression complete.", time.Now()) -} \ No newline at end of file +}