2024-09-10 23:01:26 +02:00
|
|
|
// Package pkg /
|
|
|
|
|
/*****
|
|
|
|
|
@author Jonas Kaninda
|
|
|
|
|
@license MIT License <https://opensource.org/licenses/MIT>
|
|
|
|
|
@Copyright © 2024 Jonas Kaninda
|
|
|
|
|
**/
|
2024-08-03 16:03:17 +02:00
|
|
|
package pkg
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/jkaninda/mysql-bkup/utils"
|
|
|
|
|
"os"
|
|
|
|
|
"os/exec"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func Decrypt(inputFile string, passphrase string) error {
|
|
|
|
|
utils.Info("Decrypting backup file: " + inputFile + " ...")
|
2024-08-30 19:58:12 +02:00
|
|
|
//Create gpg home dir
|
|
|
|
|
err := utils.MakeDir(gpgHome)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
utils.SetEnv("GNUPGHOME", gpgHome)
|
2024-08-03 16:03:17 +02:00
|
|
|
cmd := exec.Command("gpg", "--batch", "--passphrase", passphrase, "--output", RemoveLastExtension(inputFile), "--decrypt", inputFile)
|
|
|
|
|
cmd.Stdout = os.Stdout
|
|
|
|
|
cmd.Stderr = os.Stderr
|
|
|
|
|
|
2024-08-30 19:58:12 +02:00
|
|
|
err = cmd.Run()
|
2024-08-03 16:03:17 +02:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
utils.Info("Backup file decrypted successful!")
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Encrypt(inputFile string, passphrase string) error {
|
|
|
|
|
utils.Info("Encrypting backup...")
|
2024-08-30 19:58:12 +02:00
|
|
|
//Create gpg home dir
|
|
|
|
|
err := utils.MakeDir(gpgHome)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
utils.SetEnv("GNUPGHOME", gpgHome)
|
2024-08-03 16:03:17 +02:00
|
|
|
cmd := exec.Command("gpg", "--batch", "--passphrase", passphrase, "--symmetric", "--cipher-algo", algorithm, inputFile)
|
|
|
|
|
cmd.Stdout = os.Stdout
|
|
|
|
|
cmd.Stderr = os.Stderr
|
|
|
|
|
|
2024-08-30 19:58:12 +02:00
|
|
|
err = cmd.Run()
|
2024-08-03 16:03:17 +02:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
utils.Info("Backup file encrypted successful!")
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func RemoveLastExtension(filename string) string {
|
|
|
|
|
if idx := strings.LastIndex(filename, "."); idx != -1 {
|
|
|
|
|
return filename[:idx]
|
|
|
|
|
}
|
|
|
|
|
return filename
|
|
|
|
|
}
|