murakumo 0.4.7 → 0.6.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.
- data/README +2 -0
- data/bin/murakumo-install-init-script +10 -1
- data/lib/cli/murakumo.rb +1 -1
- data/lib/cli/murakumo_options.rb +8 -5
- data/lib/misc/murakumo_const.rb +1 -1
- data/lib/srv/murakumo_cloud.rb +2 -2
- data/lib/srv/murakumo_server.rb +9 -4
- metadata +93 -110
data/README
CHANGED
@@ -22,7 +22,16 @@ else
|
|
22
22
|
exit 1
|
23
23
|
end
|
24
24
|
|
25
|
-
bin_dir =
|
25
|
+
bin_dir = nil
|
26
|
+
|
27
|
+
if defined?(Gem)
|
28
|
+
bin_dir = Gem.bindir
|
29
|
+
elsif defined?(RbConfig)
|
30
|
+
bin_dir = ((RbConfig::CONFIG['bindir'] rescue nil) || '').strip
|
31
|
+
else
|
32
|
+
$stderr.puts 'error: bin dir is not found.'
|
33
|
+
exit 1
|
34
|
+
end
|
26
35
|
|
27
36
|
`cp -i #{gem_dir}/murakumo-#{Murakumo::VERSION}/etc/murakumo.server #{INIT_D_DIR}/murakumo`
|
28
37
|
`chmod 755 #{INIT_D_DIR}/murakumo`
|
data/lib/cli/murakumo.rb
CHANGED
@@ -12,7 +12,7 @@ if options[:daemon]
|
|
12
12
|
# RExecに処理を委譲するのでARGVの先頭にdaemonizeのコマンドを格納
|
13
13
|
ARGV.unshift options[:daemon].to_s
|
14
14
|
|
15
|
-
Murakumo::Server.
|
15
|
+
Murakumo::Server.working_directory = options[:working_dir]
|
16
16
|
Murakumo::Server.daemonize
|
17
17
|
else
|
18
18
|
# デーモン化しない場合
|
data/lib/cli/murakumo_options.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'logger'
|
2
2
|
require 'optopus'
|
3
|
-
require '
|
3
|
+
require 'rubydns'
|
4
4
|
require 'socket'
|
5
5
|
|
6
6
|
require 'cli/murakumo_initializer_context'
|
@@ -107,8 +107,8 @@ def murakumo_parse_args
|
|
107
107
|
desc 'command of daemonize: {start|stop|restart|status}'
|
108
108
|
option :daemon, '-d', '--daemon CMD', :type => [:start, :stop, :restart, :status]
|
109
109
|
|
110
|
-
desc 'directory
|
111
|
-
option :
|
110
|
+
desc 'var directory path'
|
111
|
+
option :working_dir, '-w', '--working-dir PATH', :default => '/var'
|
112
112
|
|
113
113
|
desc 'output path of a log'
|
114
114
|
option :log_path, '-l', '--log-path PATH'
|
@@ -145,8 +145,11 @@ def murakumo_parse_args
|
|
145
145
|
|
146
146
|
# resolver
|
147
147
|
if options[:resolver]
|
148
|
-
|
149
|
-
options[:resolver]
|
148
|
+
servers = []
|
149
|
+
options[:resolver].each do |addr|
|
150
|
+
[:udp, :tcp].each {|prot| servers << [prot, addr.strip, 53] }
|
151
|
+
end
|
152
|
+
options[:resolver] = RubyDNS::Resolver.new(servers)
|
150
153
|
end
|
151
154
|
|
152
155
|
# initial nodes
|
data/lib/misc/murakumo_const.rb
CHANGED
data/lib/srv/murakumo_cloud.rb
CHANGED
@@ -481,7 +481,7 @@ module Murakumo
|
|
481
481
|
|
482
482
|
# Search of records
|
483
483
|
|
484
|
-
def address_exist?(name)
|
484
|
+
def address_exist?(name, resource_class)
|
485
485
|
# includes、excludesのチェック
|
486
486
|
if @options[:name_excludes] and @options[:name_excludes].any? {|r| r =~ name }
|
487
487
|
return false
|
@@ -582,7 +582,7 @@ module Murakumo
|
|
582
582
|
@address_records = nil
|
583
583
|
end
|
584
584
|
|
585
|
-
def name_exist?(address)
|
585
|
+
def name_exist?(address, resource_class)
|
586
586
|
address = x_ip_addr(address)
|
587
587
|
|
588
588
|
# includes、excludesのチェック
|
data/lib/srv/murakumo_server.rb
CHANGED
@@ -17,17 +17,21 @@ module Murakumo
|
|
17
17
|
# クラスメソッドを定義
|
18
18
|
class << self
|
19
19
|
|
20
|
+
IN = Resolv::DNS::Resource::IN
|
21
|
+
|
20
22
|
def init(options)
|
21
23
|
# クラスインスタンス変数を使わないこと
|
22
24
|
@@options = options
|
23
25
|
@@cloud = Cloud.new(options)
|
24
26
|
end
|
25
27
|
|
26
|
-
def
|
27
|
-
@@
|
28
|
+
def working_directory=(path)
|
29
|
+
@@base_directory = path
|
28
30
|
end
|
29
31
|
|
30
32
|
def run
|
33
|
+
EventMachine.epoll
|
34
|
+
|
31
35
|
RubyDNS.run_server(:listen => [[:udp, @@options[:dns_address], @@options[:dns_port]]]) do
|
32
36
|
# RubyDNS::Serverのコンテキスト
|
33
37
|
@logger = @@options[:logger] if @@options[:logger]
|
@@ -39,6 +43,7 @@ module Murakumo
|
|
39
43
|
|
40
44
|
# ServerクラスをDRuby化
|
41
45
|
DRb.start_service("drbunix:#{@@options[:socket]}", @@cloud)
|
46
|
+
File.chmod(0700, @@options[:socket])
|
42
47
|
at_exit { FileUtils.rm_f(@@options[:socket]) }
|
43
48
|
end
|
44
49
|
|
@@ -66,7 +71,7 @@ module Murakumo
|
|
66
71
|
end
|
67
72
|
|
68
73
|
# look up A record
|
69
|
-
match(@@cloud.method(:address_exist?),
|
74
|
+
match(@@cloud.method(:address_exist?), IN::A) do |transaction|
|
70
75
|
records = @@cloud.lookup_addresses(transaction.name)
|
71
76
|
|
72
77
|
addrs = []
|
@@ -90,7 +95,7 @@ module Murakumo
|
|
90
95
|
end # match
|
91
96
|
|
92
97
|
# look up PTR record
|
93
|
-
match(@@cloud.method(:name_exist?),
|
98
|
+
match(@@cloud.method(:name_exist?), IN::PTR) do |transaction|
|
94
99
|
name, ttl = @@cloud.lookup_name(transaction.name)
|
95
100
|
name += ".#{@@options[:domain]}" if @@options[:domain]
|
96
101
|
transaction.respond!(Resolv::DNS::Name.create("#{name}."), :ttl => ttl)
|
metadata
CHANGED
@@ -1,89 +1,83 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: murakumo
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 7
|
10
|
-
version: 0.4.7
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- winebarrel
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-05-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rubydns
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
18
|
+
requirements:
|
26
19
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 3
|
32
|
-
- 4
|
33
|
-
version: 0.3.4
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.6.2
|
34
22
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: rgossip2
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.6.2
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rgossip2
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
40
33
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
- 2
|
48
|
-
- 4
|
49
|
-
version: 0.2.4
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.2.7
|
50
38
|
type: :runtime
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: optopus
|
54
39
|
prerelease: false
|
55
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
41
|
none: false
|
57
|
-
requirements:
|
58
|
-
- -
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.2.7
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: optopus
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
65
53
|
version: 0.2.3
|
66
54
|
type: :runtime
|
67
|
-
version_requirements: *id003
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: sqlite3-ruby
|
70
55
|
prerelease: false
|
71
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.2.3
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: sqlite3-ruby
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
72
65
|
none: false
|
73
|
-
requirements:
|
66
|
+
requirements:
|
74
67
|
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
hash: 21
|
77
|
-
segments:
|
78
|
-
- 1
|
79
|
-
- 2
|
80
|
-
- 5
|
68
|
+
- !ruby/object:Gem::Version
|
81
69
|
version: 1.2.5
|
82
70
|
type: :runtime
|
83
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.2.5
|
84
78
|
description:
|
85
79
|
email: sgwr_dts@yahoo.co.jp
|
86
|
-
executables:
|
80
|
+
executables:
|
87
81
|
- murakumo
|
88
82
|
- mrkmctl
|
89
83
|
- murakumo-install-init-script
|
@@ -94,80 +88,69 @@ executables:
|
|
94
88
|
- murakumo-attach-ec2-attach-interface
|
95
89
|
- murakumo-show-ec2-interfaces
|
96
90
|
extensions: []
|
97
|
-
|
98
91
|
extra_rdoc_files: []
|
99
|
-
|
100
|
-
files:
|
92
|
+
files:
|
101
93
|
- README
|
102
|
-
- bin/murakumo-show-ec2-private-ip-addresses
|
103
94
|
- bin/murakumo-install-init-script
|
95
|
+
- bin/murakumo
|
104
96
|
- bin/murakumo-show-ec2-tags
|
105
97
|
- bin/murakumo-show-ec2-interfaces
|
98
|
+
- bin/murakumo-show-ec2-private-ip-addresses
|
99
|
+
- bin/mrkmctl
|
100
|
+
- bin/murakumo-attach-ec2-attach-interface
|
106
101
|
- bin/murakumo-show-ip-address
|
107
102
|
- bin/murakumo-show-ec2-instances
|
108
|
-
- bin/murakumo-attach-ec2-attach-interface
|
109
|
-
- bin/mrkmctl
|
110
|
-
- bin/murakumo
|
111
|
-
- lib/cli/murakumo_options.rb
|
112
|
-
- lib/cli/mrkmctl.rb
|
113
|
-
- lib/cli/mrkmctl_options.rb
|
114
103
|
- lib/cli/murakumo.rb
|
115
104
|
- lib/cli/murakumo_initializer_context.rb
|
116
|
-
- lib/
|
117
|
-
- lib/
|
118
|
-
- lib/
|
119
|
-
- lib/srv/murakumo_health_checker.rb
|
120
|
-
- lib/srv/murakumo_cloud.rb
|
121
|
-
- lib/srv/murakumo_activity_check_notifier.rb
|
122
|
-
- lib/srv/murakumo_activity_checker.rb
|
123
|
-
- lib/srv/murakumo_health_check_context.rb
|
124
|
-
- lib/util/murakumo_ec2_private_ip_addresses.rb
|
125
|
-
- lib/util/murakumo_ec2_instances.rb
|
126
|
-
- lib/util/murakumo_ec2_client.rb
|
127
|
-
- lib/util/murakumo_ec2_tags.rb
|
105
|
+
- lib/cli/mrkmctl.rb
|
106
|
+
- lib/cli/mrkmctl_options.rb
|
107
|
+
- lib/cli/murakumo_options.rb
|
128
108
|
- lib/util/murakumo_self_ip_address.rb
|
109
|
+
- lib/util/murakumo_ec2_tags.rb
|
110
|
+
- lib/util/murakumo_ec2_private_ip_addresses.rb
|
129
111
|
- lib/util/murakumo_ec2_interfaces.rb
|
130
112
|
- lib/util/murakumo_ec2_attach_interface.rb
|
113
|
+
- lib/util/murakumo_ec2_instances.rb
|
114
|
+
- lib/util/murakumo_ec2_client.rb
|
115
|
+
- lib/srv/murakumo_activity_checker.rb
|
116
|
+
- lib/srv/murakumo_cloud.rb
|
117
|
+
- lib/srv/murakumo_balancer.rb
|
118
|
+
- lib/srv/murakumo_health_check_context.rb
|
119
|
+
- lib/srv/murakumo_server.rb
|
120
|
+
- lib/srv/murakumo_activity_check_notifier.rb
|
121
|
+
- lib/srv/murakumo_health_check_notifier.rb
|
122
|
+
- lib/srv/murakumo_health_checker.rb
|
131
123
|
- lib/misc/murakumo_const.rb
|
132
124
|
- etc/murakumo-update-config-for-ec2
|
133
|
-
- etc/gai.conf.example
|
134
|
-
- etc/attach_if.sh.example
|
135
|
-
- etc/murakumo.yml.example
|
136
125
|
- etc/dhclient-script.patch
|
137
|
-
- etc/murakumo-init.rb.for-ec2
|
138
126
|
- etc/murakumo.server
|
127
|
+
- etc/murakumo.yml.example
|
128
|
+
- etc/attach_if.sh.example
|
129
|
+
- etc/murakumo-init.rb.for-ec2
|
130
|
+
- etc/gai.conf.example
|
139
131
|
homepage: https://github.com/cookpad/murakumo/wiki
|
140
132
|
licenses: []
|
141
|
-
|
142
133
|
post_install_message:
|
143
134
|
rdoc_options: []
|
144
|
-
|
145
|
-
require_paths:
|
135
|
+
require_paths:
|
146
136
|
- lib
|
147
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
138
|
none: false
|
149
|
-
requirements:
|
150
|
-
- -
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
|
153
|
-
|
154
|
-
- 0
|
155
|
-
version: "0"
|
156
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
144
|
none: false
|
158
|
-
requirements:
|
159
|
-
- -
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
|
162
|
-
segments:
|
163
|
-
- 0
|
164
|
-
version: "0"
|
145
|
+
requirements:
|
146
|
+
- - ! '>='
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
165
149
|
requirements: []
|
166
|
-
|
167
150
|
rubyforge_project:
|
168
|
-
rubygems_version: 1.8.
|
151
|
+
rubygems_version: 1.8.23
|
169
152
|
signing_key:
|
170
153
|
specification_version: 3
|
171
|
-
summary: Murakumo is the internal DNS server which manages name information using
|
154
|
+
summary: Murakumo is the internal DNS server which manages name information using
|
155
|
+
a gossip protocol.
|
172
156
|
test_files: []
|
173
|
-
|