mirror of
				https://github.com/h44z/wg-portal.git
				synced 2025-11-03 23:56:18 +00:00 
			
		
		
		
	expiry feature: automatically re-enable peers if date is in the future
This commit is contained in:
		@@ -72,6 +72,7 @@ type Config struct {
 | 
			
		||||
		SessionSecret           string `yaml:"sessionSecret" envconfig:"SESSION_SECRET"`
 | 
			
		||||
		LogoUrl                 string `yaml:"logoUrl" envconfig:"LOGO_URL"`
 | 
			
		||||
		BackgroundTaskInterval  int    `yaml:"backgroundTaskInterval" envconfig:"BACKGROUND_TASK_INTERVAL"` // in seconds
 | 
			
		||||
		ExpiryReEnable          bool   `yaml:"expiryReEnable" envconfig:"EXPIRY_REENABLE"`
 | 
			
		||||
	} `yaml:"core"`
 | 
			
		||||
	Database common.DatabaseConfig `yaml:"database"`
 | 
			
		||||
	Email    common.MailConfig     `yaml:"email"`
 | 
			
		||||
 
 | 
			
		||||
@@ -81,9 +81,6 @@ func (s *Server) PostAdminEditPeer(c *gin.Context) {
 | 
			
		||||
			formPeer.ExpiresAt = nil
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if formPeer.ExpiresAt != nil && formPeer.ExpiresAt.IsZero() { // convert 01-01-0001 to nil
 | 
			
		||||
		formPeer.ExpiresAt = nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Update in database
 | 
			
		||||
	if err := s.UpdatePeer(formPeer, now); err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -141,6 +141,13 @@ func (s *Server) UpdatePeer(peer wireguard.Peer, updateTime time.Time) error {
 | 
			
		||||
	currentPeer := s.peers.GetPeerByKey(peer.PublicKey)
 | 
			
		||||
	dev := s.peers.GetDevice(peer.DeviceName)
 | 
			
		||||
 | 
			
		||||
	// Check if expiry date is in the future, an reactivate the peer in case.
 | 
			
		||||
	if s.config.Core.ExpiryReEnable && currentPeer.DeactivatedReason == wireguard.DeactivatedReasonExpired &&
 | 
			
		||||
		peer.ExpiresAt != nil && peer.ExpiresAt.After(time.Now()) {
 | 
			
		||||
		peer.DeactivatedAt = nil
 | 
			
		||||
		peer.DeactivatedReason = ""
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Update WireGuard device
 | 
			
		||||
	var err error
 | 
			
		||||
	switch {
 | 
			
		||||
@@ -156,6 +163,9 @@ func (s *Server) UpdatePeer(peer wireguard.Peer, updateTime time.Time) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	peer.UID = fmt.Sprintf("u%x", md5.Sum([]byte(peer.PublicKey)))
 | 
			
		||||
	if peer.ExpiresAt != nil && peer.ExpiresAt.IsZero() { // convert 01-01-0001 to nil
 | 
			
		||||
		peer.ExpiresAt = nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Update in database
 | 
			
		||||
	if err := s.peers.UpdatePeer(peer); err != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user