dping 0.0.1

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 (4) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +22 -0
  3. data/bin/dping +33 -0
  4. metadata +68 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1ba5dc4a450516dd09fbbdffa962618fb1760900
4
+ data.tar.gz: 6c0c2f461f8e76757e8184fc3ae04fee96353dbc
5
+ SHA512:
6
+ metadata.gz: d0ad915a0cb04e48c7960e02499f1e596230038a9b6223c1bce87b5a83126bcd352304f2943ffb3ae2e6fb788840c78f12e95b69afc32ec6aa2e06dcb7276bcc
7
+ data.tar.gz: 67e9f39dc4d85356fd1b45d1f92f328c0ccc4c4f464eeb97804ce286cd7fbef6938ed53b550cd49f08cc36c1e0a42ce99db9fcd43c219e87f5c176997f2f991d
data/README.md ADDED
@@ -0,0 +1,22 @@
1
+ # dping
2
+
3
+ Minimal Ruby script that updates an AWS Route53 record with the local host's outward facing IP address. Useful for a dynamic DNS type setup.
4
+
5
+ Install with:
6
+
7
+ ```
8
+ gem install dping
9
+ ```
10
+
11
+ Create `~/.aws-credentials-master` with something like the following:
12
+
13
+ ```
14
+ AWSAccessKeyId=<key>
15
+ AWSSecretKey=<secret>
16
+ ```
17
+
18
+ Then run from the command line:
19
+
20
+ ```
21
+ dping home.example.com
22
+ ```
data/bin/dping ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "fog"
4
+
5
+ target_name = ARGV.first
6
+ abort("Usage: dping <domain>") unless target_name
7
+
8
+ pairs = File.read(ENV["HOME"] + "/.aws-credentials-master").split.map { |l|
9
+ l.split("=").map { |v| v.strip }
10
+ }
11
+ conf = Hash[pairs]
12
+
13
+ id = conf["AWSAccessKeyId"] or abort("Need AWSAccessKeyId")
14
+ secret = conf["AWSSecretKey"] or abort("Need AWSSecretKey")
15
+
16
+ dns = Fog::DNS.new({
17
+ :provider => 'AWS',
18
+ :aws_access_key_id => id,
19
+ :aws_secret_access_key => secret
20
+ })
21
+
22
+ # get the zone by stripping the subdomain
23
+ target_domain = target_name.split(".").reverse[0, 2].reverse.join(".")
24
+
25
+ ip = Excon.get("https://icanhazip.com", expects: 200).body.strip
26
+
27
+ zone = dns.zones.detect { |z| z.domain =~ /#{target_domain}\.?/ }
28
+ abort("Zone not found") unless zone
29
+
30
+ record = zone.records.detect { |r| r.name =~ /#{target_name}\.?/ }
31
+ abort("Record not found") unless record
32
+
33
+ record.modify(value: [ip])
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dping
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Brandur
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fog
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.23'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.23.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.23'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.23.0
33
+ description:
34
+ email: brandur@mutelight.org
35
+ executables:
36
+ - dping
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - README.md
41
+ - bin/dping
42
+ homepage: https://github.com/brandur/hutils
43
+ licenses:
44
+ - MIT
45
+ metadata: {}
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project:
62
+ rubygems_version: 2.2.2
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: Minimal Ruby script that updates an AWS Route53 record with the local host's
66
+ outward facing IP address.
67
+ test_files: []
68
+ has_rdoc: