chiark
/
gitweb
/
~webstump
/
modbot-urcm.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e9cbeb6
)
choose only one at random
master
author
WebSTUMP
<webstump@chiark.greenend.org.uk>
Mon, 8 Apr 2024 09:42:43 +0000
(10:42 +0100)
committer
WebSTUMP
<webstump@chiark.greenend.org.uk>
Mon, 8 Apr 2024 09:42:43 +0000
(10:42 +0100)
probes/modrelays-probe
patch
|
blob
|
history
diff --git
a/probes/modrelays-probe
b/probes/modrelays-probe
index 28db476376635eefd5afa5148687a1efb812addd..7c6884c0e6deb099688ee66a1eb99c00e6085fed 100755
(executable)
--- a/
probes/modrelays-probe
+++ b/
probes/modrelays-probe
@@
-67,6
+67,11
@@
record-success () { record-outcome "$1" ok ''; }
record-tempfail () { record-outcome "$1" tempfail "$2"; }
record-permfail () { record-outcome "$1" permfail "$2"; }
record-tempfail () { record-outcome "$1" tempfail "$2"; }
record-permfail () { record-outcome "$1" permfail "$2"; }
+choose () {
+ local all=$1
+ shuf -n1 -o $all.chosen $all
+}
+
probe-addr () {
local mx=$1
local addr=$2
probe-addr () {
local mx=$1
local addr=$2
@@
-136,11
+141,14
@@
probe-domain () {
case $rc in
0)
# have a list of MX's
case $rc in
0)
# have a list of MX's
- exec 3<$td/dns
+ choose $td/dns
+
local pref
local mx
local statustype
local rhs
local pref
local mx
local statustype
local rhs
+
+ exec 3<$td/dns.chosen
while read <&3 pref mx statustype statustypenum rhs; do
case $statustypenum in
0)
while read <&3 pref mx statustype statustypenum rhs; do
case $statustypenum in
0)
@@
-156,10
+164,16
@@
probe-domain () {
rhs=${rhs##* (}
rhs=${rhs% )}
local addr
rhs=${rhs##* (}
rhs=${rhs% )}
local addr
+ exec 5>$td/dns-addrs
for addr in $rhs; do
case $addr in
INET|INET6) continue ;;
esac
for addr in $rhs; do
case $addr in
INET|INET6) continue ;;
esac
+ echo >&5 $addr
+ done
+ choose $td/dns-addrs
+ exec 5<$td/dns-addrs.chosen
+ while read addr <&5; do
probe-addr $mx $addr
done
;;
probe-addr $mx $addr
done
;;
@@
-190,7
+204,8
@@
probe-domain () {
case $rc in
0)
# have a list of A's (dealt with MXs above)
case $rc in
0)
# have a list of A's (dealt with MXs above)
- exec 3<$td/dns
+ choose $td/dns
+ exec 3<$td/dns.chosen
local addr
while read <&3 addr; do
probe-addr 'NONE' $addr
local addr
while read <&3 addr; do
probe-addr 'NONE' $addr