1
0
mirror of https://github.com/cmur2/dyndnsd.git synced 2025-08-08 08:33:56 +02:00

Compare commits

..

66 Commits

Author SHA1 Message Date
cn
65f8dbb21b release: 3.7.3 2022-12-29 22:26:24 +01:00
depfu[bot]
6b6f6cf3a4 gems: update rubocop to version 1.41.0 2022-12-21 14:30:51 +01:00
depfu[bot]
9af4f03013 gems: update solargraph to version 0.48.0 2022-12-20 12:28:56 +01:00
depfu[bot]
b77c3b0996 gems: update rubocop-rspec to version 2.16.0 2022-12-14 14:35:18 +01:00
depfu[bot]
600cbeb453 gems: update rubocop to version 1.40.0 2022-12-09 22:25:23 +01:00
renovate[bot]
b2d369cc4c project: update aquasecurity/trivy to v0.35.0 2022-12-01 09:24:27 +01:00
renovate[bot]
31e73c7c4a docker: update alpine Docker tag to v3.17.0 2022-11-24 09:47:17 +01:00
depfu[bot]
52874542a7 gems: update opentelemetry-instrumentation-rack to version 0.22.0 2022-11-17 22:57:42 +01:00
renovate[bot]
1daf68376d docker: update alpine Docker tag to v3.16.3 2022-11-17 09:08:46 +01:00
depfu[bot]
b5f5fa9105 gems: update rubocop to version 1.39.0 2022-11-15 10:20:14 +01:00
Christian Nicolai
ea1d4baa04 release: 3.7.2 2022-11-10 09:25:44 +01:00
renovate[bot]
944d3fbc5d project: update hadolint/hadolint to v2.12.0 2022-11-10 09:19:01 +01:00
depfu[bot]
78721c5b15 gems: update rubocop-rspec to version 2.15.0 2022-11-04 23:39:37 +01:00
renovate[bot]
fce992b842 project: update aquasecurity/trivy to v0.34.0 2022-11-03 09:06:33 +01:00
depfu[bot]
a2a51d63ac gems: update rubocop to version 1.38.0 2022-11-02 10:58:46 +01:00
renovate[bot]
b19213d099 project: update aquasecurity/trivy to v0.33.0 2022-10-27 11:36:41 +02:00
depfu[bot]
ede79802d3 gems: update rubocop-rspec to version 2.14.1 2022-10-25 11:53:34 +02:00
depfu[bot]
d4483b02a2 gems: update rubocop to version 1.37.0 2022-10-21 12:49:15 +02:00
renovate[bot]
1fbad10a24 project: update aquasecurity/trivy to v0.32.1 2022-09-29 08:38:24 +02:00
depfu[bot]
da28c76a68 gems: update solargraph to version 0.47.0 2022-09-26 21:23:25 +02:00
renovate[bot]
e5c66824ab project: update aquasecurity/trivy to v0.32.0 2022-09-22 09:40:17 +02:00
cn
3d787a46ea release: 3.7.1 2022-09-20 19:35:55 +02:00
cn
3a5b1bcb27 gem: allow config to contain users without any hosts 2022-09-20 19:31:46 +02:00
Christian Nicolai
d066b3ecee gems: update opentelemetry 2022-09-16 07:12:10 +02:00
Christian Nicolai
71b0fda5ee release: 3.7.0 2022-09-16 06:43:59 +02:00
cn
b1e948a2dc docs: mention Rack 3 update in changelog 2022-09-15 21:41:44 +02:00
depfu[bot]
e22035919b gems: update rack to version 3.0.0 2022-09-15 21:36:55 +02:00
depfu[bot]
1ffd1de964 gems: update rubocop-rspec to version 2.13.1 2022-09-13 21:03:37 +02:00
depfu[bot]
39c7dc7837 gems: update rubocop to version 1.36.0 2022-09-02 12:35:48 +02:00
renovate[bot]
7528e8084e project: update aquasecurity/trivy to v0.31.3 2022-09-01 09:44:35 +02:00
depfu[bot]
343a56a6ba gems: update solargraph to version 0.46.0 2022-08-23 15:10:08 +02:00
renovate[bot]
6111edc067 project: update aquasecurity/trivy to v0.31.2 2022-08-18 08:29:37 +02:00
depfu[bot]
0e0d9dfc86 gems: update rubocop to version 1.35.0 2022-08-13 19:24:50 +02:00
cn
fadaf4840c release: 3.6.2 2022-08-11 19:13:03 +02:00
renovate[bot]
9281e6958b docker: update alpine Docker tag to v3.16.2 2022-08-11 09:32:38 +02:00
depfu[bot]
ec1e836a89 gems: update rubocop to version 1.34.1 2022-08-10 16:35:01 +02:00
depfu[bot]
d80268c1b8 gems: update rubocop to version 1.33.0 2022-08-05 14:09:39 +02:00
renovate[bot]
d04e039b2a project: update aquasecurity/trivy to v0.30.4 2022-07-28 09:05:18 +02:00
depfu[bot]
c14618c503 gems: update rubocop to version 1.32.0 2022-07-22 15:49:52 +02:00
Christian Nicolai
0e700e8b7b release: 3.6.1 2022-07-21 07:20:42 +02:00
depfu[bot]
d256c86420 gems: update opentelemetry-exporter-jaeger to version 0.21.0 2022-07-21 07:13:58 +02:00
renovate[bot]
a589148d9e docker: update alpine to v3.16.1 2022-07-21 07:13:05 +02:00
renovate[bot]
232b3f32a2 project: update aquasecurity/trivy to v0.30.1 2022-07-21 07:12:52 +02:00
depfu[bot]
3c83eb4347 gems: update rubocop-rspec to version 2.12.0 2022-07-03 14:28:37 +02:00
depfu[bot]
800618f434 gems: update rubocop to version 1.31.0 2022-06-28 11:02:48 +02:00
renovate[bot]
1e61a12b48 project: update aquasecurity/trivy to v0.29.2 2022-06-23 08:12:04 +02:00
Christian Nicolai
7bcaf18f7e release: 3.6.0 2022-06-02 13:39:01 +02:00
Renovate Bot
c0d69f591f project: update aquasecurity/trivy to v0.28.1 2022-06-02 08:44:54 +02:00
Renovate Bot
2228e742cf docker: update alpine to v3.16.0 2022-05-29 17:14:18 +02:00
depfu[bot]
e7f528377b gems: update solargraph to version 0.45.0 2022-05-28 17:40:09 +02:00
depfu[bot]
537682804f gems: update rubocop to version 1.30.0 2022-05-28 17:02:03 +02:00
depfu[bot]
7ffab915ac gems: update rubocop-rspec to version 2.11.1 2022-05-22 19:05:16 +02:00
Renovate Bot
d515a87640 project: update aquasecurity/trivy to v0.28.0 2022-05-19 08:32:36 +02:00
Renovate Bot
4a7eba5ad6 ci: update docker/build-push-action action to v3 2022-05-12 09:40:28 +02:00
Renovate Bot
52bb8ee9d2 ci: update docker/setup-buildx-action action to v2 2022-05-12 09:40:07 +02:00
Renovate Bot
eb1d88807b ci: update docker/login-action action to v2 2022-05-12 09:39:47 +02:00
depfu[bot]
7c2104b0ce gems: update rubocop to version 1.29.0 2022-05-08 16:54:07 +02:00
cn
4237d35fcc gem: drop support for Rubies < 2.7 2022-05-08 16:36:20 +02:00
Christian Nicolai
451ed20f5d gem: fix Renovate for GHA updates 2022-05-05 10:16:00 +02:00
Christian Nicolai
a2879c6c9a release: 3.5.3 2022-05-05 08:20:35 +02:00
Renovate Bot
f882381f9d project: update aquasecurity/trivy to v0.27.1 2022-04-28 09:03:03 +02:00
depfu[bot]
fb536da665 gems: update rubocop to version 1.28.1 2022-04-22 21:28:22 +02:00
Renovate Bot
49b7b07b52 project: update aquasecurity/trivy to v0.26.0 2022-04-21 08:38:14 +02:00
depfu[bot]
2854155db2 gems: update rubocop-rspec to version 2.10.0 2022-04-20 10:50:04 +02:00
Renovate Bot
b40c6f8c30 project: update aquasecurity/trivy to v0.25.4 2022-04-14 09:07:08 +02:00
depfu[bot]
44605f0f04 gems: update rubocop to version 1.27.0 2022-04-09 11:59:05 +02:00
12 changed files with 88 additions and 24 deletions

