Add more logs
This commit is contained in:
		
							parent
							
								
									2f0fdf1252
								
							
						
					
					
						commit
						bf96d21d67
					
				
					 2 changed files with 64 additions and 8 deletions
				
			
		|  | @ -2,6 +2,7 @@ package server | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
|  | 	"heckel.io/ntfy/log" | ||||||
| 	"heckel.io/ntfy/user" | 	"heckel.io/ntfy/user" | ||||||
| 	"heckel.io/ntfy/util" | 	"heckel.io/ntfy/util" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | @ -36,7 +37,8 @@ func (s *Server) handleAccountCreate(w http.ResponseWriter, r *http.Request, v * | ||||||
| 	if existingUser, _ := s.userManager.User(newAccount.Username); existingUser != nil { | 	if existingUser, _ := s.userManager.User(newAccount.Username); existingUser != nil { | ||||||
| 		return errHTTPConflictUserExists | 		return errHTTPConflictUserExists | ||||||
| 	} | 	} | ||||||
| 	if err := s.userManager.AddUser(newAccount.Username, newAccount.Password, user.RoleUser); err != nil { // TODO this should return a User | 	logvr(v, r).Tag(tagAccount).Field("user_name", newAccount.Username).Info("Creating user %s", newAccount.Username) | ||||||
|  | 	if err := s.userManager.AddUser(newAccount.Username, newAccount.Password, user.RoleUser); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	return s.writeJSON(w, newSuccessResponse()) | 	return s.writeJSON(w, newSuccessResponse()) | ||||||
|  | @ -181,10 +183,10 @@ func (s *Server) handleAccountPasswordChange(w http.ResponseWriter, r *http.Requ | ||||||
| 	if _, err := s.userManager.Authenticate(u.Name, req.Password); err != nil { | 	if _, err := s.userManager.Authenticate(u.Name, req.Password); err != nil { | ||||||
| 		return errHTTPBadRequestIncorrectPasswordConfirmation | 		return errHTTPBadRequestIncorrectPasswordConfirmation | ||||||
| 	} | 	} | ||||||
|  | 	logvr(v, r).Tag(tagAccount).Debug("Changing password for user %s", u.Name) | ||||||
| 	if err := s.userManager.ChangePassword(u.Name, req.NewPassword); err != nil { | 	if err := s.userManager.ChangePassword(u.Name, req.NewPassword); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	logvr(v, r).Tag(tagAccount).Debug("Changed password for user %s", u.Name) |  | ||||||
| 	return s.writeJSON(w, newSuccessResponse()) | 	return s.writeJSON(w, newSuccessResponse()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -203,11 +205,17 @@ func (s *Server) handleAccountTokenCreate(w http.ResponseWriter, r *http.Request | ||||||
| 		expires = time.Unix(*req.Expires, 0) | 		expires = time.Unix(*req.Expires, 0) | ||||||
| 	} | 	} | ||||||
| 	u := v.User() | 	u := v.User() | ||||||
|  | 	logvr(v, r). | ||||||
|  | 		Tag(tagAccount). | ||||||
|  | 		Fields(log.Context{ | ||||||
|  | 			"token_label":   label, | ||||||
|  | 			"token_expires": expires, | ||||||
|  | 		}). | ||||||
|  | 		Debug("Creating token for user %s", u.Name) | ||||||
| 	token, err := s.userManager.CreateToken(u.ID, label, expires, v.IP()) | 	token, err := s.userManager.CreateToken(u.ID, label, expires, v.IP()) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	logvr(v, r).Tag(tagAccount).Debug("Created token for user %s", u.Name) |  | ||||||
| 	response := &apiAccountTokenResponse{ | 	response := &apiAccountTokenResponse{ | ||||||
| 		Token:      token.Value, | 		Token:      token.Value, | ||||||
| 		Label:      token.Label, | 		Label:      token.Label, | ||||||
|  | @ -234,9 +242,15 @@ func (s *Server) handleAccountTokenUpdate(w http.ResponseWriter, r *http.Request | ||||||
| 	if req.Expires != nil { | 	if req.Expires != nil { | ||||||
| 		expires = util.Time(time.Unix(*req.Expires, 0)) | 		expires = util.Time(time.Unix(*req.Expires, 0)) | ||||||
| 	} else if req.Label == nil { | 	} else if req.Label == nil { | ||||||
| 		// If label and expires are not set, simply extend the token by 72 hours | 		expires = util.Time(time.Now().Add(tokenExpiryDuration)) // If label/expires not set, extend token by 72 hours | ||||||
| 		expires = util.Time(time.Now().Add(tokenExpiryDuration)) |  | ||||||
| 	} | 	} | ||||||
|  | 	logvr(v, r). | ||||||
|  | 		Tag(tagAccount). | ||||||
|  | 		Fields(log.Context{ | ||||||
|  | 			"token_label":   req.Label, | ||||||
|  | 			"token_expires": expires, | ||||||
|  | 		}). | ||||||
|  | 		Debug("Updating token for user %s as deleted", u.Name) | ||||||
| 	token, err := s.userManager.ChangeToken(u.ID, req.Token, req.Label, expires) | 	token, err := s.userManager.ChangeToken(u.ID, req.Token, req.Label, expires) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|  | @ -264,6 +278,10 @@ func (s *Server) handleAccountTokenDelete(w http.ResponseWriter, r *http.Request | ||||||
| 	if err := s.userManager.RemoveToken(u.ID, token); err != nil { | 	if err := s.userManager.RemoveToken(u.ID, token); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | 	logvr(v, r). | ||||||
|  | 		Tag(tagAccount). | ||||||
|  | 		Field("token", token). | ||||||
|  | 		Debug("Deleted token for user %s", u.Name) | ||||||
| 	return s.writeJSON(w, newSuccessResponse()) | 	return s.writeJSON(w, newSuccessResponse()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -294,6 +312,7 @@ func (s *Server) handleAccountSettingsChange(w http.ResponseWriter, r *http.Requ | ||||||
| 			prefs.Notification.MinPriority = newPrefs.Notification.MinPriority | 			prefs.Notification.MinPriority = newPrefs.Notification.MinPriority | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 	logvr(v, r).Tag(tagAccount).Debug("Changing account settings for user %s", u.Name) | ||||||
| 	if err := s.userManager.ChangeSettings(u); err != nil { | 	if err := s.userManager.ChangeSettings(u); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | @ -319,6 +338,13 @@ func (s *Server) handleAccountSubscriptionAdd(w http.ResponseWriter, r *http.Req | ||||||
| 	if newSubscription.ID == "" { | 	if newSubscription.ID == "" { | ||||||
| 		newSubscription.ID = util.RandomStringPrefix(subscriptionIDPrefix, subscriptionIDLength) | 		newSubscription.ID = util.RandomStringPrefix(subscriptionIDPrefix, subscriptionIDLength) | ||||||
| 		u.Prefs.Subscriptions = append(u.Prefs.Subscriptions, newSubscription) | 		u.Prefs.Subscriptions = append(u.Prefs.Subscriptions, newSubscription) | ||||||
|  | 		logvr(v, r). | ||||||
|  | 			Tag(tagAccount). | ||||||
|  | 			Fields(log.Context{ | ||||||
|  | 				"base_url": newSubscription.BaseURL, | ||||||
|  | 				"topic":    newSubscription.Topic, | ||||||
|  | 			}). | ||||||
|  | 			Debug("Adding subscription for user %s", u.Name) | ||||||
| 		if err := s.userManager.ChangeSettings(u); err != nil { | 		if err := s.userManager.ChangeSettings(u); err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|  | @ -351,6 +377,14 @@ func (s *Server) handleAccountSubscriptionChange(w http.ResponseWriter, r *http. | ||||||
| 	if subscription == nil { | 	if subscription == nil { | ||||||
| 		return errHTTPNotFound | 		return errHTTPNotFound | ||||||
| 	} | 	} | ||||||
|  | 	logvr(v, r). | ||||||
|  | 		Tag(tagAccount). | ||||||
|  | 		Fields(log.Context{ | ||||||
|  | 			"base_url":     subscription.BaseURL, | ||||||
|  | 			"topic":        subscription.Topic, | ||||||
|  | 			"display_name": subscription.DisplayName, | ||||||
|  | 		}). | ||||||
|  | 		Debug("Changing subscription for user %s", u.Name) | ||||||
| 	if err := s.userManager.ChangeSettings(u); err != nil { | 	if err := s.userManager.ChangeSettings(u); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | @ -369,7 +403,15 @@ func (s *Server) handleAccountSubscriptionDelete(w http.ResponseWriter, r *http. | ||||||
| 	} | 	} | ||||||
| 	newSubscriptions := make([]*user.Subscription, 0) | 	newSubscriptions := make([]*user.Subscription, 0) | ||||||
| 	for _, subscription := range u.Prefs.Subscriptions { | 	for _, subscription := range u.Prefs.Subscriptions { | ||||||
| 		if subscription.ID != subscriptionID { | 		if subscription.ID == subscriptionID { | ||||||
|  | 			logvr(v, r). | ||||||
|  | 				Tag(tagAccount). | ||||||
|  | 				Fields(log.Context{ | ||||||
|  | 					"base_url": subscription.BaseURL, | ||||||
|  | 					"topic":    subscription.Topic, | ||||||
|  | 				}). | ||||||
|  | 				Debug("Removing subscription for user %s", u.Name) | ||||||
|  | 		} else { | ||||||
| 			newSubscriptions = append(newSubscriptions, subscription) | 			newSubscriptions = append(newSubscriptions, subscription) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | @ -418,6 +460,13 @@ func (s *Server) handleAccountReservationAdd(w http.ResponseWriter, r *http.Requ | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	// Actually add the reservation | 	// Actually add the reservation | ||||||
|  | 	logvr(v, r). | ||||||
|  | 		Tag(tagAccount). | ||||||
|  | 		Fields(log.Context{ | ||||||
|  | 			"topic":    req.Topic, | ||||||
|  | 			"everyone": everyone.String(), | ||||||
|  | 		}). | ||||||
|  | 		Debug("Adding topic reservation") | ||||||
| 	if err := s.userManager.AddReservation(u.Name, req.Topic, everyone); err != nil { | 	if err := s.userManager.AddReservation(u.Name, req.Topic, everyone); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | @ -447,10 +496,17 @@ func (s *Server) handleAccountReservationDelete(w http.ResponseWriter, r *http.R | ||||||
| 	} else if !authorized { | 	} else if !authorized { | ||||||
| 		return errHTTPUnauthorized | 		return errHTTPUnauthorized | ||||||
| 	} | 	} | ||||||
|  | 	deleteMessages := readBoolParam(r, false, "X-Delete-Messages", "Delete-Messages") | ||||||
|  | 	logvr(v, r). | ||||||
|  | 		Tag(tagAccount). | ||||||
|  | 		Fields(log.Context{ | ||||||
|  | 			"topic":           topic, | ||||||
|  | 			"delete_messages": deleteMessages, | ||||||
|  | 		}). | ||||||
|  | 		Debug("Removing topic reservation") | ||||||
| 	if err := s.userManager.RemoveReservations(u.Name, topic); err != nil { | 	if err := s.userManager.RemoveReservations(u.Name, topic); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	deleteMessages := readBoolParam(r, false, "X-Delete-Messages", "Delete-Messages") |  | ||||||
| 	if deleteMessages { | 	if deleteMessages { | ||||||
| 		if err := s.messageCache.ExpireMessages(topic); err != nil { | 		if err := s.messageCache.ExpireMessages(topic); err != nil { | ||||||
| 			return err | 			return err | ||||||
|  |  | ||||||
|  | @ -88,7 +88,7 @@ func (t *topic) CancelSubscribers(exceptUserID string) { | ||||||
| 	defer t.mu.Unlock() | 	defer t.mu.Unlock() | ||||||
| 	for _, s := range t.subscribers { | 	for _, s := range t.subscribers { | ||||||
| 		if s.userID != exceptUserID { | 		if s.userID != exceptUserID { | ||||||
| 			log.Trace("Canceling subscriber %s", s.userID) | 			log.Field("topic", t.ID).Trace("Canceling subscriber %s", s.userID) | ||||||
| 			s.cancel() | 			s.cancel() | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue