murakumo 0.4.7 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|