diff options
| author | Ho3ein <ho3ein.sanaei@gmail.com> | 2023-05-06 12:23:41 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-06 12:23:41 +0300 |
| commit | ac31d6d9fb666ba8deec353d0ba783eb6a8b231f (patch) | |
| tree | ea1e1764da0208035a7000f7d884a6c36b55d830 /web/controller | |
| parent | 78638a97373bccc761f46cbbef0fda34a8dedd6c (diff) | |
| parent | 83c853ffb6b896c8a6d1eef4e0354ba1201ebf13 (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.go | 26 |
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 { |
