1
0
mirror of https://github.com/vwxyzjn/portwarden synced 2025-12-10 13:23:34 +00:00
Files
portwarden/web/worker/main.go
2018-12-06 11:00:04 -05:00

82 lines
1.9 KiB
Go

package main
import (
"fmt"
"os"
"time"
"github.com/davecgh/go-spew/spew"
"github.com/vwxyzjn/portwarden"
"github.com/vwxyzjn/portwarden/web"
"github.com/vwxyzjn/portwarden/web/scheduler/server"
)
func main() {
web.InitCommonVars()
web.MachineryServer.RegisterTasks(map[string]interface{}{
"BackupToGoogleDrive": BackupToGoogleDrive,
})
worker := web.MachineryServer.NewWorker("worker_name", 0)
err := worker.Launch()
if err != nil {
panic(err)
}
}
func BackupToGoogleDrive(email string) error {
time.Sleep(time.Millisecond * 400)
web.GlobalMutex.Lock()
defer web.GlobalMutex.Unlock()
name, err := os.Hostname()
if err != nil {
return err
}
fmt.Println("BackupToGoogleDrive called from worker:", name)
// Check whether user cancelled backup
pu := server.PortwardenUser{Email: email}
err = pu.Get()
if err != nil {
return err
}
if !pu.BackupSetting.WillSetupBackup {
fmt.Printf("user %v cancelled backup \n", pu.Email)
return nil
}
encryptedData, err := portwarden.CreateBackupBytesUsingBitwardenLocalJSON(pu.BitwardenDataJSON, web.BITWARDENCLI_APPDATA_DIR, pu.BackupSetting.Passphrase, pu.BitwardenSessionKey, web.BackupDefaultSleepMilliseconds)
if err != nil {
spew.Dump("BackupToGoogleDrive has an error", err)
return err
}
newToken, err := server.UploadFile(encryptedData, pu.GoogleToken)
if err != nil {
return err
}
pu.GoogleToken = newToken
// Check whether user cancelled backup
opu := server.PortwardenUser{Email: email}
err = opu.Get()
if err != nil {
return err
}
if !opu.BackupSetting.WillSetupBackup {
fmt.Printf("user %v cancelled backup \n", pu.Email)
return nil
}
eta := time.Now().UTC().Add(time.Second * time.Duration(pu.BackupSetting.BackupFrequencySeconds))
err = pu.SetupAutomaticBackup(&eta)
if err != nil {
return err
}
// Update the access token
err = pu.Set()
if err != nil {
return err
}
return nil
}