View File

@@ -26,7 +26,7 @@
commitMessagePrefix: "docker: ", commitMessagePrefix: "docker: ",
}, },
{ {
matchDatasources: ["github-actions"], matchManagers: ["github-actions"],
commitMessagePrefix: "ci: ", commitMessagePrefix: "ci: ",
}, },
], ],

View File

@@ -33,16 +33,16 @@ jobs:
# https://github.com/marketplace/actions/build-and-push-docker-images # https://github.com/marketplace/actions/build-and-push-docker-images
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub - name: Login to Docker Hub
uses: docker/login-action@v1 uses: docker/login-action@v2
with: with:
username: cmur2 username: cmur2
password: ${{ secrets.DOCKER_TOKEN }} password: ${{ secrets.DOCKER_TOKEN }}
- name: Build and push Docker image for dyndnsd ${{ env.DYNDNSD_VERSION }} - name: Build and push Docker image for dyndnsd ${{ env.DYNDNSD_VERSION }}
uses: docker/build-push-action@v2 uses: docker/build-push-action@v3
with: with:
context: docker context: docker
build-args: | build-args: |

View File

@@ -17,8 +17,6 @@ jobs:
strategy: strategy:
matrix: matrix:
ruby-version: ruby-version:
- '2.5'
- '2.6'
- '2.7' - '2.7'
- '3.0' - '3.0'
- '3.1' - '3.1'

