mirror of
https://github.com/vwxyzjn/portwarden
synced 2025-12-28 12:53:14 +00:00
API-1 # Handle CORS and enable upload files from the front-end
This commit is contained in:
54
Gopkg.lock
generated
54
Gopkg.lock
generated
@@ -1,12 +1,31 @@
|
||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/davecgh/go-spew"
|
||||
packages = ["spew"]
|
||||
revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
|
||||
version = "v1.1.1"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/dsnet/compress"
|
||||
packages = [".","bzip2","bzip2/internal/sais","internal","internal/errors","internal/prefix"]
|
||||
packages = [
|
||||
".",
|
||||
"bzip2",
|
||||
"bzip2/internal/sais",
|
||||
"internal",
|
||||
"internal/errors",
|
||||
"internal/prefix"
|
||||
]
|
||||
revision = "cc9eb1d7ad760af14e8f918698f745e80377af4f"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/gin-contrib/cors"
|
||||
packages = ["."]
|
||||
revision = "cf4846e6a636a76237a28d9286f163c132e841bc"
|
||||
version = "v1.2"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/gin-contrib/sse"
|
||||
@@ -15,7 +34,12 @@
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/gin-gonic/gin"
|
||||
packages = [".","binding","json","render"]
|
||||
packages = [
|
||||
".",
|
||||
"binding",
|
||||
"json",
|
||||
"render"
|
||||
]
|
||||
revision = "b869fe1415e4b9eb52f247441830d502aece2d4d"
|
||||
version = "v1.3.0"
|
||||
|
||||
@@ -31,12 +55,6 @@
|
||||
packages = ["."]
|
||||
revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/gorilla/websocket"
|
||||
packages = ["."]
|
||||
revision = "66b9c49e59c6c48f0ffce28c2d8b8a5678502c6d"
|
||||
version = "v1.4.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/json-iterator/go"
|
||||
packages = ["."]
|
||||
@@ -75,7 +93,10 @@
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/pierrec/lz4"
|
||||
packages = [".","internal/xxh32"]
|
||||
packages = [
|
||||
".",
|
||||
"internal/xxh32"
|
||||
]
|
||||
revision = "635575b42742856941dbc767b44905bb9ba083f6"
|
||||
version = "v2.0.7"
|
||||
|
||||
@@ -93,7 +114,12 @@
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/ulikunitz/xz"
|
||||
packages = [".","internal/hash","internal/xlog","lzma"]
|
||||
packages = [
|
||||
".",
|
||||
"internal/hash",
|
||||
"internal/xlog",
|
||||
"lzma"
|
||||
]
|
||||
revision = "0c6b41e72360850ca4f98dc341fd999726ea007f"
|
||||
version = "v0.5.4"
|
||||
|
||||
@@ -115,12 +141,6 @@
|
||||
revision = "5f1438d3fca68893a817e4a66806cea46a9e4ebf"
|
||||
version = "v8.18.2"
|
||||
|
||||
[[projects]]
|
||||
name = "gopkg.in/olahol/melody.v1"
|
||||
packages = ["."]
|
||||
revision = "d521390733761fe1db13de575c253afd5c743085"
|
||||
version = "v1"
|
||||
|
||||
[[projects]]
|
||||
name = "gopkg.in/urfave/cli.v1"
|
||||
packages = ["."]
|
||||
@@ -136,6 +156,6 @@
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "092f1ac91200f0c9089d9a815804bb5b5f119dca0d41701511e3725507ebeac2"
|
||||
inputs-digest = "664bccbb10f1b918e1d07954f5a556ffe15816b29072c12d4f4ff2fac05d8ca6"
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
||||
|
||||
@@ -12,22 +12,35 @@ import (
|
||||
)
|
||||
|
||||
func EncryptBackupController(c *gin.Context) {
|
||||
var bi models.BackupInfo
|
||||
if err := c.ShouldBindJSON(&bi); err != nil {
|
||||
var ebi models.EncryptBackupInfo
|
||||
if err := c.ShouldBindJSON(&ebi); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ""})
|
||||
return
|
||||
}
|
||||
|
||||
spew.Dump(&bi.BitwardenLoginCredentials)
|
||||
sessionKey, err := portwarden.BWLoginGetSessionKey(&bi.BitwardenLoginCredentials)
|
||||
spew.Dump(&ebi.BitwardenLoginCredentials)
|
||||
sessionKey, err := portwarden.BWLoginGetSessionKey(&ebi.BitwardenLoginCredentials)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": sessionKey})
|
||||
return
|
||||
}
|
||||
fmt.Println(sessionKey)
|
||||
err = portwarden.CreateBackupFile(bi.FileNamePrefix, bi.Passphrase, sessionKey, models.BackupDefaultSleepMilliseconds)
|
||||
err = portwarden.CreateBackupFile(ebi.FileNamePrefix, ebi.Passphrase, sessionKey, models.BackupDefaultSleepMilliseconds)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": sessionKey})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func DecryptBackupController(c *gin.Context) {
|
||||
var dbi models.DecryptBackupInfo
|
||||
var err error
|
||||
if err = c.ShouldBind(&dbi); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ""})
|
||||
return
|
||||
}
|
||||
if dbi.File, err = c.FormFile("file"); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ""})
|
||||
spew.Dump(gin.H{"error": err.Error(), "message": ""})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"mime/multipart"
|
||||
|
||||
"github.com/vwxyzjn/portwarden"
|
||||
)
|
||||
|
||||
@@ -8,8 +10,13 @@ const (
|
||||
BackupDefaultSleepMilliseconds = 300
|
||||
)
|
||||
|
||||
type BackupInfo struct {
|
||||
type EncryptBackupInfo struct {
|
||||
FileNamePrefix string `json:"filename_prefix"`
|
||||
Passphrase string `json:"passphrase"`
|
||||
BitwardenLoginCredentials portwarden.LoginCredentials `json:"bitwarden_login_credentials"`
|
||||
}
|
||||
|
||||
type DecryptBackupInfo struct {
|
||||
File *multipart.FileHeader `form:"file"`
|
||||
Passphrase string `form:"passphrase"`
|
||||
}
|
||||
|
||||
@@ -3,18 +3,21 @@ package main
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-contrib/cors"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/vwxyzjn/portwarden/web/controllers"
|
||||
)
|
||||
|
||||
func main() {
|
||||
r := gin.Default()
|
||||
r.Use(cors.Default())
|
||||
|
||||
r.GET("/", func(c *gin.Context) {
|
||||
http.ServeFile(c.Writer, c.Request, "index.html")
|
||||
})
|
||||
|
||||
r.POST("/encrypt", controllers.EncryptBackupController)
|
||||
r.POST("/decrypt", controllers.DecryptBackupController)
|
||||
|
||||
r.Run(":5000")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user