mirror of
https://github.com/phishingclub/phishingclub.git
synced 2026-08-24 03:12:33 +02:00
Initial open source release
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-errors/errors"
|
||||
"github.com/phishingclub/phishingclub/data"
|
||||
"github.com/phishingclub/phishingclub/errs"
|
||||
"github.com/phishingclub/phishingclub/service"
|
||||
)
|
||||
|
||||
type Update struct {
|
||||
Common
|
||||
UpdateService *service.Update
|
||||
OptionService *service.Option
|
||||
}
|
||||
|
||||
// CheckForUpdateCached checks if there is a new update from cache
|
||||
func (u *Update) CheckForUpdateCached(g *gin.Context) {
|
||||
session, _, ok := u.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
updateAvailable, usingSystemd, err := u.UpdateService.CheckForUpdateCached(g, session)
|
||||
if ok := u.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
u.Response.OK(g, gin.H{
|
||||
"updateAvailable": updateAvailable,
|
||||
"updateInApp": usingSystemd,
|
||||
})
|
||||
}
|
||||
|
||||
// CheckForUpdate checks if there is a new update
|
||||
func (u *Update) CheckForUpdate(g *gin.Context) {
|
||||
session, _, ok := u.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
updateAvailable, usingSystemd, err := u.UpdateService.CheckForUpdate(g, session)
|
||||
if ok := u.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
u.Response.OK(g, gin.H{
|
||||
"updateAvailable": updateAvailable,
|
||||
"updateInApp": usingSystemd,
|
||||
})
|
||||
}
|
||||
|
||||
// GetUpdateDetails gets details about the newest software update
|
||||
func (u *Update) GetUpdateDetails(g *gin.Context) {
|
||||
session, _, ok := u.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
opt, err := u.OptionService.GetOption(g, session, data.OptionKeyUsingSystemd)
|
||||
if ok := u.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
details, err := u.UpdateService.GetUpdateDetails(g, session)
|
||||
if err != nil && !errors.Is(err, errs.ErrNoUpdateAvailable) {
|
||||
if ok := u.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
}
|
||||
if errors.Is(err, errs.ErrNoUpdateAvailable) {
|
||||
u.Response.OK(g, gin.H{
|
||||
"updateAvailable": false,
|
||||
"updateInApp": opt.Value.String() == data.OptionValueUsingSystemdYes,
|
||||
"downloadURL": "",
|
||||
"latestVersion": "",
|
||||
})
|
||||
return
|
||||
}
|
||||
u.Response.OK(g, gin.H{
|
||||
"updateAvailable": true,
|
||||
"updateInApp": opt.Value.String() == data.OptionValueUsingSystemdYes,
|
||||
"downloadURL": details.DownloadURL,
|
||||
"latestVersion": details.LatestVersion,
|
||||
})
|
||||
}
|
||||
|
||||
// RunUpdate performs an update
|
||||
func (u *Update) RunUpdate(g *gin.Context) {
|
||||
session, _, ok := u.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
err := u.UpdateService.RunUpdate(g, session)
|
||||
if ok := u.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
u.Response.OK(g, gin.H{})
|
||||
}
|
||||
Reference in New Issue
Block a user