mirror of
https://github.com/cmur2/dyndnsd.git
synced 2025-08-09 14:48:37 +02:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
c112b211a0 | |||
b597ecb15e | |||
c73c09f311 | |||
88133edc1a | |||
9dfafd7e8d | |||
af5e4ca3e0 |
@@ -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
|
||||||
|
|
||||||
|
13
CHANGELOG.md
13
CHANGELOG.md
@@ -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:
|
||||||
|
2
Gemfile
2
Gemfile
@@ -1,3 +1,5 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
gemspec
|
gemspec
|
||||||
|
2
Rakefile
2
Rakefile
@@ -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'
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
require 'dyndnsd'
|
|
||||||
|
|
||||||
Dyndnsd::Daemon.run!
|
|
@@ -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
6
exe/dyndnsd
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'dyndnsd'
|
||||||
|
|
||||||
|
Dyndnsd::Daemon.run!
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Dyndnsd
|
module Dyndnsd
|
||||||
module Generator
|
module Generator
|
||||||
|
@@ -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
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Dyndnsd
|
module Dyndnsd
|
||||||
module Responder
|
module Responder
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Dyndnsd
|
module Dyndnsd
|
||||||
module Responder
|
module Responder
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Dyndnsd
|
module Dyndnsd
|
||||||
VERSION = '2.1.0'.freeze
|
VERSION = '2.2.0'
|
||||||
end
|
end
|
||||||
|
@@ -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
|
||||||
|
@@ -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'
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require 'forwardable'
|
require 'forwardable'
|
||||||
|
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Dyndnsd
|
module Dyndnsd
|
||||||
module Updater
|
module Updater
|
||||||
|
Reference in New Issue
Block a user