View File

@@ -3,7 +3,7 @@ require:
- rubocop-rspec - rubocop-rspec
AllCops: AllCops:
TargetRubyVersion: '2.5' TargetRubyVersion: '2.7'
NewCops: enable NewCops: enable
Gemspec/RequireMFA: Gemspec/RequireMFA:

View File

@@ -1,5 +1,57 @@
# Changelog # Changelog
## 3.7.3 (December 29th, 2022)
OTHER:
- update base of Docker image to Alpine 3.17.0 (from 3.16.2 before)
## 3.7.2 (November 10th, 2022)
OTHER:
- re-release 3.7.1 to rebuild Docker image with security vulnerabilities fixes
## 3.7.1 (September 20th, 2022)
IMPROVEMENTS:
- fix [TypeError](https://github.com/cmur2/dyndnsd/issues/205) when user has no hosts configured
## 3.7.0 (September 16th, 2022)
IMPROVEMENTS:
- Update to Rack 3
## 3.6.2 (August 11th, 2022)
OTHER:
- update base of Docker image to Alpine 3.16.2 (from 3.16.1 before)
## 3.6.1 (July 21st, 2022)
OTHER:
- update base of Docker image to Alpine 3.16.1 (from 3.16.0 before)
## 3.6.0 (June 2nd, 2022)
IMPROVEMENTS:
- Drop EOL Ruby 2.6 and lower support, now minimum version supported is Ruby 2.7
OTHER:
- update base of Docker image to Alpine 3.16 (from 3.15.7 before)
## 3.5.3 (May 5th, 2022)
OTHER:
- re-release 3.5.2 to rebuild Docker image with security vulnerabilities fixes
## 3.5.2 (April 7th, 2022) ## 3.5.2 (April 7th, 2022)
OTHER: OTHER:

View File

@@ -22,10 +22,10 @@ namespace :solargraph do
end end
# renovate: datasource=github-tags depName=hadolint/hadolint # renovate: datasource=github-tags depName=hadolint/hadolint
hadolint_version = 'v2.10.0' hadolint_version = 'v2.12.0'
# renovate: datasource=github-tags depName=aquasecurity/trivy # renovate: datasource=github-tags depName=aquasecurity/trivy
trivy_version = 'v0.25.3' trivy_version = 'v0.35.0'
namespace :docker do namespace :docker do
ci_image = 'cmur2/dyndnsd:ci' ci_image = 'cmur2/dyndnsd:ci'

View File

@@ -1,4 +1,4 @@
FROM alpine:3.15.4 FROM alpine:3.17.0
EXPOSE 5353 8080 EXPOSE 5353 8080

View File

@@ -1,4 +1,4 @@
FROM alpine:3.15.4 FROM alpine:3.17.0
EXPOSE 5353 8080 EXPOSE 5353 8080

View File

@@ -25,15 +25,16 @@ Gem::Specification.new do |s|
s.executables = ['dyndnsd'] s.executables = ['dyndnsd']
s.extra_rdoc_files = Dir['README.md', 'CHANGELOG.md', 'LICENSE'] s.extra_rdoc_files = Dir['README.md', 'CHANGELOG.md', 'LICENSE']
s.required_ruby_version = '>= 2.5' s.required_ruby_version = '>= 2.7'
s.add_runtime_dependency 'async', '~> 1.30.0' s.add_runtime_dependency 'async', '~> 1.30.0'
s.add_runtime_dependency 'async-dns', '~> 1.3.0' s.add_runtime_dependency 'async-dns', '~> 1.3.0'
s.add_runtime_dependency 'metriks' s.add_runtime_dependency 'metriks'
s.add_runtime_dependency 'opentelemetry-exporter-jaeger', '~> 0.20.0' s.add_runtime_dependency 'opentelemetry-exporter-jaeger', '~> 0.22.0'
s.add_runtime_dependency 'opentelemetry-instrumentation-rack', '~> 0.20.0' s.add_runtime_dependency 'opentelemetry-instrumentation-rack', '~> 0.22.0'
s.add_runtime_dependency 'opentelemetry-sdk', '~> 1.0.0.rc2' s.add_runtime_dependency 'opentelemetry-sdk', '~> 1.2.0'
s.add_runtime_dependency 'rack', '~> 2.0' s.add_runtime_dependency 'rack', '~> 3.0'
s.add_runtime_dependency 'rackup'
s.add_runtime_dependency 'webrick', '>= 1.6.1' s.add_runtime_dependency 'webrick', '>= 1.6.1'
s.add_development_dependency 'bundler' s.add_development_dependency 'bundler'
@@ -41,8 +42,8 @@ Gem::Specification.new do |s|
s.add_development_dependency 'rack-test' 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 'rubocop', '~> 1.26.0' s.add_development_dependency 'rubocop', '~> 1.41.0'
s.add_development_dependency 'rubocop-rake', '~> 0.6.0' s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
s.add_development_dependency 'rubocop-rspec', '~> 2.9.0' s.add_development_dependency 'rubocop-rspec', '~> 2.16.0'
s.add_development_dependency 'solargraph', '~> 0.44.0' s.add_development_dependency 'solargraph', '~> 0.48.0'
end end

View File

@@ -7,6 +7,7 @@ require 'ipaddr'
require 'json' require 'json'
require 'yaml' require 'yaml'
require 'rack' require 'rack'
require 'rackup'
require 'metriks' require 'metriks'
require 'opentelemetry/instrumentation/rack' require 'opentelemetry/instrumentation/rack'
require 'opentelemetry/sdk' require 'opentelemetry/sdk'
@@ -214,10 +215,11 @@ module Dyndnsd
invalid_hostnames = hostnames.select { |h| !Helper.fqdn_valid?(h, @domain) } invalid_hostnames = hostnames.select { |h| !Helper.fqdn_valid?(h, @domain) }
return [422, {'X-DynDNS-Response' => 'hostname_malformed'}, []] if invalid_hostnames.any? return [422, {'X-DynDNS-Response' => 'hostname_malformed'}, []] if invalid_hostnames.any?
# we can trust this information since user was authorized by middleware
user = env['REMOTE_USER'] user = env['REMOTE_USER']
# check for hostnames that the user does not own # check for hostnames that the user does not own
forbidden_hostnames = hostnames - @users[user]['hosts'] forbidden_hostnames = hostnames - @users[user].fetch('hosts', [])
return [422, {'X-DynDNS-Response' => 'host_forbidden'}, []] if forbidden_hostnames.any? return [422, {'X-DynDNS-Response' => 'host_forbidden'}, []] if forbidden_hostnames.any?
if params['offline'] == 'YES' if params['offline'] == 'YES'
@@ -259,10 +261,10 @@ module Dyndnsd
# @return [void] # @return [void]
private_class_method def self.setup_traps private_class_method def self.setup_traps
Signal.trap('INT') do Signal.trap('INT') do
Rack::Handler::WEBrick.shutdown Rackup::Handler::WEBrick.shutdown
end end
Signal.trap('TERM') do Signal.trap('TERM') do
Rack::Handler::WEBrick.shutdown Rackup::Handler::WEBrick.shutdown
end end
end end
@@ -350,7 +352,7 @@ module Dyndnsd
app = OpenTelemetry::Instrumentation::Rack::Middlewares::TracerMiddleware.new(app) app = OpenTelemetry::Instrumentation::Rack::Middlewares::TracerMiddleware.new(app)
Rack::Handler::WEBrick.run app, Host: config['host'], Port: config['port'] Rackup::Handler::WEBrick.run app, Host: config['host'], Port: config['port']
end end
end end
end end

View File

@@ -1,5 +1,5 @@
# frozen_string_literal: true # frozen_string_literal: true
module Dyndnsd module Dyndnsd
VERSION = '3.5.2' VERSION = '3.7.3'
end end

View File

@@ -15,6 +15,9 @@ describe Dyndnsd::Daemon do
'test' => { 'test' => {
'password' => 'secret', 'password' => 'secret',
'hosts' => ['foo.example.org', 'bar.example.org'] 'hosts' => ['foo.example.org', 'bar.example.org']
},
'test2' => {
'password' => 'ihavenohosts'
} }
} }
} }
@@ -99,6 +102,14 @@ describe Dyndnsd::Daemon do
expect(last_response.body).to eq('notfqdn') expect(last_response.body).to eq('notfqdn')
end end
it 'rejects request if user does not own any hostnames' do
authorize 'test2', 'ihavenohosts'
get '/nic/update?hostname=doesnotexisthost.example.org'
expect(last_response).to be_ok
expect(last_response.body).to eq('nohost')
end
it 'rejects request if user does not own one hostname' do it 'rejects request if user does not own one hostname' do
authorize 'test', 'secret' authorize 'test', 'secret'