1
0
mirror of https://github.com/cmur2/dyndnsd.git synced 2025-08-09 14:48:37 +02:00

Compare commits

...

6 Commits

Author SHA1 Message Date
cn
c112b211a0 release: 2.2.0 2020-03-06 21:55:42 +01:00
cn
b597ecb15e gem: adopt frozen string literals 2020-03-06 21:48:17 +01:00
cn
c73c09f311 gem: refactor gemspec, exclude tests from gem, move binaries to ./exe
- based on recommendations of https://piotrmurach.com/articles/writing-a-ruby-gem-specification/
2020-03-06 21:46:55 +01:00
cn
88133edc1a gems: fix order, drop unnecessary json dependency
- json was added pre Ruby 2.0 in e50430b177
2020-03-02 01:44:39 +01:00
cn
9dfafd7e8d release: 2.1.1 2020-03-01 21:55:35 +01:00
cn
af5e4ca3e0 dyndnsd: handle potential nil cases detected by sorbet
- including review suggestions from @jgraichen
2020-03-01 21:51:28 +01:00
20 changed files with 71 additions and 32 deletions

View File

@@ -1,9 +1,6 @@
AllCops: AllCops:
TargetRubyVersion: '2.3' TargetRubyVersion: '2.3'
Gemspec/OrderedDependencies:
Enabled: false
Layout/EmptyLineAfterGuardClause: Layout/EmptyLineAfterGuardClause:
Enabled: false Enabled: false
@@ -56,9 +53,6 @@ Style/Documentation:
Style/FormatStringToken: Style/FormatStringToken:
Enabled: false Enabled: false
Style/FrozenStringLiteralComment:
Enabled: false
Style/GuardClause: Style/GuardClause:
Enabled: false Enabled: false

View File

@@ -1,5 +1,18 @@
# Changelog # Changelog
## 2.2.0 (March 6, 2020)
IMPROVEMENTS:
- Refactor gemspec based on [recommendations](https://piotrmurach.com/articles/writing-a-ruby-gem-specification/) so tests are now excluded from gem and binaries move to `./exe` directory
- Adopt Ruby 2.3 frozen string literals for source code potentially reducing memory consumption
## 2.1.1 (March 1, 2020)
IMPROVEMENTS:
- Fix potential `nil` cases detected by [Sorbet](https://sorbet.org) including refactorings
## 2.1.0 (March 1, 2020) ## 2.1.0 (March 1, 2020)
IMPROVEMENTS: IMPROVEMENTS:

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
source 'https://rubygems.org' source 'https://rubygems.org'
gemspec gemspec

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'bundler/gem_tasks' require 'bundler/gem_tasks'
require 'rspec/core/rake_task' require 'rspec/core/rake_task'
require 'rubocop/rake_task' require 'rubocop/rake_task'

View File

@@ -1,4 +0,0 @@
require 'dyndnsd'
Dyndnsd::Daemon.run!

View File

@@ -1,7 +1,6 @@
# frozen_string_literal: true
$LOAD_PATH.push File.expand_path('lib', __dir__) require_relative 'lib/dyndnsd/version'
require 'dyndnsd/version'
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = 'dyndnsd' s.name = 'dyndnsd'
@@ -9,29 +8,36 @@ Gem::Specification.new do |s|
s.summary = 'dyndnsd.rb' s.summary = 'dyndnsd.rb'
s.description = 'A small, lightweight and extensible DynDNS server written with Ruby and Rack.' s.description = 'A small, lightweight and extensible DynDNS server written with Ruby and Rack.'
s.author = 'Christian Nicolai' s.author = 'Christian Nicolai'
s.email = 'chrnicolai@gmail.com'
s.homepage = 'https://github.com/cmur2/dyndnsd' s.homepage = 'https://github.com/cmur2/dyndnsd'
s.license = 'Apache-2.0' s.license = 'Apache-2.0'
s.metadata = {
'bug_tracker_uri' => "#{s.homepage}/issues",
'changelog_uri' => "#{s.homepage}/blob/master/CHANGELOG.md",
'source_code_uri' => s.homepage
}
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR) s.files = `git ls-files -z`.split("\x0").select do |f|
s.test_files = s.files.grep(%r{^(test|spec|features)/}) f.match(%r{^(init.d|lib)/})
end
s.require_paths = ['lib'] s.require_paths = ['lib']
s.bindir = 'exe'
s.executables = ['dyndnsd'] s.executables = ['dyndnsd']
s.extra_rdoc_files = Dir['README.md', 'CHANGELOG.md', 'LICENSE']
s.required_ruby_version = '>= 2.3' s.required_ruby_version = '>= 2.3'
s.add_runtime_dependency 'rack', '~> 2.0' s.add_runtime_dependency 'jaeger-client', '~> 0.10.0'
s.add_runtime_dependency 'json'
s.add_runtime_dependency 'metriks' s.add_runtime_dependency 'metriks'
s.add_runtime_dependency 'opentracing', '~> 0.5.0' s.add_runtime_dependency 'opentracing', '~> 0.5.0'
s.add_runtime_dependency 'rack', '~> 2.0'
s.add_runtime_dependency 'rack-tracer', '~> 0.9.0' s.add_runtime_dependency 'rack-tracer', '~> 0.9.0'
s.add_runtime_dependency 'jaeger-client', '~> 0.10.0'
s.add_development_dependency 'bundler' s.add_development_dependency 'bundler'
s.add_development_dependency 'bundler-audit', '~> 0.6.0'
s.add_development_dependency 'rack-test'
s.add_development_dependency 'rake' s.add_development_dependency 'rake'
s.add_development_dependency 'rspec' s.add_development_dependency 'rspec'
s.add_development_dependency 'rack-test'
s.add_development_dependency 'rubocop', '~> 0.80.0' s.add_development_dependency 'rubocop', '~> 0.80.0'
s.add_development_dependency 'bundler-audit', '~> 0.6.0'
s.add_development_dependency 'solargraph' s.add_development_dependency 'solargraph'
end end

6
exe/dyndnsd Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'dyndnsd'
Dyndnsd::Daemon.run!

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env ruby # frozen_string_literal: true
require 'etc' require 'etc'
require 'logger' require 'logger'
@@ -112,8 +112,14 @@ module Dyndnsd
# drop priviliges as soon as possible # drop priviliges as soon as possible
# NOTE: first change group than user # NOTE: first change group than user
Process::Sys.setgid(Etc.getgrnam(config['group']).gid) if config['group'] if config['group']
Process::Sys.setuid(Etc.getpwnam(config['user']).uid) if config['user'] group = Etc.getgrnam(config['group'])
Process::Sys.setgid(group.gid) if group
end
if config['user']
user = Etc.getpwnam(config['user'])
Process::Sys.setuid(user.uid) if user
end
setup_traps setup_traps

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
require 'forwardable' require 'forwardable'
@@ -15,7 +16,7 @@ module Dyndnsd
# @return [void] # @return [void]
def load def load
if File.file?(@db_file) if File.file?(@db_file)
@db = JSON.parse(File.open(@db_file, 'r', &:read)) @db = JSON.parse(File.read(@db_file, mode: 'r'))
else else
@db = {} @db = {}
end end

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
module Dyndnsd module Dyndnsd
module Generator module Generator

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
require 'ipaddr' require 'ipaddr'
@@ -57,7 +58,7 @@ module Dyndnsd
'error.kind': e.class.to_s, 'error.kind': e.class.to_s,
'error.object': e, 'error.object': e,
message: e.message, message: e.message,
stack: e.backtrace.join("\n") stack: e.backtrace&.join("\n") || ''
) )
raise raise
ensure ensure

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
module Dyndnsd module Dyndnsd
module Responder module Responder

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
module Dyndnsd module Dyndnsd
module Responder module Responder

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
# Adapted from https://github.com/eric/metriks-graphite/blob/master/lib/metriks/reporter/graphite.rb # Adapted from https://github.com/eric/metriks-graphite/blob/master/lib/metriks/reporter/graphite.rb

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
module Dyndnsd module Dyndnsd
module Updater module Updater
@@ -14,7 +15,7 @@ module Dyndnsd
# @return [void] # @return [void]
def update(db) def update(db)
Helper.span('updater_update') do |span| Helper.span('updater_update') do |span|
span.set_tag('dyndnsd.updater.name', self.class.name.split('::').last) span.set_tag('dyndnsd.updater.name', self.class.name&.split('::')&.last || 'None')
# write zone file in bind syntax # write zone file in bind syntax
File.open(@zone_file, 'w') { |f| f.write(@generator.generate(db)) } File.open(@zone_file, 'w') { |f| f.write(@generator.generate(db)) }
@@ -24,7 +25,7 @@ module Dyndnsd
end end
# detach so children don't become zombies # detach so children don't become zombies
Process.detach(pid) Process.detach(pid) if pid
end end
end end
end end

View File

@@ -1,4 +1,5 @@
# frozen_string_literal: true
module Dyndnsd module Dyndnsd
VERSION = '2.1.0'.freeze VERSION = '2.2.0'
end end

View File

@@ -1,4 +1,6 @@
require 'spec_helper' # frozen_string_literal: true
require_relative 'spec_helper'
describe Dyndnsd::Daemon do describe Dyndnsd::Daemon do
include Rack::Test::Methods include Rack::Test::Methods

View File

@@ -1,8 +1,10 @@
# frozen_string_literal: true
require 'rubygems' require 'rubygems'
require 'bundler/setup' require 'bundler/setup'
require 'rack/test' require 'rack/test'
require 'dyndnsd' require 'dyndnsd'
require 'support/dummy_database'
require 'support/dummy_updater' require_relative 'support/dummy_database'
require_relative 'support/dummy_updater'

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
require 'forwardable' require 'forwardable'

View File

@@ -1,3 +1,4 @@
# frozen_string_literal: true
module Dyndnsd module Dyndnsd
module Updater module Updater