mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 00:39:13 +00:00
feat: show new updates in dashboard (#690)
* feat: show new update banner * feat(http): add request logger * refactor: updates checker * feat: make update check optional * fix: empty releases * add toggle switch for update checks * feat: toggle updates check from settings * feat: toggle updates check from settings * feat: check on toggle enabled --------- Co-authored-by: soup <soup@r4tio.dev>
This commit is contained in:
parent
3fdd7cf5e4
commit
2917a7d42d
24 changed files with 687 additions and 121 deletions
|
@ -6,8 +6,8 @@ import (
|
|||
"net"
|
||||
"net/http"
|
||||
|
||||
"github.com/autobrr/autobrr/internal/config"
|
||||
"github.com/autobrr/autobrr/internal/database"
|
||||
"github.com/autobrr/autobrr/internal/domain"
|
||||
"github.com/autobrr/autobrr/internal/logger"
|
||||
"github.com/autobrr/autobrr/web"
|
||||
|
||||
|
@ -24,7 +24,7 @@ type Server struct {
|
|||
sse *sse.Server
|
||||
db *database.DB
|
||||
|
||||
config *domain.Config
|
||||
config *config.AppConfig
|
||||
cookieStore *sessions.CookieStore
|
||||
|
||||
version string
|
||||
|
@ -41,9 +41,10 @@ type Server struct {
|
|||
ircService ircService
|
||||
notificationService notificationService
|
||||
releaseService releaseService
|
||||
updateService updateService
|
||||
}
|
||||
|
||||
func NewServer(log logger.Logger, config *domain.Config, sse *sse.Server, db *database.DB, version string, commit string, date string, actionService actionService, apiService apikeyService, authService authService, downloadClientSvc downloadClientService, filterSvc filterService, feedSvc feedService, indexerSvc indexerService, ircSvc ircService, notificationSvc notificationService, releaseSvc releaseService) Server {
|
||||
func NewServer(log logger.Logger, config *config.AppConfig, sse *sse.Server, db *database.DB, version string, commit string, date string, actionService actionService, apiService apikeyService, authService authService, downloadClientSvc downloadClientService, filterSvc filterService, feedSvc feedService, indexerSvc indexerService, ircSvc ircService, notificationSvc notificationService, releaseSvc releaseService, updateSvc updateService) Server {
|
||||
return Server{
|
||||
log: log.With().Str("module", "http").Logger(),
|
||||
config: config,
|
||||
|
@ -53,7 +54,7 @@ func NewServer(log logger.Logger, config *domain.Config, sse *sse.Server, db *da
|
|||
commit: commit,
|
||||
date: date,
|
||||
|
||||
cookieStore: sessions.NewCookieStore([]byte(config.SessionSecret)),
|
||||
cookieStore: sessions.NewCookieStore([]byte(config.Config.SessionSecret)),
|
||||
|
||||
actionService: actionService,
|
||||
apiService: apiService,
|
||||
|
@ -65,11 +66,12 @@ func NewServer(log logger.Logger, config *domain.Config, sse *sse.Server, db *da
|
|||
ircService: ircSvc,
|
||||
notificationService: notificationSvc,
|
||||
releaseService: releaseSvc,
|
||||
updateService: updateSvc,
|
||||
}
|
||||
}
|
||||
|
||||
func (s Server) Open() error {
|
||||
addr := fmt.Sprintf("%v:%v", s.config.Host, s.config.Port)
|
||||
addr := fmt.Sprintf("%v:%v", s.config.Config.Host, s.config.Config.Port)
|
||||
listener, err := net.Listen("tcp", addr)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -79,6 +81,8 @@ func (s Server) Open() error {
|
|||
Handler: s.Handler(),
|
||||
}
|
||||
|
||||
s.log.Info().Msgf("Starting server. Listening on %s", listener.Addr().String())
|
||||
|
||||
return server.Serve(listener)
|
||||
}
|
||||
|
||||
|
@ -88,6 +92,7 @@ func (s Server) Handler() http.Handler {
|
|||
r.Use(middleware.RequestID)
|
||||
r.Use(middleware.RealIP)
|
||||
r.Use(middleware.Recoverer)
|
||||
r.Use(LoggerMiddleware(&s.log))
|
||||
|
||||
c := cors.New(cors.Options{
|
||||
AllowCredentials: true,
|
||||
|
@ -113,15 +118,15 @@ func (s Server) Handler() http.Handler {
|
|||
fileSystem.ServeHTTP(w, r)
|
||||
})
|
||||
|
||||
r.Route("/api/auth", newAuthHandler(encoder, s.log, s.config, s.cookieStore, s.authService).Routes)
|
||||
r.Route("/api/healthz", newHealthHandler(encoder, s.db).Routes)
|
||||
r.Route("/api", func(r chi.Router) {
|
||||
r.Route("/auth", newAuthHandler(encoder, s.log, s.config.Config, s.cookieStore, s.authService).Routes)
|
||||
r.Route("/healthz", newHealthHandler(encoder, s.db).Routes)
|
||||
|
||||
r.Group(func(r chi.Router) {
|
||||
r.Use(s.IsAuthenticated)
|
||||
r.Group(func(r chi.Router) {
|
||||
r.Use(s.IsAuthenticated)
|
||||
|
||||
r.Route("/api", func(r chi.Router) {
|
||||
r.Route("/actions", newActionHandler(encoder, s.actionService).Routes)
|
||||
r.Route("/config", newConfigHandler(encoder, s).Routes)
|
||||
r.Route("/config", newConfigHandler(encoder, s, s.config).Routes)
|
||||
r.Route("/download_clients", newDownloadClientHandler(encoder, s.downloadClientService).Routes)
|
||||
r.Route("/filters", newFilterHandler(encoder, s.filterService).Routes)
|
||||
r.Route("/feeds", newFeedHandler(encoder, s.feedService).Routes)
|
||||
|
@ -130,6 +135,7 @@ func (s Server) Handler() http.Handler {
|
|||
r.Route("/keys", newAPIKeyHandler(encoder, s.apiService).Routes)
|
||||
r.Route("/notification", newNotificationHandler(encoder, s.notificationService).Routes)
|
||||
r.Route("/release", newReleaseHandler(encoder, s.releaseService).Routes)
|
||||
r.Route("/updates", newUpdateHandler(encoder, s.updateService).Routes)
|
||||
|
||||
r.HandleFunc("/events", func(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
|
@ -157,7 +163,7 @@ func (s Server) index(w http.ResponseWriter, r *http.Request) {
|
|||
p := web.IndexParams{
|
||||
Title: "Dashboard",
|
||||
Version: s.version,
|
||||
BaseUrl: s.config.BaseURL,
|
||||
BaseUrl: s.config.Config.BaseURL,
|
||||
}
|
||||
web.Index(w, p)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue