mirror of
https://github.com/vwxyzjn/portwarden
synced 2025-12-23 19:03: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'.
|
# 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]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
name = "github.com/dsnet/compress"
|
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"
|
revision = "cc9eb1d7ad760af14e8f918698f745e80377af4f"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/gin-contrib/cors"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "cf4846e6a636a76237a28d9286f163c132e841bc"
|
||||||
|
version = "v1.2"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
name = "github.com/gin-contrib/sse"
|
name = "github.com/gin-contrib/sse"
|
||||||
@@ -15,7 +34,12 @@
|
|||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/gin-gonic/gin"
|
name = "github.com/gin-gonic/gin"
|
||||||
packages = [".","binding","json","render"]
|
packages = [
|
||||||
|
".",
|
||||||
|
"binding",
|
||||||
|
"json",
|
||||||
|
"render"
|
||||||
|
]
|
||||||
revision = "b869fe1415e4b9eb52f247441830d502aece2d4d"
|
revision = "b869fe1415e4b9eb52f247441830d502aece2d4d"
|
||||||
version = "v1.3.0"
|
version = "v1.3.0"
|
||||||
|
|
||||||
@@ -31,12 +55,6 @@
|
|||||||
packages = ["."]
|
packages = ["."]
|
||||||
revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a"
|
revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a"
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
name = "github.com/gorilla/websocket"
|
|
||||||
packages = ["."]
|
|
||||||
revision = "66b9c49e59c6c48f0ffce28c2d8b8a5678502c6d"
|
|
||||||
version = "v1.4.0"
|
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/json-iterator/go"
|
name = "github.com/json-iterator/go"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
@@ -75,7 +93,10 @@
|
|||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/pierrec/lz4"
|
name = "github.com/pierrec/lz4"
|
||||||
packages = [".","internal/xxh32"]
|
packages = [
|
||||||
|
".",
|
||||||
|
"internal/xxh32"
|
||||||
|
]
|
||||||
revision = "635575b42742856941dbc767b44905bb9ba083f6"
|
revision = "635575b42742856941dbc767b44905bb9ba083f6"
|
||||||
version = "v2.0.7"
|
version = "v2.0.7"
|
||||||
|
|
||||||
@@ -93,7 +114,12 @@
|
|||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/ulikunitz/xz"
|
name = "github.com/ulikunitz/xz"
|
||||||
packages = [".","internal/hash","internal/xlog","lzma"]
|
packages = [
|
||||||
|
".",
|
||||||
|
"internal/hash",
|
||||||
|
"internal/xlog",
|
||||||
|
"lzma"
|
||||||
|
]
|
||||||
revision = "0c6b41e72360850ca4f98dc341fd999726ea007f"
|
revision = "0c6b41e72360850ca4f98dc341fd999726ea007f"
|
||||||
version = "v0.5.4"
|
version = "v0.5.4"
|
||||||
|
|
||||||
@@ -115,12 +141,6 @@
|
|||||||
revision = "5f1438d3fca68893a817e4a66806cea46a9e4ebf"
|
revision = "5f1438d3fca68893a817e4a66806cea46a9e4ebf"
|
||||||
version = "v8.18.2"
|
version = "v8.18.2"
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
name = "gopkg.in/olahol/melody.v1"
|
|
||||||
packages = ["."]
|
|
||||||
revision = "d521390733761fe1db13de575c253afd5c743085"
|
|
||||||
version = "v1"
|
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "gopkg.in/urfave/cli.v1"
|
name = "gopkg.in/urfave/cli.v1"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
@@ -136,6 +156,6 @@
|
|||||||
[solve-meta]
|
[solve-meta]
|
||||||
analyzer-name = "dep"
|
analyzer-name = "dep"
|
||||||
analyzer-version = 1
|
analyzer-version = 1
|
||||||
inputs-digest = "092f1ac91200f0c9089d9a815804bb5b5f119dca0d41701511e3725507ebeac2"
|
inputs-digest = "664bccbb10f1b918e1d07954f5a556ffe15816b29072c12d4f4ff2fac05d8ca6"
|
||||||
solver-name = "gps-cdcl"
|
solver-name = "gps-cdcl"
|
||||||
solver-version = 1
|
solver-version = 1
|
||||||
|
|||||||
@@ -12,22 +12,35 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func EncryptBackupController(c *gin.Context) {
|
func EncryptBackupController(c *gin.Context) {
|
||||||
var bi models.BackupInfo
|
var ebi models.EncryptBackupInfo
|
||||||
if err := c.ShouldBindJSON(&bi); err != nil {
|
if err := c.ShouldBindJSON(&ebi); err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ""})
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ""})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
spew.Dump(&bi.BitwardenLoginCredentials)
|
spew.Dump(&ebi.BitwardenLoginCredentials)
|
||||||
sessionKey, err := portwarden.BWLoginGetSessionKey(&bi.BitwardenLoginCredentials)
|
sessionKey, err := portwarden.BWLoginGetSessionKey(&ebi.BitwardenLoginCredentials)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": sessionKey})
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": sessionKey})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Println(sessionKey)
|
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 {
|
if err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": sessionKey})
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": sessionKey})
|
||||||
return
|
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
|
package models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"mime/multipart"
|
||||||
|
|
||||||
"github.com/vwxyzjn/portwarden"
|
"github.com/vwxyzjn/portwarden"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -8,8 +10,13 @@ const (
|
|||||||
BackupDefaultSleepMilliseconds = 300
|
BackupDefaultSleepMilliseconds = 300
|
||||||
)
|
)
|
||||||
|
|
||||||
type BackupInfo struct {
|
type EncryptBackupInfo struct {
|
||||||
FileNamePrefix string `json:"filename_prefix"`
|
FileNamePrefix string `json:"filename_prefix"`
|
||||||
Passphrase string `json:"passphrase"`
|
Passphrase string `json:"passphrase"`
|
||||||
BitwardenLoginCredentials portwarden.LoginCredentials `json:"bitwarden_login_credentials"`
|
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 (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/gin-contrib/cors"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/vwxyzjn/portwarden/web/controllers"
|
"github.com/vwxyzjn/portwarden/web/controllers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
r := gin.Default()
|
r := gin.Default()
|
||||||
|
r.Use(cors.Default())
|
||||||
|
|
||||||
r.GET("/", func(c *gin.Context) {
|
r.GET("/", func(c *gin.Context) {
|
||||||
http.ServeFile(c.Writer, c.Request, "index.html")
|
http.ServeFile(c.Writer, c.Request, "index.html")
|
||||||
})
|
})
|
||||||
|
|
||||||
r.POST("/encrypt", controllers.EncryptBackupController)
|
r.POST("/encrypt", controllers.EncryptBackupController)
|
||||||
|
r.POST("/decrypt", controllers.DecryptBackupController)
|
||||||
|
|
||||||
r.Run(":5000")
|
r.Run(":5000")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user