@@ -17,32 +17,59 @@ private static function _records(): array
17
17
];
18
18
}
19
19
20
+ public static function isProvider (mixed $ value ): bool
21
+ {
22
+ return
23
+ (
24
+ is_string ($ value ) &&
25
+ false !== filter_var ($ value , FILTER_VALIDATE_IP )
26
+ );
27
+ }
28
+
20
29
public static function isHostName (mixed $ value , array $ find = ['_ ' ], array $ replace = []): bool
21
30
{
22
- return is_string ($ value ) && false !== filter_var (str_replace ($ find , $ replace , $ value ), FILTER_VALIDATE_DOMAIN , FILTER_FLAG_HOSTNAME );
31
+ return (
32
+ is_string ($ value ) &&
33
+ false !== filter_var (str_replace ($ find , $ replace , $ value ), FILTER_VALIDATE_DOMAIN , FILTER_FLAG_HOSTNAME )
34
+ );
23
35
}
24
36
25
37
public static function isRecord (mixed $ value ): bool
26
38
{
27
- return is_string ($ value ) && isset (self ::_records ()[$ value ]);
39
+ return
40
+ (
41
+ is_string ($ value ) &&
42
+ isset (self ::_records ()[$ value ])
43
+ );
28
44
}
29
45
30
46
public static function isRecordValue (mixed $ record , mixed $ value ): bool
31
47
{
32
- return is_string ($ record ) &&
33
- is_string ($ value ) &&
34
- isset (self ::_records ()[$ record ]) && self ::_records ()[$ record ]($ value );
48
+ return
49
+ (
50
+ is_string ($ record ) &&
51
+ is_string ($ value ) &&
52
+ isset (self ::_records ()[$ record ]) && self ::_records ()[$ record ]($ value )
53
+ );
35
54
}
36
55
37
- public static function records (string $ hostname , array $ records , array &$ result = [], array &$ error = []): array
56
+ public static function records (string $ hostname , array $ records , array &$ result = [], array &$ error = [], ? string $ provider = null ): array
38
57
{
58
+ if (self ::isProvider ($ provider ))
59
+ {
60
+ $ provider = sprintf (
61
+ '@%s ' ,
62
+ $ provider
63
+ );
64
+ }
65
+
39
66
if (self ::isHostName ($ hostname ))
40
67
{
41
68
foreach ($ records as $ record )
42
69
{
43
70
if (self ::isRecord ($ record ))
44
71
{
45
- if ($ values = exec (sprintf ('dig %s %s +short ' , $ record , $ hostname )))
72
+ if ($ values = exec (sprintf ('dig %s %s %s +short ' , ( string ) $ provider , ( string ) $ record , ( string ) $ hostname )))
46
73
{
47
74
foreach (explode (PHP_EOL , $ values ) as $ value )
48
75
{
0 commit comments