devdnsd 1.7.0 → 2.0.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/.travis-gemfile +14 -0
- data/.travis.yml +4 -4
- data/Gemfile +13 -1
- data/README.md +6 -3
- data/Rakefile +1 -8
- data/bin/devdnsd +15 -13
- data/devdnsd.gemspec +6 -13
- data/doc/DevDNSd/Application.html +1096 -1651
- data/doc/DevDNSd/ApplicationMethods/Server.html +517 -0
- data/doc/DevDNSd/ApplicationMethods/System/ClassMethods.html +372 -0
- data/doc/DevDNSd/ApplicationMethods/System.html +956 -0
- data/doc/DevDNSd/ApplicationMethods.html +125 -0
- data/doc/DevDNSd/Configuration.html +7 -6
- data/doc/DevDNSd/Errors/InvalidRule.html +3 -3
- data/doc/DevDNSd/Errors.html +3 -3
- data/doc/DevDNSd/Rule.html +1685 -218
- data/doc/DevDNSd/Version.html +5 -5
- data/doc/DevDNSd.html +6 -6
- data/doc/_index.html +43 -4
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +47 -40
- data/doc/frames.html +1 -1
- data/doc/index.html +47 -40
- data/doc/method_list.html +69 -45
- data/doc/top-level-namespace.html +3 -3
- data/lib/devdnsd/application.rb +382 -290
- data/lib/devdnsd/configuration.rb +9 -9
- data/lib/devdnsd/errors.rb +1 -1
- data/lib/devdnsd/rule.rb +84 -48
- data/lib/devdnsd/version.rb +3 -3
- data/lib/devdnsd.rb +5 -2
- data/locales/en.yml +48 -0
- data/locales/it.yml +48 -0
- data/spec/coverage_helper.rb +6 -9
- data/spec/devdnsd/application_spec.rb +62 -42
- data/spec/devdnsd/configuration_spec.rb +1 -1
- data/spec/devdnsd/rule_spec.rb +7 -7
- data/spec/spec_helper.rb +1 -2
- data/utils/tester.rb +13 -27
- metadata +17 -142
- data/Gemfile.lock +0 -101
data/doc/DevDNSd/Rule.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: DevDNSd::Rule
|
8
8
|
|
9
|
-
— Documentation by YARD 0.8.
|
9
|
+
— Documentation by YARD 0.8.4.1
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -90,11 +90,15 @@
|
|
90
90
|
|
91
91
|
|
92
92
|
|
93
|
+
<dt class="r2">Includes:</dt>
|
94
|
+
<dd class="r2">Lazier::I18n</dd>
|
95
|
+
|
96
|
+
|
93
97
|
|
94
98
|
|
95
99
|
|
96
|
-
<dt class="
|
97
|
-
<dd class="
|
100
|
+
<dt class="r1 last">Defined in:</dt>
|
101
|
+
<dd class="r1 last">lib/devdnsd/rule.rb</dd>
|
98
102
|
|
99
103
|
</dl>
|
100
104
|
<div class="clear"></div>
|
@@ -119,7 +123,7 @@
|
|
119
123
|
<li class="public ">
|
120
124
|
<span class="summary_signature">
|
121
125
|
|
122
|
-
<a href="#block-instance_method" title="#block (instance method)">- (
|
126
|
+
<a href="#block-instance_method" title="#block (instance method)">- (Proc) <strong>block</strong> </a>
|
123
127
|
|
124
128
|
|
125
129
|
|
@@ -145,7 +149,7 @@
|
|
145
149
|
<li class="public ">
|
146
150
|
<span class="summary_signature">
|
147
151
|
|
148
|
-
<a href="#match-instance_method" title="#match (instance method)">- (
|
152
|
+
<a href="#match-instance_method" title="#match (instance method)">- (String|Regexp) <strong>match</strong> </a>
|
149
153
|
|
150
154
|
|
151
155
|
|
@@ -171,7 +175,7 @@
|
|
171
175
|
<li class="public ">
|
172
176
|
<span class="summary_signature">
|
173
177
|
|
174
|
-
<a href="#options-instance_method" title="#options (instance method)">- (
|
178
|
+
<a href="#options-instance_method" title="#options (instance method)">- (Hash) <strong>options</strong> </a>
|
175
179
|
|
176
180
|
|
177
181
|
|
@@ -197,7 +201,7 @@
|
|
197
201
|
<li class="public ">
|
198
202
|
<span class="summary_signature">
|
199
203
|
|
200
|
-
<a href="#reply-instance_method" title="#reply (instance method)">- (
|
204
|
+
<a href="#reply-instance_method" title="#reply (instance method)">- (String) <strong>reply</strong> </a>
|
201
205
|
|
202
206
|
|
203
207
|
|
@@ -223,7 +227,7 @@
|
|
223
227
|
<li class="public ">
|
224
228
|
<span class="summary_signature">
|
225
229
|
|
226
|
-
<a href="#type-instance_method" title="#type (instance method)">- (
|
230
|
+
<a href="#type-instance_method" title="#type (instance method)">- (Symbol) <strong>type</strong> </a>
|
227
231
|
|
228
232
|
|
229
233
|
|
@@ -262,7 +266,7 @@
|
|
262
266
|
<li class="public ">
|
263
267
|
<span class="summary_signature">
|
264
268
|
|
265
|
-
<a href="#create-class_method" title="create (class method)">+ (
|
269
|
+
<a href="#create-class_method" title="create (class method)">+ (Rule) <strong>create</strong>(match, reply_or_type = nil, type = nil, options = {}, &block) </a>
|
266
270
|
|
267
271
|
|
268
272
|
|
@@ -308,7 +312,7 @@
|
|
308
312
|
<li class="public ">
|
309
313
|
<span class="summary_signature">
|
310
314
|
|
311
|
-
<a href="#symbol_to_resource_class-class_method" title="symbol_to_resource_class (class method)">+ (Symbol) <strong>symbol_to_resource_class</strong>(symbol) </a>
|
315
|
+
<a href="#symbol_to_resource_class-class_method" title="symbol_to_resource_class (class method)">+ (Symbol) <strong>symbol_to_resource_class</strong>(symbol, locale = nil) </a>
|
312
316
|
|
313
317
|
|
314
318
|
|
@@ -457,7 +461,8 @@
|
|
457
461
|
</ul>
|
458
462
|
|
459
463
|
|
460
|
-
|
464
|
+
|
465
|
+
<div id="constructor_details" class="method_details_list">
|
461
466
|
<h2>Constructor Details</h2>
|
462
467
|
|
463
468
|
<div class="method_details first">
|
@@ -565,19 +570,6 @@
|
|
565
570
|
|
566
571
|
</ul>
|
567
572
|
|
568
|
-
<p class="tag_title">Raises:</p>
|
569
|
-
<ul class="raise">
|
570
|
-
|
571
|
-
<li>
|
572
|
-
|
573
|
-
|
574
|
-
<span class='type'>(<tt><span class='object_link'><a href="Errors/InvalidRule.html" title="DevDNSd::Errors::InvalidRule (class)">DevDNSd::Errors::InvalidRule</a></span></tt>)</span>
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
</li>
|
579
|
-
|
580
|
-
</ul>
|
581
573
|
|
582
574
|
<p class="tag_title">See Also:</p>
|
583
575
|
<ul class="see">
|
@@ -592,33 +584,21 @@
|
|
592
584
|
<pre class="lines">
|
593
585
|
|
594
586
|
|
587
|
+
37
|
588
|
+
38
|
595
589
|
39
|
596
590
|
40
|
597
591
|
41
|
598
|
-
42
|
599
|
-
43
|
600
|
-
44
|
601
|
-
45
|
602
|
-
46
|
603
|
-
47
|
604
|
-
48
|
605
|
-
49
|
606
|
-
50</pre>
|
592
|
+
42</pre>
|
607
593
|
</td>
|
608
594
|
<td>
|
609
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
595
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 37</span>
|
610
596
|
|
611
597
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
612
|
-
<span class='id identifier
|
613
|
-
<span class='id identifier
|
614
|
-
<span class='
|
615
|
-
<span class='
|
616
|
-
<span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>:</span> <span class='kw'>nil</span>
|
617
|
-
<span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
618
|
-
<span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
619
|
-
|
620
|
-
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>You must specify at least a rule and a host (also via a block). Optionally you can add a record type (default: A) and the options.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
621
|
-
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>You can only use hashs for options.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
598
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
599
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
|
600
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
601
|
+
<span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
622
602
|
<span class='kw'>end</span></pre>
|
623
603
|
</td>
|
624
604
|
</tr>
|
@@ -635,7 +615,7 @@
|
|
635
615
|
<div class="method_details first">
|
636
616
|
<h3 class="signature first" id="block-instance_method">
|
637
617
|
|
638
|
-
- (<tt>
|
618
|
+
- (<tt>Proc</tt>) <strong>block</strong>
|
639
619
|
|
640
620
|
|
641
621
|
|
@@ -643,20 +623,30 @@
|
|
643
623
|
|
644
624
|
</h3><div class="docstring">
|
645
625
|
<div class="discussion">
|
646
|
-
<p>An optional block to compute the reply instead of using the <code>reply</code> parameter
|
626
|
+
<p>An optional block to compute the reply instead of using the <code>reply</code> parameter. @see .create</p>
|
647
627
|
|
648
628
|
|
649
629
|
</div>
|
650
630
|
</div>
|
651
631
|
<div class="tags">
|
652
632
|
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
633
|
+
<p class="tag_title">Returns:</p>
|
634
|
+
<ul class="return">
|
635
|
+
|
636
|
+
<li>
|
637
|
+
|
638
|
+
|
639
|
+
<span class='type'>(<tt>Proc</tt>)</span>
|
640
|
+
|
641
|
+
|
642
|
+
|
643
|
+
—
|
644
|
+
<div class='inline'><p>An optional block to compute the reply instead of using the <code>reply</code> parameter. @see .create</p>
|
645
|
+
</div>
|
646
|
+
|
647
|
+
</li>
|
648
|
+
|
649
|
+
</ul>
|
660
650
|
|
661
651
|
</div><table class="source_code">
|
662
652
|
<tr>
|
@@ -664,15 +654,301 @@
|
|
664
654
|
<pre class="lines">
|
665
655
|
|
666
656
|
|
657
|
+
20
|
658
|
+
21
|
659
|
+
22
|
660
|
+
23
|
661
|
+
24
|
662
|
+
25
|
663
|
+
26
|
664
|
+
27
|
665
|
+
28
|
667
666
|
29
|
668
667
|
30
|
669
|
-
31
|
668
|
+
31
|
669
|
+
32
|
670
|
+
33
|
671
|
+
34
|
672
|
+
35
|
673
|
+
36
|
674
|
+
37
|
675
|
+
38
|
676
|
+
39
|
677
|
+
40
|
678
|
+
41
|
679
|
+
42
|
680
|
+
43
|
681
|
+
44
|
682
|
+
45
|
683
|
+
46
|
684
|
+
47
|
685
|
+
48
|
686
|
+
49
|
687
|
+
50
|
688
|
+
51
|
689
|
+
52
|
690
|
+
53
|
691
|
+
54
|
692
|
+
55
|
693
|
+
56
|
694
|
+
57
|
695
|
+
58
|
696
|
+
59
|
697
|
+
60
|
698
|
+
61
|
699
|
+
62
|
700
|
+
63
|
701
|
+
64
|
702
|
+
65
|
703
|
+
66
|
704
|
+
67
|
705
|
+
68
|
706
|
+
69
|
707
|
+
70
|
708
|
+
71
|
709
|
+
72
|
710
|
+
73
|
711
|
+
74
|
712
|
+
75
|
713
|
+
76
|
714
|
+
77
|
715
|
+
78
|
716
|
+
79
|
717
|
+
80
|
718
|
+
81
|
719
|
+
82
|
720
|
+
83
|
721
|
+
84
|
722
|
+
85
|
723
|
+
86
|
724
|
+
87
|
725
|
+
88
|
726
|
+
89
|
727
|
+
90
|
728
|
+
91
|
729
|
+
92
|
730
|
+
93
|
731
|
+
94
|
732
|
+
95
|
733
|
+
96
|
734
|
+
97
|
735
|
+
98
|
736
|
+
99
|
737
|
+
100
|
738
|
+
101
|
739
|
+
102
|
740
|
+
103
|
741
|
+
104
|
742
|
+
105
|
743
|
+
106
|
744
|
+
107
|
745
|
+
108
|
746
|
+
109
|
747
|
+
110
|
748
|
+
111
|
749
|
+
112
|
750
|
+
113
|
751
|
+
114
|
752
|
+
115
|
753
|
+
116
|
754
|
+
117
|
755
|
+
118
|
756
|
+
119
|
757
|
+
120
|
758
|
+
121
|
759
|
+
122
|
760
|
+
123
|
761
|
+
124
|
762
|
+
125
|
763
|
+
126
|
764
|
+
127
|
765
|
+
128
|
766
|
+
129
|
767
|
+
130
|
768
|
+
131
|
769
|
+
132
|
770
|
+
133
|
771
|
+
134
|
772
|
+
135
|
773
|
+
136
|
774
|
+
137
|
775
|
+
138
|
776
|
+
139
|
777
|
+
140
|
778
|
+
141
|
779
|
+
142
|
780
|
+
143
|
781
|
+
144
|
782
|
+
145
|
783
|
+
146
|
784
|
+
147
|
785
|
+
148
|
786
|
+
149
|
787
|
+
150
|
788
|
+
151
|
789
|
+
152
|
790
|
+
153
|
791
|
+
154
|
792
|
+
155
|
793
|
+
156
|
794
|
+
157
|
795
|
+
158
|
796
|
+
159
|
797
|
+
160
|
798
|
+
161
|
799
|
+
162
|
800
|
+
163
|
801
|
+
164
|
802
|
+
165</pre>
|
670
803
|
</td>
|
671
804
|
<td>
|
672
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
805
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
|
806
|
+
|
807
|
+
<span class='kw'>class</span> <span class='const'>Rule</span>
|
808
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
|
809
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
|
810
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
|
811
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
|
812
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
|
813
|
+
|
814
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
|
815
|
+
|
816
|
+
<span class='comment'># Creates a new rule.
|
817
|
+
</span> <span class='comment'>#
|
818
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
819
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
820
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
821
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
822
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
823
|
+
</span> <span class='comment'># @see .create
|
824
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
825
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
826
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
|
827
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
828
|
+
<span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
829
|
+
<span class='kw'>end</span>
|
830
|
+
|
831
|
+
<span class='comment'># Returns the resource class(es) for the current rule.
|
832
|
+
</span> <span class='comment'>#
|
833
|
+
</span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
|
834
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
|
835
|
+
<span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
|
836
|
+
<span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
|
837
|
+
<span class='kw'>end</span>
|
838
|
+
|
839
|
+
<span class='comment'># Checks if the rule is a regexp.
|
840
|
+
</span> <span class='comment'>#
|
841
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
|
842
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
|
843
|
+
<span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
|
844
|
+
<span class='kw'>end</span>
|
845
|
+
|
846
|
+
<span class='comment'># Checks if the rule is a regexp.
|
847
|
+
</span> <span class='comment'>#
|
848
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
|
849
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
|
850
|
+
<span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
851
|
+
<span class='kw'>end</span>
|
852
|
+
|
853
|
+
<span class='comment'># Matches a hostname to the rule.
|
854
|
+
</span> <span class='comment'>#
|
855
|
+
</span> <span class='comment'># @param hostname [String] The hostname to match.
|
856
|
+
</span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
|
857
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
858
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
859
|
+
<span class='kw'>end</span>
|
860
|
+
|
861
|
+
<span class='comment'># Creates a new rule.
|
862
|
+
</span> <span class='comment'>#
|
863
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
864
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
865
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
866
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
867
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
868
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
869
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
870
|
+
<span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
871
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
872
|
+
<span class='kw'>end</span>
|
873
|
+
|
874
|
+
<span class='comment'># Converts a class to the correspondent symbol.
|
875
|
+
</span> <span class='comment'>#
|
876
|
+
</span> <span class='comment'># @param klass [Class] The class to convert.
|
877
|
+
</span> <span class='comment'># @return [Symbol] The symbol representation of the class.
|
878
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
|
879
|
+
<span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\\2</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
|
880
|
+
<span class='kw'>end</span>
|
881
|
+
|
882
|
+
<span class='comment'># Converts a symbol to the correspondent DNS resource class.
|
883
|
+
</span> <span class='comment'>#
|
884
|
+
</span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
|
885
|
+
</span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
|
886
|
+
</span> <span class='comment'># @return [Symbol] The class associated to the symbol.
|
887
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
888
|
+
<span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
|
889
|
+
|
890
|
+
<span class='kw'>begin</span>
|
891
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
|
892
|
+
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
|
893
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
894
|
+
<span class='kw'>end</span>
|
895
|
+
<span class='kw'>end</span>
|
673
896
|
|
674
|
-
<span class='
|
675
|
-
|
897
|
+
<span class='id identifier rubyid_private'>private</span>
|
898
|
+
<span class='comment'># Setups a new rule.
|
899
|
+
</span> <span class='comment'>#
|
900
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
901
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
902
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
903
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
904
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
905
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
906
|
+
<span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
|
907
|
+
<span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
908
|
+
<span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
|
909
|
+
<span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
910
|
+
<span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
911
|
+
<span class='kw'>end</span>
|
912
|
+
|
913
|
+
<span class='comment'># Validates a newly created rule.
|
914
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
915
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
916
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
917
|
+
<span class='kw'>end</span>
|
918
|
+
|
919
|
+
<span class='comment'># Setups a new rule.
|
920
|
+
</span> <span class='comment'>#
|
921
|
+
</span> <span class='comment'># @param rv [Rule] The rule that is been created.
|
922
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
923
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
924
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
925
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
926
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
927
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
928
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
929
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
930
|
+
|
931
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
|
932
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
933
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
934
|
+
<span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
|
935
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span>
|
936
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
937
|
+
<span class='kw'>end</span>
|
938
|
+
|
939
|
+
<span class='id identifier rubyid_rv'>rv</span>
|
940
|
+
<span class='kw'>end</span>
|
941
|
+
|
942
|
+
<span class='comment'># Validate options for a new rule creation.
|
943
|
+
</span> <span class='comment'>#
|
944
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
945
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
946
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
947
|
+
</span> <span class='comment'># @param localizer [Localizer] A localizer object.
|
948
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
|
949
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
950
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
951
|
+
<span class='kw'>end</span>
|
676
952
|
<span class='kw'>end</span></pre>
|
677
953
|
</td>
|
678
954
|
</tr>
|
@@ -684,7 +960,7 @@
|
|
684
960
|
<div class="method_details ">
|
685
961
|
<h3 class="signature " id="match-instance_method">
|
686
962
|
|
687
|
-
- (<tt>
|
963
|
+
- (<tt>String|Regexp</tt>) <strong>match</strong>
|
688
964
|
|
689
965
|
|
690
966
|
|
@@ -699,6 +975,23 @@
|
|
699
975
|
</div>
|
700
976
|
<div class="tags">
|
701
977
|
|
978
|
+
<p class="tag_title">Returns:</p>
|
979
|
+
<ul class="return">
|
980
|
+
|
981
|
+
<li>
|
982
|
+
|
983
|
+
|
984
|
+
<span class='type'>(<tt>String|Regexp</tt>)</span>
|
985
|
+
|
986
|
+
|
987
|
+
|
988
|
+
—
|
989
|
+
<div class='inline'><p>The pattern to match. Default: <code>/.+/</code>.</p>
|
990
|
+
</div>
|
991
|
+
|
992
|
+
</li>
|
993
|
+
|
994
|
+
</ul>
|
702
995
|
|
703
996
|
</div><table class="source_code">
|
704
997
|
<tr>
|
@@ -706,57 +999,301 @@
|
|
706
999
|
<pre class="lines">
|
707
1000
|
|
708
1001
|
|
709
|
-
|
710
|
-
|
711
|
-
|
1002
|
+
20
|
1003
|
+
21
|
1004
|
+
22
|
1005
|
+
23
|
1006
|
+
24
|
1007
|
+
25
|
1008
|
+
26
|
1009
|
+
27
|
1010
|
+
28
|
1011
|
+
29
|
1012
|
+
30
|
1013
|
+
31
|
1014
|
+
32
|
1015
|
+
33
|
1016
|
+
34
|
1017
|
+
35
|
1018
|
+
36
|
1019
|
+
37
|
1020
|
+
38
|
1021
|
+
39
|
1022
|
+
40
|
1023
|
+
41
|
1024
|
+
42
|
1025
|
+
43
|
1026
|
+
44
|
1027
|
+
45
|
1028
|
+
46
|
1029
|
+
47
|
1030
|
+
48
|
1031
|
+
49
|
1032
|
+
50
|
1033
|
+
51
|
1034
|
+
52
|
1035
|
+
53
|
1036
|
+
54
|
1037
|
+
55
|
1038
|
+
56
|
1039
|
+
57
|
1040
|
+
58
|
1041
|
+
59
|
1042
|
+
60
|
1043
|
+
61
|
1044
|
+
62
|
1045
|
+
63
|
1046
|
+
64
|
1047
|
+
65
|
1048
|
+
66
|
1049
|
+
67
|
1050
|
+
68
|
1051
|
+
69
|
1052
|
+
70
|
1053
|
+
71
|
1054
|
+
72
|
1055
|
+
73
|
1056
|
+
74
|
1057
|
+
75
|
1058
|
+
76
|
1059
|
+
77
|
1060
|
+
78
|
1061
|
+
79
|
1062
|
+
80
|
1063
|
+
81
|
1064
|
+
82
|
1065
|
+
83
|
1066
|
+
84
|
1067
|
+
85
|
1068
|
+
86
|
1069
|
+
87
|
1070
|
+
88
|
1071
|
+
89
|
1072
|
+
90
|
1073
|
+
91
|
1074
|
+
92
|
1075
|
+
93
|
1076
|
+
94
|
1077
|
+
95
|
1078
|
+
96
|
1079
|
+
97
|
1080
|
+
98
|
1081
|
+
99
|
1082
|
+
100
|
1083
|
+
101
|
1084
|
+
102
|
1085
|
+
103
|
1086
|
+
104
|
1087
|
+
105
|
1088
|
+
106
|
1089
|
+
107
|
1090
|
+
108
|
1091
|
+
109
|
1092
|
+
110
|
1093
|
+
111
|
1094
|
+
112
|
1095
|
+
113
|
1096
|
+
114
|
1097
|
+
115
|
1098
|
+
116
|
1099
|
+
117
|
1100
|
+
118
|
1101
|
+
119
|
1102
|
+
120
|
1103
|
+
121
|
1104
|
+
122
|
1105
|
+
123
|
1106
|
+
124
|
1107
|
+
125
|
1108
|
+
126
|
1109
|
+
127
|
1110
|
+
128
|
1111
|
+
129
|
1112
|
+
130
|
1113
|
+
131
|
1114
|
+
132
|
1115
|
+
133
|
1116
|
+
134
|
1117
|
+
135
|
1118
|
+
136
|
1119
|
+
137
|
1120
|
+
138
|
1121
|
+
139
|
1122
|
+
140
|
1123
|
+
141
|
1124
|
+
142
|
1125
|
+
143
|
1126
|
+
144
|
1127
|
+
145
|
1128
|
+
146
|
1129
|
+
147
|
1130
|
+
148
|
1131
|
+
149
|
1132
|
+
150
|
1133
|
+
151
|
1134
|
+
152
|
1135
|
+
153
|
1136
|
+
154
|
1137
|
+
155
|
1138
|
+
156
|
1139
|
+
157
|
1140
|
+
158
|
1141
|
+
159
|
1142
|
+
160
|
1143
|
+
161
|
1144
|
+
162
|
1145
|
+
163
|
1146
|
+
164
|
1147
|
+
165</pre>
|
712
1148
|
</td>
|
713
1149
|
<td>
|
714
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
715
|
-
|
716
|
-
<span class='kw'>
|
717
|
-
<span class='
|
718
|
-
<span class='
|
719
|
-
|
720
|
-
</
|
721
|
-
</
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
<
|
728
|
-
|
729
|
-
|
730
|
-
|
1150
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
|
1151
|
+
|
1152
|
+
<span class='kw'>class</span> <span class='const'>Rule</span>
|
1153
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
|
1154
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
|
1155
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
|
1156
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
|
1157
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
|
1158
|
+
|
1159
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
|
1160
|
+
|
1161
|
+
<span class='comment'># Creates a new rule.
|
1162
|
+
</span> <span class='comment'>#
|
1163
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1164
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
1165
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
1166
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1167
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
1168
|
+
</span> <span class='comment'># @see .create
|
1169
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1170
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1171
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
|
1172
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1173
|
+
<span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
1174
|
+
<span class='kw'>end</span>
|
731
1175
|
|
732
|
-
|
1176
|
+
<span class='comment'># Returns the resource class(es) for the current rule.
|
1177
|
+
</span> <span class='comment'>#
|
1178
|
+
</span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
|
1179
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
|
1180
|
+
<span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
|
1181
|
+
<span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
|
1182
|
+
<span class='kw'>end</span>
|
733
1183
|
|
734
|
-
|
735
|
-
</
|
736
|
-
<
|
737
|
-
|
1184
|
+
<span class='comment'># Checks if the rule is a regexp.
|
1185
|
+
</span> <span class='comment'>#
|
1186
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
|
1187
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
|
1188
|
+
<span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
|
1189
|
+
<span class='kw'>end</span>
|
738
1190
|
|
1191
|
+
<span class='comment'># Checks if the rule is a regexp.
|
1192
|
+
</span> <span class='comment'>#
|
1193
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
|
1194
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
|
1195
|
+
<span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
1196
|
+
<span class='kw'>end</span>
|
739
1197
|
|
740
|
-
|
741
|
-
</
|
742
|
-
<
|
743
|
-
|
1198
|
+
<span class='comment'># Matches a hostname to the rule.
|
1199
|
+
</span> <span class='comment'>#
|
1200
|
+
</span> <span class='comment'># @param hostname [String] The hostname to match.
|
1201
|
+
</span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
|
1202
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
1203
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
1204
|
+
<span class='kw'>end</span>
|
744
1205
|
|
745
|
-
|
746
|
-
<
|
747
|
-
|
748
|
-
|
1206
|
+
<span class='comment'># Creates a new rule.
|
1207
|
+
</span> <span class='comment'>#
|
1208
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1209
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1210
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
1211
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1212
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1213
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
1214
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1215
|
+
<span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1216
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1217
|
+
<span class='kw'>end</span>
|
749
1218
|
|
1219
|
+
<span class='comment'># Converts a class to the correspondent symbol.
|
1220
|
+
</span> <span class='comment'>#
|
1221
|
+
</span> <span class='comment'># @param klass [Class] The class to convert.
|
1222
|
+
</span> <span class='comment'># @return [Symbol] The symbol representation of the class.
|
1223
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
|
1224
|
+
<span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\\2</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
|
1225
|
+
<span class='kw'>end</span>
|
750
1226
|
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
1227
|
+
<span class='comment'># Converts a symbol to the correspondent DNS resource class.
|
1228
|
+
</span> <span class='comment'>#
|
1229
|
+
</span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
|
1230
|
+
</span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
|
1231
|
+
</span> <span class='comment'># @return [Symbol] The class associated to the symbol.
|
1232
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
1233
|
+
<span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
|
1234
|
+
|
1235
|
+
<span class='kw'>begin</span>
|
1236
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
|
1237
|
+
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
|
1238
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1239
|
+
<span class='kw'>end</span>
|
1240
|
+
<span class='kw'>end</span>
|
757
1241
|
|
758
|
-
<span class='
|
759
|
-
|
1242
|
+
<span class='id identifier rubyid_private'>private</span>
|
1243
|
+
<span class='comment'># Setups a new rule.
|
1244
|
+
</span> <span class='comment'>#
|
1245
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1246
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
1247
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
1248
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1249
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
1250
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1251
|
+
<span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
|
1252
|
+
<span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1253
|
+
<span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
|
1254
|
+
<span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
1255
|
+
<span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
1256
|
+
<span class='kw'>end</span>
|
1257
|
+
|
1258
|
+
<span class='comment'># Validates a newly created rule.
|
1259
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
1260
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
1261
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
1262
|
+
<span class='kw'>end</span>
|
1263
|
+
|
1264
|
+
<span class='comment'># Setups a new rule.
|
1265
|
+
</span> <span class='comment'>#
|
1266
|
+
</span> <span class='comment'># @param rv [Rule] The rule that is been created.
|
1267
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1268
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
1269
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1270
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1271
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
1272
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1273
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
1274
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
1275
|
+
|
1276
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
|
1277
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1278
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
1279
|
+
<span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
|
1280
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span>
|
1281
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1282
|
+
<span class='kw'>end</span>
|
1283
|
+
|
1284
|
+
<span class='id identifier rubyid_rv'>rv</span>
|
1285
|
+
<span class='kw'>end</span>
|
1286
|
+
|
1287
|
+
<span class='comment'># Validate options for a new rule creation.
|
1288
|
+
</span> <span class='comment'>#
|
1289
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1290
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1291
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1292
|
+
</span> <span class='comment'># @param localizer [Localizer] A localizer object.
|
1293
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
|
1294
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
1295
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
1296
|
+
<span class='kw'>end</span>
|
760
1297
|
<span class='kw'>end</span></pre>
|
761
1298
|
</td>
|
762
1299
|
</tr>
|
@@ -764,11 +1301,11 @@
|
|
764
1301
|
</div>
|
765
1302
|
|
766
1303
|
|
767
|
-
<span id="
|
1304
|
+
<span id="options=-instance_method"></span>
|
768
1305
|
<div class="method_details ">
|
769
|
-
<h3 class="signature " id="
|
1306
|
+
<h3 class="signature " id="options-instance_method">
|
770
1307
|
|
771
|
-
- (<tt>
|
1308
|
+
- (<tt>Hash</tt>) <strong>options</strong>
|
772
1309
|
|
773
1310
|
|
774
1311
|
|
@@ -776,20 +1313,30 @@
|
|
776
1313
|
|
777
1314
|
</h3><div class="docstring">
|
778
1315
|
<div class="discussion">
|
779
|
-
<p>
|
1316
|
+
<p>A list of options for the request. Default is an empty hash.</p>
|
780
1317
|
|
781
1318
|
|
782
1319
|
</div>
|
783
1320
|
</div>
|
784
1321
|
<div class="tags">
|
785
1322
|
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
1323
|
+
<p class="tag_title">Returns:</p>
|
1324
|
+
<ul class="return">
|
1325
|
+
|
1326
|
+
<li>
|
1327
|
+
|
1328
|
+
|
1329
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
1330
|
+
|
1331
|
+
|
1332
|
+
|
1333
|
+
—
|
1334
|
+
<div class='inline'><p>A list of options for the request. Default is an empty hash.</p>
|
1335
|
+
</div>
|
1336
|
+
|
1337
|
+
</li>
|
1338
|
+
|
1339
|
+
</ul>
|
793
1340
|
|
794
1341
|
</div><table class="source_code">
|
795
1342
|
<tr>
|
@@ -797,27 +1344,313 @@
|
|
797
1344
|
<pre class="lines">
|
798
1345
|
|
799
1346
|
|
1347
|
+
20
|
800
1348
|
21
|
801
1349
|
22
|
802
|
-
23
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
1350
|
+
23
|
1351
|
+
24
|
1352
|
+
25
|
1353
|
+
26
|
1354
|
+
27
|
1355
|
+
28
|
1356
|
+
29
|
1357
|
+
30
|
1358
|
+
31
|
1359
|
+
32
|
1360
|
+
33
|
1361
|
+
34
|
1362
|
+
35
|
1363
|
+
36
|
1364
|
+
37
|
1365
|
+
38
|
1366
|
+
39
|
1367
|
+
40
|
1368
|
+
41
|
1369
|
+
42
|
1370
|
+
43
|
1371
|
+
44
|
1372
|
+
45
|
1373
|
+
46
|
1374
|
+
47
|
1375
|
+
48
|
1376
|
+
49
|
1377
|
+
50
|
1378
|
+
51
|
1379
|
+
52
|
1380
|
+
53
|
1381
|
+
54
|
1382
|
+
55
|
1383
|
+
56
|
1384
|
+
57
|
1385
|
+
58
|
1386
|
+
59
|
1387
|
+
60
|
1388
|
+
61
|
1389
|
+
62
|
1390
|
+
63
|
1391
|
+
64
|
1392
|
+
65
|
1393
|
+
66
|
1394
|
+
67
|
1395
|
+
68
|
1396
|
+
69
|
1397
|
+
70
|
1398
|
+
71
|
1399
|
+
72
|
1400
|
+
73
|
1401
|
+
74
|
1402
|
+
75
|
1403
|
+
76
|
1404
|
+
77
|
1405
|
+
78
|
1406
|
+
79
|
1407
|
+
80
|
1408
|
+
81
|
1409
|
+
82
|
1410
|
+
83
|
1411
|
+
84
|
1412
|
+
85
|
1413
|
+
86
|
1414
|
+
87
|
1415
|
+
88
|
1416
|
+
89
|
1417
|
+
90
|
1418
|
+
91
|
1419
|
+
92
|
1420
|
+
93
|
1421
|
+
94
|
1422
|
+
95
|
1423
|
+
96
|
1424
|
+
97
|
1425
|
+
98
|
1426
|
+
99
|
1427
|
+
100
|
1428
|
+
101
|
1429
|
+
102
|
1430
|
+
103
|
1431
|
+
104
|
1432
|
+
105
|
1433
|
+
106
|
1434
|
+
107
|
1435
|
+
108
|
1436
|
+
109
|
1437
|
+
110
|
1438
|
+
111
|
1439
|
+
112
|
1440
|
+
113
|
1441
|
+
114
|
1442
|
+
115
|
1443
|
+
116
|
1444
|
+
117
|
1445
|
+
118
|
1446
|
+
119
|
1447
|
+
120
|
1448
|
+
121
|
1449
|
+
122
|
1450
|
+
123
|
1451
|
+
124
|
1452
|
+
125
|
1453
|
+
126
|
1454
|
+
127
|
1455
|
+
128
|
1456
|
+
129
|
1457
|
+
130
|
1458
|
+
131
|
1459
|
+
132
|
1460
|
+
133
|
1461
|
+
134
|
1462
|
+
135
|
1463
|
+
136
|
1464
|
+
137
|
1465
|
+
138
|
1466
|
+
139
|
1467
|
+
140
|
1468
|
+
141
|
1469
|
+
142
|
1470
|
+
143
|
1471
|
+
144
|
1472
|
+
145
|
1473
|
+
146
|
1474
|
+
147
|
1475
|
+
148
|
1476
|
+
149
|
1477
|
+
150
|
1478
|
+
151
|
1479
|
+
152
|
1480
|
+
153
|
1481
|
+
154
|
1482
|
+
155
|
1483
|
+
156
|
1484
|
+
157
|
1485
|
+
158
|
1486
|
+
159
|
1487
|
+
160
|
1488
|
+
161
|
1489
|
+
162
|
1490
|
+
163
|
1491
|
+
164
|
1492
|
+
165</pre>
|
1493
|
+
</td>
|
1494
|
+
<td>
|
1495
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
|
1496
|
+
|
1497
|
+
<span class='kw'>class</span> <span class='const'>Rule</span>
|
1498
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
|
1499
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
|
1500
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
|
1501
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
|
1502
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
|
1503
|
+
|
1504
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
|
1505
|
+
|
1506
|
+
<span class='comment'># Creates a new rule.
|
1507
|
+
</span> <span class='comment'>#
|
1508
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1509
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
1510
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
1511
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1512
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
1513
|
+
</span> <span class='comment'># @see .create
|
1514
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1515
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1516
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
|
1517
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1518
|
+
<span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
1519
|
+
<span class='kw'>end</span>
|
1520
|
+
|
1521
|
+
<span class='comment'># Returns the resource class(es) for the current rule.
|
1522
|
+
</span> <span class='comment'>#
|
1523
|
+
</span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
|
1524
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
|
1525
|
+
<span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
|
1526
|
+
<span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
|
1527
|
+
<span class='kw'>end</span>
|
1528
|
+
|
1529
|
+
<span class='comment'># Checks if the rule is a regexp.
|
1530
|
+
</span> <span class='comment'>#
|
1531
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
|
1532
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
|
1533
|
+
<span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
|
1534
|
+
<span class='kw'>end</span>
|
1535
|
+
|
1536
|
+
<span class='comment'># Checks if the rule is a regexp.
|
1537
|
+
</span> <span class='comment'>#
|
1538
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
|
1539
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
|
1540
|
+
<span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
1541
|
+
<span class='kw'>end</span>
|
1542
|
+
|
1543
|
+
<span class='comment'># Matches a hostname to the rule.
|
1544
|
+
</span> <span class='comment'>#
|
1545
|
+
</span> <span class='comment'># @param hostname [String] The hostname to match.
|
1546
|
+
</span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
|
1547
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
1548
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
1549
|
+
<span class='kw'>end</span>
|
1550
|
+
|
1551
|
+
<span class='comment'># Creates a new rule.
|
1552
|
+
</span> <span class='comment'>#
|
1553
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1554
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1555
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
1556
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1557
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1558
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
1559
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1560
|
+
<span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1561
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1562
|
+
<span class='kw'>end</span>
|
1563
|
+
|
1564
|
+
<span class='comment'># Converts a class to the correspondent symbol.
|
1565
|
+
</span> <span class='comment'>#
|
1566
|
+
</span> <span class='comment'># @param klass [Class] The class to convert.
|
1567
|
+
</span> <span class='comment'># @return [Symbol] The symbol representation of the class.
|
1568
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
|
1569
|
+
<span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\\2</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
|
1570
|
+
<span class='kw'>end</span>
|
1571
|
+
|
1572
|
+
<span class='comment'># Converts a symbol to the correspondent DNS resource class.
|
1573
|
+
</span> <span class='comment'>#
|
1574
|
+
</span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
|
1575
|
+
</span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
|
1576
|
+
</span> <span class='comment'># @return [Symbol] The class associated to the symbol.
|
1577
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
1578
|
+
<span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
|
1579
|
+
|
1580
|
+
<span class='kw'>begin</span>
|
1581
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
|
1582
|
+
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
|
1583
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1584
|
+
<span class='kw'>end</span>
|
1585
|
+
<span class='kw'>end</span>
|
1586
|
+
|
1587
|
+
<span class='id identifier rubyid_private'>private</span>
|
1588
|
+
<span class='comment'># Setups a new rule.
|
1589
|
+
</span> <span class='comment'>#
|
1590
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1591
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
1592
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
1593
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1594
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
1595
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1596
|
+
<span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
|
1597
|
+
<span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1598
|
+
<span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
|
1599
|
+
<span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
1600
|
+
<span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
1601
|
+
<span class='kw'>end</span>
|
1602
|
+
|
1603
|
+
<span class='comment'># Validates a newly created rule.
|
1604
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
1605
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
1606
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
1607
|
+
<span class='kw'>end</span>
|
1608
|
+
|
1609
|
+
<span class='comment'># Setups a new rule.
|
1610
|
+
</span> <span class='comment'>#
|
1611
|
+
</span> <span class='comment'># @param rv [Rule] The rule that is been created.
|
1612
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1613
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
1614
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1615
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1616
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
1617
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1618
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
1619
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
1620
|
+
|
1621
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
|
1622
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1623
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
1624
|
+
<span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
|
1625
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span>
|
1626
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1627
|
+
<span class='kw'>end</span>
|
1628
|
+
|
1629
|
+
<span class='id identifier rubyid_rv'>rv</span>
|
1630
|
+
<span class='kw'>end</span>
|
1631
|
+
|
1632
|
+
<span class='comment'># Validate options for a new rule creation.
|
1633
|
+
</span> <span class='comment'>#
|
1634
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1635
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1636
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1637
|
+
</span> <span class='comment'># @param localizer [Localizer] A localizer object.
|
1638
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
|
1639
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
1640
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
1641
|
+
<span class='kw'>end</span>
|
1642
|
+
<span class='kw'>end</span></pre>
|
1643
|
+
</td>
|
1644
|
+
</tr>
|
1645
|
+
</table>
|
1646
|
+
</div>
|
1647
|
+
|
1648
|
+
|
1649
|
+
<span id="reply=-instance_method"></span>
|
817
1650
|
<div class="method_details ">
|
818
|
-
<h3 class="signature " id="
|
1651
|
+
<h3 class="signature " id="reply-instance_method">
|
819
1652
|
|
820
|
-
- (<tt>
|
1653
|
+
- (<tt>String</tt>) <strong>reply</strong>
|
821
1654
|
|
822
1655
|
|
823
1656
|
|
@@ -825,20 +1658,375 @@
|
|
825
1658
|
|
826
1659
|
</h3><div class="docstring">
|
827
1660
|
<div class="discussion">
|
828
|
-
<p>The
|
1661
|
+
<p>The IP or hostname to reply back to the client. Default: <code>127.0.0.1</code>. @see .create</p>
|
829
1662
|
|
830
1663
|
|
831
1664
|
</div>
|
832
1665
|
</div>
|
833
1666
|
<div class="tags">
|
834
1667
|
|
1668
|
+
<p class="tag_title">Returns:</p>
|
1669
|
+
<ul class="return">
|
1670
|
+
|
1671
|
+
<li>
|
1672
|
+
|
1673
|
+
|
1674
|
+
<span class='type'>(<tt>String</tt>)</span>
|
1675
|
+
|
1676
|
+
|
1677
|
+
|
1678
|
+
—
|
1679
|
+
<div class='inline'><p>The IP or hostname to reply back to the client. Default: <code>127.0.0.1</code>. @see .create</p>
|
1680
|
+
</div>
|
1681
|
+
|
1682
|
+
</li>
|
1683
|
+
|
1684
|
+
</ul>
|
835
1685
|
|
836
|
-
|
837
|
-
<
|
838
|
-
|
839
|
-
<
|
1686
|
+
</div><table class="source_code">
|
1687
|
+
<tr>
|
1688
|
+
<td>
|
1689
|
+
<pre class="lines">
|
1690
|
+
|
1691
|
+
|
1692
|
+
20
|
1693
|
+
21
|
1694
|
+
22
|
1695
|
+
23
|
1696
|
+
24
|
1697
|
+
25
|
1698
|
+
26
|
1699
|
+
27
|
1700
|
+
28
|
1701
|
+
29
|
1702
|
+
30
|
1703
|
+
31
|
1704
|
+
32
|
1705
|
+
33
|
1706
|
+
34
|
1707
|
+
35
|
1708
|
+
36
|
1709
|
+
37
|
1710
|
+
38
|
1711
|
+
39
|
1712
|
+
40
|
1713
|
+
41
|
1714
|
+
42
|
1715
|
+
43
|
1716
|
+
44
|
1717
|
+
45
|
1718
|
+
46
|
1719
|
+
47
|
1720
|
+
48
|
1721
|
+
49
|
1722
|
+
50
|
1723
|
+
51
|
1724
|
+
52
|
1725
|
+
53
|
1726
|
+
54
|
1727
|
+
55
|
1728
|
+
56
|
1729
|
+
57
|
1730
|
+
58
|
1731
|
+
59
|
1732
|
+
60
|
1733
|
+
61
|
1734
|
+
62
|
1735
|
+
63
|
1736
|
+
64
|
1737
|
+
65
|
1738
|
+
66
|
1739
|
+
67
|
1740
|
+
68
|
1741
|
+
69
|
1742
|
+
70
|
1743
|
+
71
|
1744
|
+
72
|
1745
|
+
73
|
1746
|
+
74
|
1747
|
+
75
|
1748
|
+
76
|
1749
|
+
77
|
1750
|
+
78
|
1751
|
+
79
|
1752
|
+
80
|
1753
|
+
81
|
1754
|
+
82
|
1755
|
+
83
|
1756
|
+
84
|
1757
|
+
85
|
1758
|
+
86
|
1759
|
+
87
|
1760
|
+
88
|
1761
|
+
89
|
1762
|
+
90
|
1763
|
+
91
|
1764
|
+
92
|
1765
|
+
93
|
1766
|
+
94
|
1767
|
+
95
|
1768
|
+
96
|
1769
|
+
97
|
1770
|
+
98
|
1771
|
+
99
|
1772
|
+
100
|
1773
|
+
101
|
1774
|
+
102
|
1775
|
+
103
|
1776
|
+
104
|
1777
|
+
105
|
1778
|
+
106
|
1779
|
+
107
|
1780
|
+
108
|
1781
|
+
109
|
1782
|
+
110
|
1783
|
+
111
|
1784
|
+
112
|
1785
|
+
113
|
1786
|
+
114
|
1787
|
+
115
|
1788
|
+
116
|
1789
|
+
117
|
1790
|
+
118
|
1791
|
+
119
|
1792
|
+
120
|
1793
|
+
121
|
1794
|
+
122
|
1795
|
+
123
|
1796
|
+
124
|
1797
|
+
125
|
1798
|
+
126
|
1799
|
+
127
|
1800
|
+
128
|
1801
|
+
129
|
1802
|
+
130
|
1803
|
+
131
|
1804
|
+
132
|
1805
|
+
133
|
1806
|
+
134
|
1807
|
+
135
|
1808
|
+
136
|
1809
|
+
137
|
1810
|
+
138
|
1811
|
+
139
|
1812
|
+
140
|
1813
|
+
141
|
1814
|
+
142
|
1815
|
+
143
|
1816
|
+
144
|
1817
|
+
145
|
1818
|
+
146
|
1819
|
+
147
|
1820
|
+
148
|
1821
|
+
149
|
1822
|
+
150
|
1823
|
+
151
|
1824
|
+
152
|
1825
|
+
153
|
1826
|
+
154
|
1827
|
+
155
|
1828
|
+
156
|
1829
|
+
157
|
1830
|
+
158
|
1831
|
+
159
|
1832
|
+
160
|
1833
|
+
161
|
1834
|
+
162
|
1835
|
+
163
|
1836
|
+
164
|
1837
|
+
165</pre>
|
1838
|
+
</td>
|
1839
|
+
<td>
|
1840
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
|
1841
|
+
|
1842
|
+
<span class='kw'>class</span> <span class='const'>Rule</span>
|
1843
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
|
1844
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
|
1845
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
|
1846
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
|
1847
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
|
1848
|
+
|
1849
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
|
1850
|
+
|
1851
|
+
<span class='comment'># Creates a new rule.
|
1852
|
+
</span> <span class='comment'>#
|
1853
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1854
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
1855
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
1856
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1857
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
1858
|
+
</span> <span class='comment'># @see .create
|
1859
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1860
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1861
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
|
1862
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1863
|
+
<span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
1864
|
+
<span class='kw'>end</span>
|
1865
|
+
|
1866
|
+
<span class='comment'># Returns the resource class(es) for the current rule.
|
1867
|
+
</span> <span class='comment'>#
|
1868
|
+
</span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
|
1869
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
|
1870
|
+
<span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
|
1871
|
+
<span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
|
1872
|
+
<span class='kw'>end</span>
|
1873
|
+
|
1874
|
+
<span class='comment'># Checks if the rule is a regexp.
|
1875
|
+
</span> <span class='comment'>#
|
1876
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
|
1877
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
|
1878
|
+
<span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
|
1879
|
+
<span class='kw'>end</span>
|
1880
|
+
|
1881
|
+
<span class='comment'># Checks if the rule is a regexp.
|
1882
|
+
</span> <span class='comment'>#
|
1883
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
|
1884
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
|
1885
|
+
<span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
1886
|
+
<span class='kw'>end</span>
|
1887
|
+
|
1888
|
+
<span class='comment'># Matches a hostname to the rule.
|
1889
|
+
</span> <span class='comment'>#
|
1890
|
+
</span> <span class='comment'># @param hostname [String] The hostname to match.
|
1891
|
+
</span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
|
1892
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
1893
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
1894
|
+
<span class='kw'>end</span>
|
1895
|
+
|
1896
|
+
<span class='comment'># Creates a new rule.
|
1897
|
+
</span> <span class='comment'>#
|
1898
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1899
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1900
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
1901
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1902
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1903
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
1904
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1905
|
+
<span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1906
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1907
|
+
<span class='kw'>end</span>
|
1908
|
+
|
1909
|
+
<span class='comment'># Converts a class to the correspondent symbol.
|
1910
|
+
</span> <span class='comment'>#
|
1911
|
+
</span> <span class='comment'># @param klass [Class] The class to convert.
|
1912
|
+
</span> <span class='comment'># @return [Symbol] The symbol representation of the class.
|
1913
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
|
1914
|
+
<span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\\2</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
|
1915
|
+
<span class='kw'>end</span>
|
1916
|
+
|
1917
|
+
<span class='comment'># Converts a symbol to the correspondent DNS resource class.
|
1918
|
+
</span> <span class='comment'>#
|
1919
|
+
</span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
|
1920
|
+
</span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
|
1921
|
+
</span> <span class='comment'># @return [Symbol] The class associated to the symbol.
|
1922
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
1923
|
+
<span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
|
1924
|
+
|
1925
|
+
<span class='kw'>begin</span>
|
1926
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
|
1927
|
+
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
|
1928
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1929
|
+
<span class='kw'>end</span>
|
1930
|
+
<span class='kw'>end</span>
|
1931
|
+
|
1932
|
+
<span class='id identifier rubyid_private'>private</span>
|
1933
|
+
<span class='comment'># Setups a new rule.
|
1934
|
+
</span> <span class='comment'>#
|
1935
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
1936
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
1937
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
1938
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1939
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
1940
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1941
|
+
<span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
|
1942
|
+
<span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1943
|
+
<span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
|
1944
|
+
<span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
1945
|
+
<span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
1946
|
+
<span class='kw'>end</span>
|
1947
|
+
|
1948
|
+
<span class='comment'># Validates a newly created rule.
|
1949
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
1950
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
1951
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
1952
|
+
<span class='kw'>end</span>
|
1953
|
+
|
1954
|
+
<span class='comment'># Setups a new rule.
|
1955
|
+
</span> <span class='comment'>#
|
1956
|
+
</span> <span class='comment'># @param rv [Rule] The rule that is been created.
|
1957
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1958
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
1959
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1960
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1961
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
1962
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1963
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
1964
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
1965
|
+
|
1966
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
|
1967
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1968
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
1969
|
+
<span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
|
1970
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span>
|
1971
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1972
|
+
<span class='kw'>end</span>
|
1973
|
+
|
1974
|
+
<span class='id identifier rubyid_rv'>rv</span>
|
1975
|
+
<span class='kw'>end</span>
|
1976
|
+
|
1977
|
+
<span class='comment'># Validate options for a new rule creation.
|
1978
|
+
</span> <span class='comment'>#
|
1979
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
1980
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
1981
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
1982
|
+
</span> <span class='comment'># @param localizer [Localizer] A localizer object.
|
1983
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
|
1984
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
1985
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
1986
|
+
<span class='kw'>end</span>
|
1987
|
+
<span class='kw'>end</span></pre>
|
1988
|
+
</td>
|
1989
|
+
</tr>
|
1990
|
+
</table>
|
1991
|
+
</div>
|
840
1992
|
|
841
|
-
|
1993
|
+
|
1994
|
+
<span id="type=-instance_method"></span>
|
1995
|
+
<div class="method_details ">
|
1996
|
+
<h3 class="signature " id="type-instance_method">
|
1997
|
+
|
1998
|
+
- (<tt>Symbol</tt>) <strong>type</strong>
|
1999
|
+
|
2000
|
+
|
2001
|
+
|
2002
|
+
|
2003
|
+
|
2004
|
+
</h3><div class="docstring">
|
2005
|
+
<div class="discussion">
|
2006
|
+
<p>The type of request to match. Default: <code>:A</code>. @see .create</p>
|
2007
|
+
|
2008
|
+
|
2009
|
+
</div>
|
2010
|
+
</div>
|
2011
|
+
<div class="tags">
|
2012
|
+
|
2013
|
+
<p class="tag_title">Returns:</p>
|
2014
|
+
<ul class="return">
|
2015
|
+
|
2016
|
+
<li>
|
2017
|
+
|
2018
|
+
|
2019
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
2020
|
+
|
2021
|
+
|
2022
|
+
|
2023
|
+
—
|
2024
|
+
<div class='inline'><p>The type of request to match. Default: <code>:A</code>. @see .create</p>
|
2025
|
+
</div>
|
2026
|
+
|
2027
|
+
</li>
|
2028
|
+
|
2029
|
+
</ul>
|
842
2030
|
|
843
2031
|
</div><table class="source_code">
|
844
2032
|
<tr>
|
@@ -846,15 +2034,301 @@
|
|
846
2034
|
<pre class="lines">
|
847
2035
|
|
848
2036
|
|
849
|
-
|
850
|
-
|
851
|
-
|
2037
|
+
20
|
2038
|
+
21
|
2039
|
+
22
|
2040
|
+
23
|
2041
|
+
24
|
2042
|
+
25
|
2043
|
+
26
|
2044
|
+
27
|
2045
|
+
28
|
2046
|
+
29
|
2047
|
+
30
|
2048
|
+
31
|
2049
|
+
32
|
2050
|
+
33
|
2051
|
+
34
|
2052
|
+
35
|
2053
|
+
36
|
2054
|
+
37
|
2055
|
+
38
|
2056
|
+
39
|
2057
|
+
40
|
2058
|
+
41
|
2059
|
+
42
|
2060
|
+
43
|
2061
|
+
44
|
2062
|
+
45
|
2063
|
+
46
|
2064
|
+
47
|
2065
|
+
48
|
2066
|
+
49
|
2067
|
+
50
|
2068
|
+
51
|
2069
|
+
52
|
2070
|
+
53
|
2071
|
+
54
|
2072
|
+
55
|
2073
|
+
56
|
2074
|
+
57
|
2075
|
+
58
|
2076
|
+
59
|
2077
|
+
60
|
2078
|
+
61
|
2079
|
+
62
|
2080
|
+
63
|
2081
|
+
64
|
2082
|
+
65
|
2083
|
+
66
|
2084
|
+
67
|
2085
|
+
68
|
2086
|
+
69
|
2087
|
+
70
|
2088
|
+
71
|
2089
|
+
72
|
2090
|
+
73
|
2091
|
+
74
|
2092
|
+
75
|
2093
|
+
76
|
2094
|
+
77
|
2095
|
+
78
|
2096
|
+
79
|
2097
|
+
80
|
2098
|
+
81
|
2099
|
+
82
|
2100
|
+
83
|
2101
|
+
84
|
2102
|
+
85
|
2103
|
+
86
|
2104
|
+
87
|
2105
|
+
88
|
2106
|
+
89
|
2107
|
+
90
|
2108
|
+
91
|
2109
|
+
92
|
2110
|
+
93
|
2111
|
+
94
|
2112
|
+
95
|
2113
|
+
96
|
2114
|
+
97
|
2115
|
+
98
|
2116
|
+
99
|
2117
|
+
100
|
2118
|
+
101
|
2119
|
+
102
|
2120
|
+
103
|
2121
|
+
104
|
2122
|
+
105
|
2123
|
+
106
|
2124
|
+
107
|
2125
|
+
108
|
2126
|
+
109
|
2127
|
+
110
|
2128
|
+
111
|
2129
|
+
112
|
2130
|
+
113
|
2131
|
+
114
|
2132
|
+
115
|
2133
|
+
116
|
2134
|
+
117
|
2135
|
+
118
|
2136
|
+
119
|
2137
|
+
120
|
2138
|
+
121
|
2139
|
+
122
|
2140
|
+
123
|
2141
|
+
124
|
2142
|
+
125
|
2143
|
+
126
|
2144
|
+
127
|
2145
|
+
128
|
2146
|
+
129
|
2147
|
+
130
|
2148
|
+
131
|
2149
|
+
132
|
2150
|
+
133
|
2151
|
+
134
|
2152
|
+
135
|
2153
|
+
136
|
2154
|
+
137
|
2155
|
+
138
|
2156
|
+
139
|
2157
|
+
140
|
2158
|
+
141
|
2159
|
+
142
|
2160
|
+
143
|
2161
|
+
144
|
2162
|
+
145
|
2163
|
+
146
|
2164
|
+
147
|
2165
|
+
148
|
2166
|
+
149
|
2167
|
+
150
|
2168
|
+
151
|
2169
|
+
152
|
2170
|
+
153
|
2171
|
+
154
|
2172
|
+
155
|
2173
|
+
156
|
2174
|
+
157
|
2175
|
+
158
|
2176
|
+
159
|
2177
|
+
160
|
2178
|
+
161
|
2179
|
+
162
|
2180
|
+
163
|
2181
|
+
164
|
2182
|
+
165</pre>
|
852
2183
|
</td>
|
853
2184
|
<td>
|
854
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
2185
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 20</span>
|
2186
|
+
|
2187
|
+
<span class='kw'>class</span> <span class='const'>Rule</span>
|
2188
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:match</span>
|
2189
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:type</span>
|
2190
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:reply</span>
|
2191
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:options</span>
|
2192
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:block</span>
|
2193
|
+
|
2194
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>I18n</span>
|
2195
|
+
|
2196
|
+
<span class='comment'># Creates a new rule.
|
2197
|
+
</span> <span class='comment'>#
|
2198
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
2199
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
2200
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
2201
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
2202
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
2203
|
+
</span> <span class='comment'># @see .create
|
2204
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>.+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='symbol'>:A</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
2205
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n_setup'>i18n_setup</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
2206
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span>
|
2207
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
2208
|
+
<span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
2209
|
+
<span class='kw'>end</span>
|
2210
|
+
|
2211
|
+
<span class='comment'># Returns the resource class(es) for the current rule.
|
2212
|
+
</span> <span class='comment'>#
|
2213
|
+
</span> <span class='comment'># @return [Array|Class] The class(es) for the current rule.
|
2214
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
|
2215
|
+
<span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
|
2216
|
+
<span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
|
2217
|
+
<span class='kw'>end</span>
|
2218
|
+
|
2219
|
+
<span class='comment'># Checks if the rule is a regexp.
|
2220
|
+
</span> <span class='comment'>#
|
2221
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule is a Regexp, `false` otherwise.
|
2222
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
|
2223
|
+
<span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
|
2224
|
+
<span class='kw'>end</span>
|
855
2225
|
|
856
|
-
<span class='
|
857
|
-
<span class='
|
2226
|
+
<span class='comment'># Checks if the rule is a regexp.
|
2227
|
+
</span> <span class='comment'>#
|
2228
|
+
</span> <span class='comment'># @return [Boolean] `true` if the rule has a block, `false` otherwise.
|
2229
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
|
2230
|
+
<span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
2231
|
+
<span class='kw'>end</span>
|
2232
|
+
|
2233
|
+
<span class='comment'># Matches a hostname to the rule.
|
2234
|
+
</span> <span class='comment'>#
|
2235
|
+
</span> <span class='comment'># @param hostname [String] The hostname to match.
|
2236
|
+
</span> <span class='comment'># @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
|
2237
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
2238
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
2239
|
+
<span class='kw'>end</span>
|
2240
|
+
|
2241
|
+
<span class='comment'># Creates a new rule.
|
2242
|
+
</span> <span class='comment'>#
|
2243
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
2244
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
2245
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
2246
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
2247
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
2248
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
2249
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
2250
|
+
<span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
2251
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
2252
|
+
<span class='kw'>end</span>
|
2253
|
+
|
2254
|
+
<span class='comment'># Converts a class to the correspondent symbol.
|
2255
|
+
</span> <span class='comment'>#
|
2256
|
+
</span> <span class='comment'># @param klass [Class] The class to convert.
|
2257
|
+
</span> <span class='comment'># @return [Symbol] The symbol representation of the class.
|
2258
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
|
2259
|
+
<span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\\2</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
|
2260
|
+
<span class='kw'>end</span>
|
2261
|
+
|
2262
|
+
<span class='comment'># Converts a symbol to the correspondent DNS resource class.
|
2263
|
+
</span> <span class='comment'>#
|
2264
|
+
</span> <span class='comment'># @param symbol [Symbol] The symbol to convert.
|
2265
|
+
</span> <span class='comment'># @param locale [Symbol] The locale to use for the messages.
|
2266
|
+
</span> <span class='comment'># @return [Symbol] The class associated to the symbol.
|
2267
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
2268
|
+
<span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
|
2269
|
+
|
2270
|
+
<span class='kw'>begin</span>
|
2271
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
|
2272
|
+
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
|
2273
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
2274
|
+
<span class='kw'>end</span>
|
2275
|
+
<span class='kw'>end</span>
|
2276
|
+
|
2277
|
+
<span class='id identifier rubyid_private'>private</span>
|
2278
|
+
<span class='comment'># Setups a new rule.
|
2279
|
+
</span> <span class='comment'>#
|
2280
|
+
</span> <span class='comment'># @param match [String|Regexp] The pattern to match.
|
2281
|
+
</span> <span class='comment'># @param reply [String] The IP or hostname to reply back to the client.
|
2282
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match.
|
2283
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
2284
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
2285
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply'>reply</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
2286
|
+
<span class='ivar'>@match</span> <span class='op'>=</span> <span class='id identifier rubyid_match'>match</span>
|
2287
|
+
<span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
2288
|
+
<span class='ivar'>@reply</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>?</span> <span class='lparen'>(</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span>
|
2289
|
+
<span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
2290
|
+
<span class='ivar'>@block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
2291
|
+
<span class='kw'>end</span>
|
2292
|
+
|
2293
|
+
<span class='comment'># Validates a newly created rule.
|
2294
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_validate_rule'>validate_rule</span>
|
2295
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@reply</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
2296
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
2297
|
+
<span class='kw'>end</span>
|
2298
|
+
|
2299
|
+
<span class='comment'># Setups a new rule.
|
2300
|
+
</span> <span class='comment'>#
|
2301
|
+
</span> <span class='comment'># @param rv [Rule] The rule that is been created.
|
2302
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
2303
|
+
</span> <span class='comment'># @param type [Symbol] The type of request to match. This is ignored if a block is provided.
|
2304
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
2305
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
2306
|
+
</span> <span class='comment'># @return [Rule] The new rule.
|
2307
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
2308
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
2309
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
2310
|
+
|
2311
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
|
2312
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
2313
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
2314
|
+
<span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
|
2315
|
+
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span>
|
2316
|
+
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
2317
|
+
<span class='kw'>end</span>
|
2318
|
+
|
2319
|
+
<span class='id identifier rubyid_rv'>rv</span>
|
2320
|
+
<span class='kw'>end</span>
|
2321
|
+
|
2322
|
+
<span class='comment'># Validate options for a new rule creation.
|
2323
|
+
</span> <span class='comment'>#
|
2324
|
+
</span> <span class='comment'># @param reply_or_type [String|Symbol] The IP or hostname to reply back to the client (or the type of request to match, if a block is provided).
|
2325
|
+
</span> <span class='comment'># @param options [Hash] A list of options for the request.
|
2326
|
+
</span> <span class='comment'># @param block [Proc] An optional block to compute the reply instead of using the `reply_or_type` parameter. In this case `reply_or_type` is used for the type of the request and `type` is ignored.
|
2327
|
+
</span> <span class='comment'># @param localizer [Localizer] A localizer object.
|
2328
|
+
</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='id identifier rubyid_localizer'>localizer</span><span class='rparen'>)</span>
|
2329
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_call'>rule_invalid_call</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
2330
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_localizer'>localizer</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_rule_invalid_options'>rule_invalid_options</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Hash</span><span class='rparen'>)</span>
|
2331
|
+
<span class='kw'>end</span>
|
858
2332
|
<span class='kw'>end</span></pre>
|
859
2333
|
</td>
|
860
2334
|
</tr>
|
@@ -871,7 +2345,7 @@
|
|
871
2345
|
<div class="method_details first">
|
872
2346
|
<h3 class="signature first" id="create-class_method">
|
873
2347
|
|
874
|
-
+ (<tt>
|
2348
|
+
+ (<tt><span class='object_link'><a href="" title="DevDNSd::Rule (class)">Rule</a></span></tt>) <strong>create</strong>(match, reply_or_type = nil, type = nil, options = {}, &block)
|
875
2349
|
|
876
2350
|
|
877
2351
|
|
@@ -971,16 +2445,20 @@
|
|
971
2445
|
|
972
2446
|
</ul>
|
973
2447
|
|
974
|
-
<p class="tag_title">
|
975
|
-
<ul class="
|
2448
|
+
<p class="tag_title">Returns:</p>
|
2449
|
+
<ul class="return">
|
976
2450
|
|
977
2451
|
<li>
|
978
2452
|
|
979
2453
|
|
980
|
-
<span class='type'>(<tt><span class='object_link'><a href="
|
2454
|
+
<span class='type'>(<tt><span class='object_link'><a href="" title="DevDNSd::Rule (class)">Rule</a></span></tt>)</span>
|
981
2455
|
|
982
2456
|
|
983
2457
|
|
2458
|
+
—
|
2459
|
+
<div class='inline'><p>The new rule.</p>
|
2460
|
+
</div>
|
2461
|
+
|
984
2462
|
</li>
|
985
2463
|
|
986
2464
|
</ul>
|
@@ -991,45 +2469,17 @@
|
|
991
2469
|
<pre class="lines">
|
992
2470
|
|
993
2471
|
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
93
|
999
|
-
94
|
1000
|
-
95
|
1001
|
-
96
|
1002
|
-
97
|
1003
|
-
98
|
1004
|
-
99
|
1005
|
-
100
|
1006
|
-
101
|
1007
|
-
102
|
1008
|
-
103
|
1009
|
-
104
|
1010
|
-
105
|
1011
|
-
106</pre>
|
2472
|
+
82
|
2473
|
+
83
|
2474
|
+
84
|
2475
|
+
85</pre>
|
1012
2476
|
</td>
|
1013
2477
|
<td>
|
1014
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
2478
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 82</span>
|
1015
2479
|
|
1016
2480
|
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1017
|
-
<span class='id identifier
|
1018
|
-
<span class='id identifier
|
1019
|
-
|
1020
|
-
<span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span>
|
1021
|
-
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
1022
|
-
|
1023
|
-
<span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='kw'>then</span> <span class='comment'># reply_or_type acts like a type, type is ignored
|
1024
|
-
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1025
|
-
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
1026
|
-
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_block'>block</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
|
1027
|
-
<span class='kw'>else</span> <span class='comment'># reply_or_type acts like a reply
|
1028
|
-
</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_reply'>reply</span> <span class='op'>=</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</span></span>
|
1029
|
-
<span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>||</span> <span class='symbol'>:A</span>
|
1030
|
-
<span class='kw'>end</span>
|
1031
|
-
|
1032
|
-
<span class='id identifier rubyid_rv'>rv</span>
|
2481
|
+
<span class='id identifier rubyid_validate_options'>validate_options</span><span class='lparen'>(</span><span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='comma'>,</span> <span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
2482
|
+
<span class='id identifier rubyid_setup'>setup</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_match'>match</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_reply_or_type'>reply_or_type</span><span class='comma'>,</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
|
1033
2483
|
<span class='kw'>end</span></pre>
|
1034
2484
|
</td>
|
1035
2485
|
</tr>
|
@@ -1097,12 +2547,12 @@
|
|
1097
2547
|
<pre class="lines">
|
1098
2548
|
|
1099
2549
|
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
2550
|
+
91
|
2551
|
+
92
|
2552
|
+
93</pre>
|
1103
2553
|
</td>
|
1104
2554
|
<td>
|
1105
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
2555
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 91</span>
|
1106
2556
|
|
1107
2557
|
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_resource_class_to_symbol'>resource_class_to_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
|
1108
2558
|
<span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(.+::)?(.+)</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\\2</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
|
@@ -1115,7 +2565,7 @@
|
|
1115
2565
|
<div class="method_details ">
|
1116
2566
|
<h3 class="signature " id="symbol_to_resource_class-class_method">
|
1117
2567
|
|
1118
|
-
+ (<tt>Symbol</tt>) <strong>symbol_to_resource_class</strong>(symbol)
|
2568
|
+
+ (<tt>Symbol</tt>) <strong>symbol_to_resource_class</strong>(symbol, locale = nil)
|
1119
2569
|
|
1120
2570
|
|
1121
2571
|
|
@@ -1147,6 +2597,23 @@
|
|
1147
2597
|
|
1148
2598
|
</li>
|
1149
2599
|
|
2600
|
+
<li>
|
2601
|
+
|
2602
|
+
<span class='name'>locale</span>
|
2603
|
+
|
2604
|
+
|
2605
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
2606
|
+
|
2607
|
+
|
2608
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
2609
|
+
|
2610
|
+
|
2611
|
+
—
|
2612
|
+
<div class='inline'><p>The locale to use for the messages.</p>
|
2613
|
+
</div>
|
2614
|
+
|
2615
|
+
</li>
|
2616
|
+
|
1150
2617
|
</ul>
|
1151
2618
|
|
1152
2619
|
<p class="tag_title">Returns:</p>
|
@@ -1173,26 +2640,26 @@
|
|
1173
2640
|
<pre class="lines">
|
1174
2641
|
|
1175
2642
|
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
2643
|
+
100
|
2644
|
+
101
|
2645
|
+
102
|
2646
|
+
103
|
2647
|
+
104
|
2648
|
+
105
|
2649
|
+
106
|
2650
|
+
107
|
2651
|
+
108</pre>
|
1185
2652
|
</td>
|
1186
2653
|
<td>
|
1187
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
2654
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 100</span>
|
1188
2655
|
|
1189
|
-
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span>
|
2656
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
1190
2657
|
<span class='id identifier rubyid_symbol'>symbol</span> <span class='op'>=</span> <span class='id identifier rubyid_symbol'>symbol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
|
1191
2658
|
|
1192
2659
|
<span class='kw'>begin</span>
|
1193
2660
|
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Resolv::DNS::Resource::IN::</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
|
1194
2661
|
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>NameError</span>
|
1195
|
-
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='
|
2662
|
+
<span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>DevDNSd</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidRule</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Lazier</span><span class='op'>::</span><span class='const'>Localizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='symbol'>:devdnsd</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_absolute_path'>absolute_path</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_locale'>locale</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_i18n'>i18n</span><span class='period'>.</span><span class='id identifier rubyid_invalid_class'>invalid_class</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1196
2663
|
<span class='kw'>end</span>
|
1197
2664
|
<span class='kw'>end</span></pre>
|
1198
2665
|
</td>
|
@@ -1248,15 +2715,15 @@
|
|
1248
2715
|
<pre class="lines">
|
1249
2716
|
|
1250
2717
|
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
2718
|
+
62
|
2719
|
+
63
|
2720
|
+
64</pre>
|
1254
2721
|
</td>
|
1255
2722
|
<td>
|
1256
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
2723
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 62</span>
|
1257
2724
|
|
1258
2725
|
<span class='kw'>def</span> <span class='id identifier rubyid_has_block?'>has_block?</span>
|
1259
|
-
<span class='
|
2726
|
+
<span class='ivar'>@block</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
1260
2727
|
<span class='kw'>end</span></pre>
|
1261
2728
|
</td>
|
1262
2729
|
</tr>
|
@@ -1305,15 +2772,15 @@
|
|
1305
2772
|
<pre class="lines">
|
1306
2773
|
|
1307
2774
|
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
2775
|
+
55
|
2776
|
+
56
|
2777
|
+
57</pre>
|
1311
2778
|
</td>
|
1312
2779
|
<td>
|
1313
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
2780
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 55</span>
|
1314
2781
|
|
1315
2782
|
<span class='kw'>def</span> <span class='id identifier rubyid_is_regexp?'>is_regexp?</span>
|
1316
|
-
<span class='
|
2783
|
+
<span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Regexp</span><span class='rparen'>)</span>
|
1317
2784
|
<span class='kw'>end</span></pre>
|
1318
2785
|
</td>
|
1319
2786
|
</tr>
|
@@ -1381,15 +2848,15 @@
|
|
1381
2848
|
<pre class="lines">
|
1382
2849
|
|
1383
2850
|
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
2851
|
+
70
|
2852
|
+
71
|
2853
|
+
72</pre>
|
1387
2854
|
</td>
|
1388
2855
|
<td>
|
1389
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
2856
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 70</span>
|
1390
2857
|
|
1391
2858
|
<span class='kw'>def</span> <span class='id identifier rubyid_match_host'>match_host</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
1392
|
-
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='
|
2859
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_is_regexp?'>is_regexp?</span> <span class='op'>?</span> <span class='ivar'>@match</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='ivar'>@match</span> <span class='op'>==</span> <span class='id identifier rubyid_hostname'>hostname</span><span class='rparen'>)</span>
|
1393
2860
|
<span class='kw'>end</span></pre>
|
1394
2861
|
</td>
|
1395
2862
|
</tr>
|
@@ -1438,16 +2905,16 @@
|
|
1438
2905
|
<pre class="lines">
|
1439
2906
|
|
1440
2907
|
|
1441
|
-
|
1442
|
-
|
1443
|
-
|
1444
|
-
|
2908
|
+
47
|
2909
|
+
48
|
2910
|
+
49
|
2911
|
+
50</pre>
|
1445
2912
|
</td>
|
1446
2913
|
<td>
|
1447
|
-
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line
|
2914
|
+
<pre class="code"><span class="info file"># File 'lib/devdnsd/rule.rb', line 47</span>
|
1448
2915
|
|
1449
2916
|
<span class='kw'>def</span> <span class='id identifier rubyid_resource_class'>resource_class</span>
|
1450
|
-
<span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='
|
2917
|
+
<span class='id identifier rubyid_classes'>classes</span> <span class='op'>=</span> <span class='ivar'>@type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_cls'>cls</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_symbol_to_resource_class'>symbol_to_resource_class</span><span class='lparen'>(</span><span class='id identifier rubyid_cls'>cls</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:locale</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
|
1451
2918
|
<span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_classes'>classes</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_classes'>classes</span>
|
1452
2919
|
<span class='kw'>end</span></pre>
|
1453
2920
|
</td>
|
@@ -1460,9 +2927,9 @@
|
|
1460
2927
|
</div>
|
1461
2928
|
|
1462
2929
|
<div id="footer">
|
1463
|
-
Generated on
|
2930
|
+
Generated on Sun Feb 10 13:20:33 2013 by
|
1464
2931
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1465
|
-
0.8.
|
2932
|
+
0.8.4.1 (ruby-1.9.3).
|
1466
2933
|
</div>
|
1467
2934
|
|
1468
2935
|
</body>
|