0.2.57 - Traliers bug fixes
This commit is contained in:
@@ -19,13 +19,30 @@ const (
|
||||
installerSessionTTL = 30 * time.Minute
|
||||
adminSessionTTL = 12 * time.Hour
|
||||
installerDeviceID = "memby-web-installer"
|
||||
installerDeviceName = "Memby Web Installer"
|
||||
|
||||
// adminRenewWithin is how close to expiry a session must be before an operator's own
|
||||
// request re-issues it. Half the TTL avoids rewriting the cookie on every request.
|
||||
adminRenewWithin = adminSessionTTL / 2
|
||||
)
|
||||
|
||||
// gatewayDeviceName is what Emby records for a device row the gateway creates for itself.
|
||||
// It follows the gateway's client name so one operator-set word covers both halves of how
|
||||
// the server identifies itself, and it is deliberately never the product name — Emby's
|
||||
// device list is read by whoever runs the server, and an entry called "Memby …" there
|
||||
// reads as one of the household's televisions.
|
||||
func (s *Server) gatewayDeviceName() string {
|
||||
if name := strings.TrimSpace(s.cfg.GatewayClientName); name != "" {
|
||||
return name
|
||||
}
|
||||
return emby.DefaultGatewayClientName
|
||||
}
|
||||
|
||||
// installerDeviceName separates the temporary record an admin or installer sign-in
|
||||
// creates from the gateway's own, so a password check is recognisable while it exists.
|
||||
func (s *Server) installerDeviceName() string {
|
||||
return s.gatewayDeviceName() + " Installer"
|
||||
}
|
||||
|
||||
func (s *Server) installerSecret() []byte {
|
||||
if s.cfg.ReleasePublishToken == "" {
|
||||
return nil
|
||||
@@ -192,8 +209,13 @@ func (s *Server) handleInstallLogin(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Gateway, not a television: this sign-in is the admin console or the web installer
|
||||
// checking a password, so Emby records it under the gateway's own client name.
|
||||
auth, err := s.emby.Authenticate(
|
||||
r.Context(), username, password, installerDeviceID, installerDeviceName, "",
|
||||
r.Context(), username, password,
|
||||
emby.Credentials{
|
||||
DeviceID: installerDeviceID, DeviceName: s.installerDeviceName(), Gateway: true,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
s.loggerFor(r.Context()).Warn("installer Emby authentication failed", "username", username)
|
||||
@@ -204,13 +226,15 @@ func (s *Server) handleInstallLogin(w http.ResponseWriter, r *http.Request) {
|
||||
// it succeeded, so retire the upstream session immediately and never persist it.
|
||||
if err := s.emby.Logout(r.Context(), emby.Credentials{
|
||||
UserID: auth.User.ID, Token: auth.AccessToken,
|
||||
DeviceID: installerDeviceID, DeviceName: installerDeviceName,
|
||||
DeviceID: installerDeviceID, DeviceName: s.installerDeviceName(),
|
||||
Gateway: true,
|
||||
}); err != nil {
|
||||
s.loggerFor(r.Context()).Warn("installer Emby session cleanup failed", "error", err)
|
||||
}
|
||||
if err := s.emby.DeleteDevice(r.Context(), emby.Credentials{
|
||||
UserID: s.cfg.SyncUserID, Token: s.cfg.SyncAPIKey,
|
||||
DeviceID: "memby-gateway", DeviceName: "Memby Gateway",
|
||||
DeviceID: "memby-gateway", DeviceName: s.gatewayDeviceName(),
|
||||
Gateway: true,
|
||||
}, installerDeviceID); err != nil {
|
||||
s.loggerFor(r.Context()).Error("installer Emby device cleanup failed", "error", err)
|
||||
s.renderAccessLogin(w, r, "Sign-in is temporarily unavailable.",
|
||||
|
||||
Reference in New Issue
Block a user