mirror of
https://github.com/vwxyzjn/portwarden
synced 2026-01-05 16:43:13 +00:00
API-3 # Add endpoint to login to google drive
This commit is contained in:
64
Gopkg.lock
generated
64
Gopkg.lock
generated
@@ -22,7 +22,14 @@
|
||||
[[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]]
|
||||
@@ -39,7 +46,12 @@
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/gin-gonic/gin"
|
||||
packages = [".","binding","json","render"]
|
||||
packages = [
|
||||
".",
|
||||
"binding",
|
||||
"json",
|
||||
"render"
|
||||
]
|
||||
revision = "b869fe1415e4b9eb52f247441830d502aece2d4d"
|
||||
version = "v1.3.0"
|
||||
|
||||
@@ -93,7 +105,10 @@
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/pierrec/lz4"
|
||||
packages = [".","internal/xxh32"]
|
||||
packages = [
|
||||
".",
|
||||
"internal/xxh32"
|
||||
]
|
||||
revision = "635575b42742856941dbc767b44905bb9ba083f6"
|
||||
version = "v2.0.7"
|
||||
|
||||
@@ -111,7 +126,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"
|
||||
|
||||
@@ -124,13 +144,22 @@
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "golang.org/x/net"
|
||||
packages = ["context","context/ctxhttp"]
|
||||
packages = [
|
||||
"context",
|
||||
"context/ctxhttp"
|
||||
]
|
||||
revision = "adae6a3d119ae4890b46832a2e88a95adc62b8e7"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "golang.org/x/oauth2"
|
||||
packages = [".","google","internal","jws","jwt"]
|
||||
packages = [
|
||||
".",
|
||||
"google",
|
||||
"internal",
|
||||
"jws",
|
||||
"jwt"
|
||||
]
|
||||
revision = "f42d05182288abf10faef86d16c0d07b8d40ea2d"
|
||||
|
||||
[[projects]]
|
||||
@@ -142,12 +171,29 @@
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "google.golang.org/api"
|
||||
packages = ["drive/v3","gensupport","googleapi","googleapi/internal/uritemplates"]
|
||||
packages = [
|
||||
"drive/v2",
|
||||
"drive/v3",
|
||||
"gensupport",
|
||||
"googleapi",
|
||||
"googleapi/internal/uritemplates"
|
||||
]
|
||||
revision = "83a9d304b1e613fc253e1e2710778642fe81af53"
|
||||
|
||||
[[projects]]
|
||||
name = "google.golang.org/appengine"
|
||||
packages = [".","internal","internal/app_identity","internal/base","internal/datastore","internal/log","internal/modules","internal/remote_api","internal/urlfetch","urlfetch"]
|
||||
packages = [
|
||||
".",
|
||||
"internal",
|
||||
"internal/app_identity",
|
||||
"internal/base",
|
||||
"internal/datastore",
|
||||
"internal/log",
|
||||
"internal/modules",
|
||||
"internal/remote_api",
|
||||
"internal/urlfetch",
|
||||
"urlfetch"
|
||||
]
|
||||
revision = "4a4468ece617fc8205e99368fa2200e9d1fad421"
|
||||
version = "v1.3.0"
|
||||
|
||||
@@ -172,6 +218,6 @@
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "4a6e5b98747278f2c2be95f489e7aed2710b82c99e7857087c6eb222917dba6c"
|
||||
inputs-digest = "e94795c347f48a9ee90b68d79ae43762c0504d74ca19276f92b7c394faeab698"
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package models
|
||||
package server
|
||||
|
||||
import (
|
||||
"mime/multipart"
|
||||
@@ -1,24 +1,18 @@
|
||||
package controllers
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
"golang.org/x/oauth2/google"
|
||||
drive "google.golang.org/api/drive/v3"
|
||||
"golang.org/x/oauth2"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/vwxyzjn/portwarden"
|
||||
"github.com/vwxyzjn/portwarden/web/models"
|
||||
"github.com/vwxyzjn/portwarden/web/utils"
|
||||
)
|
||||
|
||||
func EncryptBackupHandler(c *gin.Context) {
|
||||
var ebi models.EncryptBackupInfo
|
||||
var ebi EncryptBackupInfo
|
||||
if err := c.ShouldBindJSON(&ebi); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ""})
|
||||
return
|
||||
@@ -31,7 +25,7 @@ func EncryptBackupHandler(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
fmt.Println(sessionKey)
|
||||
err = portwarden.CreateBackupFile(ebi.FileNamePrefix, ebi.Passphrase, sessionKey, models.BackupDefaultSleepMilliseconds)
|
||||
err = portwarden.CreateBackupFile(ebi.FileNamePrefix, ebi.Passphrase, sessionKey, BackupDefaultSleepMilliseconds)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": sessionKey})
|
||||
return
|
||||
@@ -40,25 +34,15 @@ func EncryptBackupHandler(c *gin.Context) {
|
||||
|
||||
//TODO: GoogleDriveHandler() will return Json with the google login url
|
||||
// Not sure if it's supposed to call UploadFile() directly
|
||||
func GoogleDriveHandler(c *gin.Context) {
|
||||
ctx := context.Background()
|
||||
credential, err := ioutil.ReadFile("credentials.json")
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to read client secret file: %v", err)
|
||||
}
|
||||
config, err := google.ConfigFromJSON(credential, drive.DriveScope)
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to parse client secret file to config: %v", err)
|
||||
}
|
||||
client := utils.GetClient(ctx, config)
|
||||
token := utils.GetTokenFromWeb(config)
|
||||
// TODO: Assign encrypted data to fileBytes before uploadFile is called
|
||||
//UploadFile(fileBytes, client, token)
|
||||
|
||||
func (ps *PortwardenServer) GoogleDriveLoginHandler(c *gin.Context) {
|
||||
c.JSON(200, gin.H{
|
||||
"login_url": ps.GoogleDriveAppConfig.AuthCodeURL("state-token", oauth2.AccessTypeOffline),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func DecryptBackupHandler(c *gin.Context) {
|
||||
var dbi models.DecryptBackupInfo
|
||||
var dbi DecryptBackupInfo
|
||||
var err error
|
||||
if err = c.ShouldBind(&dbi); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ""})
|
||||
@@ -1,4 +1,4 @@
|
||||
package utils
|
||||
package server
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
|
||||
"github.com/gin-contrib/cors"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/vwxyzjn/portwarden/web/controllers"
|
||||
"golang.org/x/net/context"
|
||||
"golang.org/x/oauth2"
|
||||
"golang.org/x/oauth2/google"
|
||||
@@ -20,6 +19,7 @@ type PortwardenServer struct {
|
||||
GoogleDriveContext context.Context
|
||||
GoogleDriveAppCredentials []byte
|
||||
GoogleDriveAppConfig *oauth2.Config
|
||||
GoogleClient *http.Client
|
||||
}
|
||||
|
||||
func (ps *PortwardenServer) Run() {
|
||||
@@ -29,6 +29,7 @@ func (ps *PortwardenServer) Run() {
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to parse client secret file to config: %v", err)
|
||||
}
|
||||
// ps.GoogleClient = GetClient(ps.GoogleDriveContext, ps.GoogleDriveAppConfig)
|
||||
|
||||
ps.Router = gin.Default()
|
||||
ps.Router.Use(cors.Default())
|
||||
@@ -37,8 +38,9 @@ func (ps *PortwardenServer) Run() {
|
||||
http.ServeFile(c.Writer, c.Request, "index.html")
|
||||
})
|
||||
|
||||
ps.Router.POST("/encrypt", controllers.EncryptBackupHandler)
|
||||
ps.Router.POST("/decrypt", controllers.DecryptBackupHandler)
|
||||
ps.Router.POST("/encrypt", EncryptBackupHandler)
|
||||
ps.Router.POST("/decrypt", DecryptBackupHandler)
|
||||
ps.Router.GET("/gdrive/login", ps.GoogleDriveLoginHandler)
|
||||
|
||||
ps.Router.Run(":" + strconv.Itoa(ps.Port))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user