Add sync return url
This commit is contained in:
parent
d0e0d66509
commit
f3196863bb
@ -19,9 +19,11 @@ func handleCreateSend(msg messages.IPCMessage, cfg *config.Config, vault *vault.
|
|||||||
parsedMsg := messages.ParsePayload(msg).(messages.CreateSendRequest)
|
parsedMsg := messages.ParsePayload(msg).(messages.CreateSendRequest)
|
||||||
|
|
||||||
ctx := context.WithValue(context.TODO(), bitwarden.AuthToken{}, token.AccessToken)
|
ctx := context.WithValue(context.TODO(), bitwarden.AuthToken{}, token.AccessToken)
|
||||||
_, err = bitwarden.CreateSend(ctx, cfg, vault, parsedMsg.Name, parsedMsg.Text)
|
url, err := bitwarden.CreateSend(ctx, cfg, vault, parsedMsg.Name, parsedMsg.Text)
|
||||||
|
|
||||||
response, err = messages.IPCMessageFromPayload(messages.CreateSendResponse{})
|
response, err = messages.IPCMessageFromPayload(messages.CreateSendResponse{
|
||||||
|
URL: url,
|
||||||
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,9 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
|
"encoding/base64"
|
||||||
"io"
|
"io"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/quexten/goldwarden/agent/bitwarden/crypto"
|
"github.com/quexten/goldwarden/agent/bitwarden/crypto"
|
||||||
@ -38,6 +40,8 @@ type SendMetadata struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type SendCreateRequest struct {
|
type SendCreateRequest struct {
|
||||||
|
AccessCount *int `json:"accessCount"`
|
||||||
|
AccessId *string `json:"accessId"`
|
||||||
DeletionDate string `json:"deletionDate"`
|
DeletionDate string `json:"deletionDate"`
|
||||||
Disabled bool `json:"disabled"`
|
Disabled bool `json:"disabled"`
|
||||||
ExpirationDate *string `json:"expirationDate"`
|
ExpirationDate *string `json:"expirationDate"`
|
||||||
@ -50,7 +54,7 @@ type SendCreateRequest struct {
|
|||||||
Type int `json:"type"`
|
Type int `json:"type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateSend(ctx context.Context, cfg *config.Config, vault *vault.Vault, name string, text string) (SendMetadata, error) {
|
func CreateSend(ctx context.Context, cfg *config.Config, vault *vault.Vault, name string, text string) (string, error) {
|
||||||
timestampIn14Days := time.Now().AddDate(0, 0, 14)
|
timestampIn14Days := time.Now().AddDate(0, 0, 14)
|
||||||
timestampIn14DaysStr := timestampIn14Days.Format("2006-01-02T15:04:05Z")
|
timestampIn14DaysStr := timestampIn14Days.Format("2006-01-02T15:04:05Z")
|
||||||
|
|
||||||
@ -58,12 +62,12 @@ func CreateSend(ctx context.Context, cfg *config.Config, vault *vault.Vault, nam
|
|||||||
sendSourceKey := make([]byte, 32)
|
sendSourceKey := make([]byte, 32)
|
||||||
_, err := io.ReadFull(rand.Reader, sendSourceKey)
|
_, err := io.ReadFull(rand.Reader, sendSourceKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return SendMetadata{}, err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
encryptedSendSourceKey, err := crypto.EncryptWithToString(sendSourceKey, crypto.AesCbc256_HmacSha256_B64, vault.Keyring.GetAccountKey())
|
encryptedSendSourceKey, err := crypto.EncryptWithToString(sendSourceKey, crypto.AesCbc256_HmacSha256_B64, vault.Keyring.GetAccountKey())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return SendMetadata{}, err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
sendUseKeyPairBytes := make([]byte, 64)
|
sendUseKeyPairBytes := make([]byte, 64)
|
||||||
@ -71,17 +75,17 @@ func CreateSend(ctx context.Context, cfg *config.Config, vault *vault.Vault, nam
|
|||||||
|
|
||||||
sendUseKeyPair, err := crypto.MemorySymmetricEncryptionKeyFromBytes(sendUseKeyPairBytes)
|
sendUseKeyPair, err := crypto.MemorySymmetricEncryptionKeyFromBytes(sendUseKeyPairBytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return SendMetadata{}, err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
encryptedName, err := crypto.EncryptWithToString([]byte(name), crypto.AesCbc256_HmacSha256_B64, sendUseKeyPair)
|
encryptedName, err := crypto.EncryptWithToString([]byte(name), crypto.AesCbc256_HmacSha256_B64, sendUseKeyPair)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return SendMetadata{}, err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
encryptedText, err := crypto.EncryptWithToString([]byte(text), crypto.AesCbc256_HmacSha256_B64, sendUseKeyPair)
|
encryptedText, err := crypto.EncryptWithToString([]byte(text), crypto.AesCbc256_HmacSha256_B64, sendUseKeyPair)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return SendMetadata{}, err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
sendRequest := SendCreateRequest{
|
sendRequest := SendCreateRequest{
|
||||||
@ -97,11 +101,11 @@ func CreateSend(ctx context.Context, cfg *config.Config, vault *vault.Vault, nam
|
|||||||
Type: 0,
|
Type: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
var result interface{}
|
var result SendCreateRequest
|
||||||
err = authenticatedHTTPPost(ctx, cfg.ConfigFile.ApiUrl+"/sends", &result, sendRequest)
|
err = authenticatedHTTPPost(ctx, cfg.ConfigFile.ApiUrl+"/sends", &result, sendRequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return SendMetadata{}, err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
return SendMetadata{}, nil
|
return cfg.ConfigFile.VaultUrl + "/#/send/" + *result.AccessId + "/" + strings.ReplaceAll(base64.RawURLEncoding.EncodeToString(sendSourceKey), "+", "-"), nil
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@ import (
|
|||||||
"github.com/quexten/goldwarden/agent/bitwarden/crypto"
|
"github.com/quexten/goldwarden/agent/bitwarden/crypto"
|
||||||
"github.com/quexten/goldwarden/agent/bitwarden/models"
|
"github.com/quexten/goldwarden/agent/bitwarden/models"
|
||||||
"github.com/quexten/goldwarden/agent/config"
|
"github.com/quexten/goldwarden/agent/config"
|
||||||
"github.com/quexten/goldwarden/agent/notify"
|
|
||||||
"github.com/quexten/goldwarden/agent/vault"
|
"github.com/quexten/goldwarden/agent/vault"
|
||||||
"github.com/quexten/goldwarden/logging"
|
"github.com/quexten/goldwarden/logging"
|
||||||
)
|
)
|
||||||
@ -35,7 +34,6 @@ func DoFullSync(ctx context.Context, vault *vault.Vault, config *config.Config,
|
|||||||
sync, err := Sync(ctx, config)
|
sync, err := Sync(ctx, config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Could not sync: %v", err)
|
log.Error("Could not sync: %v", err)
|
||||||
notify.Notify("Goldwarden", "Could not sync", "", 0, func() {})
|
|
||||||
if allowCache {
|
if allowCache {
|
||||||
home, _ := os.UserHomeDir()
|
home, _ := os.UserHomeDir()
|
||||||
sync, err = ReadVault(home + path)
|
sync, err = ReadVault(home + path)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user