feat(logging): add detailed logging throughout application components
- Implement logging in router setup, auth handlers, and frpc operations - Add SoftwareInfo struct for version tracking and logging - Enhance error messages with more context and logging - Replace direct error returns with formatted error logging - Add debug logs for token operations and request validations
This commit is contained in:
@@ -5,9 +5,9 @@ import (
|
||||
"crypto/sha256"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"super-frpc/postLog"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
@@ -28,7 +28,7 @@ func GenerateToken(userID int) (string, error) {
|
||||
randomBytes := make([]byte, 32)
|
||||
_, err := rand.Read(randomBytes)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to generate random bytes: %w", err)
|
||||
return "", fmt.Errorf("Failed to generate random bytes: %w", err)
|
||||
}
|
||||
|
||||
hash := sha256.Sum256(append(randomBytes, []byte(fmt.Sprintf("%d", userID))...))
|
||||
@@ -43,6 +43,7 @@ func GenerateToken(userID int) (string, error) {
|
||||
UserID: userID,
|
||||
}
|
||||
|
||||
postLog.Debug(fmt.Sprintf("[GenerateToken] Generated token for userID %d: %s", userID, token))
|
||||
return token, nil
|
||||
}
|
||||
|
||||
@@ -52,15 +53,15 @@ func ValidateToken(userID int, token string) error {
|
||||
|
||||
tokenInfo, exists := tokenMap[userID]
|
||||
if !exists {
|
||||
return errors.New("token not found")
|
||||
return fmt.Errorf("Token not found for userID %d: %s", userID, token)
|
||||
}
|
||||
|
||||
if tokenInfo.Token != token {
|
||||
return errors.New("invalid token")
|
||||
return fmt.Errorf("Invalid token for userID %d: %s", userID, token)
|
||||
}
|
||||
|
||||
if time.Since(tokenInfo.CreatedAt) > tokenTTL {
|
||||
return errors.New("token expired")
|
||||
return fmt.Errorf("Token expired for userID %d: %s", userID, token)
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -73,7 +74,7 @@ func RefreshToken(userID int) (string, error) {
|
||||
randomBytes := make([]byte, 32)
|
||||
_, err := rand.Read(randomBytes)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to generate random bytes: %w", err)
|
||||
return "", fmt.Errorf("Failed to generate random bytes: %w", err)
|
||||
}
|
||||
|
||||
hash := sha256.Sum256(append(randomBytes, []byte(fmt.Sprintf("%d", userID))...))
|
||||
@@ -85,6 +86,7 @@ func RefreshToken(userID int) (string, error) {
|
||||
UserID: userID,
|
||||
}
|
||||
|
||||
postLog.Debug(fmt.Sprintf("[RefreshToken] Refreshed token for userID %d: %s", userID, token))
|
||||
return token, nil
|
||||
}
|
||||
|
||||
@@ -92,6 +94,7 @@ func RemoveToken(userID int) {
|
||||
tokenMux.Lock()
|
||||
defer tokenMux.Unlock()
|
||||
delete(tokenMap, userID)
|
||||
postLog.Debug(fmt.Sprintf("[RemoveToken] Removed token for userID %d: %s", userID, tokenMap[userID].Token))
|
||||
}
|
||||
|
||||
func GetTokenInfo(userID int) (*TokenInfo, error) {
|
||||
@@ -100,7 +103,7 @@ func GetTokenInfo(userID int) (*TokenInfo, error) {
|
||||
|
||||
tokenInfo, exists := tokenMap[userID]
|
||||
if !exists {
|
||||
return nil, errors.New("token not found")
|
||||
return nil, fmt.Errorf("Token not found for userID %d: %s", userID, tokenMap[userID].Token)
|
||||
}
|
||||
|
||||
return tokenInfo, nil
|
||||
@@ -111,10 +114,11 @@ func extractUserIDFromToken(token string) (int, error) {
|
||||
defer tokenMux.RUnlock()
|
||||
for userID, tokenInfo := range tokenMap {
|
||||
if tokenInfo.Token == token {
|
||||
postLog.Debug(fmt.Sprintf("[extractUserIDFromToken] Extracted userID %d from token: %s", userID, token))
|
||||
return userID, nil
|
||||
}
|
||||
}
|
||||
return 0, errors.New("invalid token")
|
||||
return 0, fmt.Errorf("Invalid token: %s", token)
|
||||
}
|
||||
|
||||
func CleanupExpiredTokens() {
|
||||
@@ -124,6 +128,7 @@ func CleanupExpiredTokens() {
|
||||
for userID, tokenInfo := range tokenMap {
|
||||
if time.Since(tokenInfo.CreatedAt) > tokenTTL {
|
||||
delete(tokenMap, userID)
|
||||
postLog.Debug(fmt.Sprintf("[CleanupExpiredTokens] Removed expired token for userID %d: %s", userID, tokenInfo.Token))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -136,12 +141,13 @@ func hashPassword(password string) (string, error) {
|
||||
func verifyPassword(password, hashedPassword string) bool {
|
||||
hash, err := hashPassword(password)
|
||||
if err != nil {
|
||||
postLog.Error(fmt.Sprintf("[verifyPassword] Failed to hash password: %v", err))
|
||||
return false
|
||||
}
|
||||
return hash == hashedPassword
|
||||
}
|
||||
|
||||
func isValidPassword(password string) bool {
|
||||
func isValidPassword(password string) bool { // Validate password complexity and generate hash
|
||||
if len(password) < 8 {
|
||||
return false
|
||||
}
|
||||
@@ -175,7 +181,7 @@ func ValidateTimeStamp(timeStamp int64) error {
|
||||
}
|
||||
currentTime := time.Now().UnixMilli()
|
||||
if currentTime-timeStamp > 3000 || timeStamp-currentTime > 3000 {
|
||||
return errors.New("timestamp out of valid range")
|
||||
return fmt.Errorf("Timestamp out of valid range: %d", timeStamp)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user