ddnsupdate 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/HISTORY +2 -0
  2. data/README.md +2 -1
  3. data/bin/ddnsupdate +2 -1
  4. data/lib/ddnsupdate.rb +3 -3
  5. metadata +51 -34
data/HISTORY CHANGED
@@ -1,6 +1,8 @@
1
1
  DDNS Update History
2
2
  ===================
3
3
 
4
+ Version 0.2.0 (2011-09-11)
5
+ * Added static SOA support for DNS that doesn't answer SOA queries (cheap residential routers, ...)
4
6
  Version 0.1.6 (2011-09-09)
5
7
  * README update
6
8
  * gem dependencies updated
data/README.md CHANGED
@@ -38,6 +38,7 @@ ddnsupdate <command> [options]
38
38
  --host, -h <s>: Hostname to update
39
39
  --remote, -r: Use remote IP (default: local ip)
40
40
  --wild, -w: Add a wildcard on the same IP (i.e. *.host IN A ip)
41
+ --soa, -s: Specify soa/server to update instead of trying to autodetect
41
42
 
42
43
  **Generate options:**
43
44
 
@@ -61,7 +62,7 @@ use.
61
62
 
62
63
  After your setup is complete, periodicaly run:
63
64
 
64
- ddnsupdate up -h <hostname> -k <password>
65
+ ddnsupdate up -h <hostname> -k <key>
65
66
 
66
67
  This will update <hostname> with your local ip (usefull for testing on a
67
68
  local network). If you want it to be your remote IP simply add `-r`.
data/bin/ddnsupdate CHANGED
@@ -35,13 +35,14 @@ EOS
35
35
  opt :host, "Hostname to update", :short => "-h", :type => :string
36
36
  opt :remote, "Use remote IP (default: local ip)", :short => "-r"
37
37
  opt :wild, "Add a wildcard on the same IP (i.e. *.host IN A ip)", :short => "-w"
38
+ opt :soa, "Use soa instead of trying to detect it", :short => "-s", :type => :string
38
39
  end
39
40
  Trollop::die "missing host" if cmd_opts[:host].nil?
40
41
  Trollop::die "missing key" if cmd_opts[:key].nil?
41
42
 
42
43
  ip = (cmd_opts[:remote] && determine_remote_ip) || determine_local_ip
43
44
 
44
- puts "Host updated with ip #{ip}" if update(cmd_opts[:host], ip, cmd_opts[:key], cmd_opts[:wild])
45
+ puts "Host updated with ip #{ip}" if update(cmd_opts[:host], ip, cmd_opts[:key], cmd_opts[:wild], cmd_opts[:soa])
45
46
  when "gen"
46
47
  cmd_opts = Trollop::options do
47
48
  banner <<-EOS
data/lib/ddnsupdate.rb CHANGED
@@ -15,7 +15,7 @@ module DDNSUpdate
15
15
  def self.determine_soa(zone)
16
16
  current = zone.gsub(/\.$/, "")
17
17
  soa = nil
18
- while soa.nil? and !current.empty?
18
+ while soa.nil? and not current.match /\.*\..*/
19
19
  soa = %x{dig -t SOA #{current} +noquestion +nostats +nocmd +noqr +nocomments +noadditional +nottlid}
20
20
  if not soa.nil?
21
21
  #Split lines into an array, filtering out comments and blanks
@@ -54,8 +54,8 @@ module DDNSUpdate
54
54
  Net::HTTP.get(URI.parse('http://www.whatismyip.org/'))
55
55
  end
56
56
 
57
- def self.update(zone, ip, key, wild = false)
58
- soa = determine_soa(zone)
57
+ def self.update(zone, ip, key, wild = false, soa = nil)
58
+ soa = determine_soa(zone) if soa.nil?
59
59
  raise UpdateError, "can't find SOA for #{zone}" if soa.nil?
60
60
  curip = determine_current_ip(zone, soa)
61
61
 
metadata CHANGED
@@ -1,65 +1,82 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ddnsupdate
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.6
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Hugues Lismonde
9
13
  autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
- date: 2011-09-09 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
16
+
17
+ date: 2011-09-09 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: trollop
16
- requirement: &70214331638360 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
19
25
  - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '1.13'
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 13
30
+ version: "1.13"
22
31
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70214331638360
25
- description: ! 'DDNSUpdate is a wrapper around nsupdate to facilitate dynamic dns
26
- updates
32
+ version_requirements: *id001
33
+ description: |
34
+ DDNSUpdate is a wrapper around nsupdate to facilitate dynamic dns updates
27
35
 
28
- '
29
36
  email: hugues@epic.net
30
- executables:
37
+ executables:
31
38
  - ddnsupdate
32
39
  extensions: []
40
+
33
41
  extra_rdoc_files: []
34
- files:
42
+
43
+ files:
35
44
  - HISTORY
36
45
  - LICENSE
37
46
  - README.md
38
47
  - bin/ddnsupdate
39
48
  - lib/ddnsupdate.rb
49
+ has_rdoc: true
40
50
  homepage: https://github.com/epicagency/ddnsupdate/
41
51
  licenses: []
52
+
42
53
  post_install_message:
43
54
  rdoc_options: []
44
- require_paths:
55
+
56
+ require_paths:
45
57
  - lib
46
- required_ruby_version: !ruby/object:Gem::Requirement
47
- none: false
48
- requirements:
49
- - - ! '>='
50
- - !ruby/object:Gem::Version
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ segments:
63
+ - 1
64
+ - 8
65
+ - 6
51
66
  version: 1.8.6
52
- required_rubygems_version: !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ! '>='
56
- - !ruby/object:Gem::Version
57
- version: '0'
58
- requirements:
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ requirements:
59
75
  - nsupdate, dig
60
76
  rubyforge_project:
61
- rubygems_version: 1.8.10
77
+ rubygems_version: 1.3.6
62
78
  signing_key:
63
79
  specification_version: 3
64
80
  summary: Performs dynamic dns updates
65
81
  test_files: []
82
+