Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHo3ein <ho3ein.sanaei@gmail.com>2023-05-06 12:23:41 +0300
committerGitHub <noreply@github.com>2023-05-06 12:23:41 +0300
commitac31d6d9fb666ba8deec353d0ba783eb6a8b231f (patch)
treeea1e1764da0208035a7000f7d884a6c36b55d830 /web/controller
parent78638a97373bccc761f46cbbef0fda34a8dedd6c (diff)
parent83c853ffb6b896c8a6d1eef4e0354ba1201ebf13 (diff)
Merge pull request #347 from hamid-gh98/main
[Feature] import/export database in the panel
Diffstat (limited to 'web/controller')
-rw-r--r--web/controller/server.go26
1 files changed, 24 insertions, 2 deletions
diff --git a/web/controller/server.go b/web/controller/server.go
index c365ae4b..9e649e6c 100644
--- a/web/controller/server.go
+++ b/web/controller/server.go
@@ -41,6 +41,7 @@ func (a *ServerController) initRouter(g *gin.RouterGroup) {
g.POST("/logs/:count", a.getLogs)
g.POST("/getConfigJson", a.getConfigJson)
g.GET("/getDb", a.getDb)
+ g.POST("/importDB", a.importDB)
g.POST("/getNewX25519Cert", a.getNewX25519Cert)
}
@@ -99,8 +100,8 @@ func (a *ServerController) stopXrayService(c *gin.Context) {
return
}
jsonMsg(c, "Xray stoped", err)
-
}
+
func (a *ServerController) restartXrayService(c *gin.Context) {
err := a.serverService.RestartXrayService()
if err != nil {
@@ -108,7 +109,6 @@ func (a *ServerController) restartXrayService(c *gin.Context) {
return
}
jsonMsg(c, "Xray restarted", err)
-
}
func (a *ServerController) getLogs(c *gin.Context) {
@@ -144,6 +144,28 @@ func (a *ServerController) getDb(c *gin.Context) {
c.Writer.Write(db)
}
+func (a *ServerController) importDB(c *gin.Context) {
+ // Get the file from the request body
+ file, _, err := c.Request.FormFile("db")
+ if err != nil {
+ jsonMsg(c, "Error reading db file", err)
+ return
+ }
+ defer file.Close()
+ // Always restart Xray before return
+ defer a.serverService.RestartXrayService()
+ defer func() {
+ a.lastGetStatusTime = time.Now()
+ }()
+ // Import it
+ err = a.serverService.ImportDB(file)
+ if err != nil {
+ jsonMsg(c, "", err)
+ return
+ }
+ jsonObj(c, "Import DB", nil)
+}
+
func (a *ServerController) getNewX25519Cert(c *gin.Context) {
cert, err := a.serverService.GetNewX25519Cert()
if err != nil {