Enhance server configuration for large file uploads and improve token handling. Increase request body size limit in the server to 20 GB, update registration token expiration logic to support infinite expiration, and adjust database schema to accommodate larger file sizes. Add detailed logging for file upload processes and error handling improvements.
This commit is contained in:
@@ -76,13 +76,22 @@ func (s *Secrets) GetManagerSecret() (string, error) {
|
||||
}
|
||||
|
||||
// GenerateRegistrationToken generates a new registration token
|
||||
// If expiresIn is 0, the token will never expire (uses far future date)
|
||||
// Note: Token expiration only affects whether the token can be used for registration.
|
||||
// Once a runner registers, it operates independently using its own secrets.
|
||||
func (s *Secrets) GenerateRegistrationToken(createdBy int64, expiresIn time.Duration) (string, error) {
|
||||
token, err := generateSecret(32)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to generate token: %w", err)
|
||||
}
|
||||
|
||||
expiresAt := time.Now().Add(expiresIn)
|
||||
var expiresAt time.Time
|
||||
if expiresIn == 0 {
|
||||
// Use far future date (year 9999) to represent infinite expiration
|
||||
expiresAt = time.Date(9999, 12, 31, 23, 59, 59, 0, time.UTC)
|
||||
} else {
|
||||
expiresAt = time.Now().Add(expiresIn)
|
||||
}
|
||||
|
||||
_, err = s.db.Exec(
|
||||
"INSERT INTO registration_tokens (token, expires_at, created_by) VALUES (?, ?, ?)",
|
||||
@@ -141,9 +150,16 @@ func (s *Secrets) ValidateRegistrationTokenDetailed(token string) (*TokenValidat
|
||||
return &TokenValidationResult{Valid: false, Reason: "already_used"}, nil
|
||||
}
|
||||
|
||||
if time.Now().After(expiresAt) {
|
||||
return &TokenValidationResult{Valid: false, Reason: "expired"}, nil
|
||||
// Check if token has infinite expiration (year 9999 or later)
|
||||
// Tokens with infinite expiration never expire
|
||||
infiniteExpirationThreshold := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
if expiresAt.Before(infiniteExpirationThreshold) {
|
||||
// Normal expiration check for tokens with finite expiration
|
||||
if time.Now().After(expiresAt) {
|
||||
return &TokenValidationResult{Valid: false, Reason: "expired"}, nil
|
||||
}
|
||||
}
|
||||
// If expiresAt is after the threshold, treat it as infinite (never expires)
|
||||
|
||||
// Mark token as used
|
||||
_, err = s.db.Exec("UPDATE registration_tokens SET used = 1 WHERE id = ?", id)
|
||||
|
||||
Reference in New Issue
Block a user