mirror of
https://github.com/phishingclub/phishingclub.git
synced 2026-02-12 16:12:44 +00:00
94 lines
2.3 KiB
Go
94 lines
2.3 KiB
Go
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{})
|
|
}
|