mirror of
				https://github.com/cmur2/dyndnsd.git
				synced 2025-11-03 18:25:06 +01:00 
			
		
		
		
	dyndnsd: allow updater to see if database changed
This commit is contained in:
		@@ -68,6 +68,9 @@ Style/HashTransformValues:
 | 
			
		||||
Style/IdenticalConditionalBranches:
 | 
			
		||||
  Enabled: false
 | 
			
		||||
 | 
			
		||||
Style/IfUnlessModifier:
 | 
			
		||||
  Enabled: false
 | 
			
		||||
 | 
			
		||||
Style/InverseMethods:
 | 
			
		||||
  Enabled: false
 | 
			
		||||
 | 
			
		||||
@@ -79,3 +82,6 @@ Style/RescueModifier:
 | 
			
		||||
 | 
			
		||||
Style/SymbolArray:
 | 
			
		||||
  Enabled: false
 | 
			
		||||
 | 
			
		||||
Style/TrailingCommaInArrayLiteral:
 | 
			
		||||
  Enabled: false
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								lib/dyndnsd.rb
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										9
									
								
								lib/dyndnsd.rb
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -56,9 +56,9 @@ module Dyndnsd
 | 
			
		||||
      @db.load
 | 
			
		||||
      @db['serial'] ||= 1
 | 
			
		||||
      @db['hosts'] ||= {}
 | 
			
		||||
      @updater.update(@db)
 | 
			
		||||
      if @db.changed?
 | 
			
		||||
        @db.save
 | 
			
		||||
        @updater.update(@db)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@@ -193,8 +193,8 @@ module Dyndnsd
 | 
			
		||||
    def update_db
 | 
			
		||||
      @db['serial'] += 1
 | 
			
		||||
      Dyndnsd.logger.info "Committing update ##{@db['serial']}"
 | 
			
		||||
      @db.save
 | 
			
		||||
      @updater.update(@db)
 | 
			
		||||
      @db.save
 | 
			
		||||
      Metriks.meter('updates.committed').mark
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@@ -313,7 +313,10 @@ module Dyndnsd
 | 
			
		||||
    private_class_method def self.setup_rack(config)
 | 
			
		||||
      # configure daemon
 | 
			
		||||
      db = Database.new(config['db'])
 | 
			
		||||
      updater = Updater::CommandWithBindZone.new(config['domain'], config.dig('updater', 'params')) if config.dig('updater', 'name') == 'command_with_bind_zone'
 | 
			
		||||
      case config.dig('updater', 'name')
 | 
			
		||||
      when 'command_with_bind_zone'
 | 
			
		||||
        updater = Updater::CommandWithBindZone.new(config['domain'], config.dig('updater', 'params'))
 | 
			
		||||
      end
 | 
			
		||||
      daemon = Daemon.new(config, db, updater)
 | 
			
		||||
 | 
			
		||||
      # configure rack
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,9 @@ module Dyndnsd
 | 
			
		||||
      # @param db [Dyndnsd::Database]
 | 
			
		||||
      # @return [void]
 | 
			
		||||
      def update(db)
 | 
			
		||||
        # do not regenerate zone file (assumed to be persistent) if DB did not change
 | 
			
		||||
        return if !db.changed?
 | 
			
		||||
 | 
			
		||||
        Helper.span('updater_update') do |span|
 | 
			
		||||
          span.set_tag('dyndnsd.updater.name', self.class.name&.split('::')&.last || 'None')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user