1# GETBODYINFO.RC
2#
3# EXTRACT IP ADDRESSES AND DOMAINS FROM EMAIL MESSAGE BODY
4#
5# This section extracts the IP addresses, hosts domains found in the
6# message body of this email, information that later recipes use.
7#
8# Last updated: 10/14/2016
9
10# EXTRACT BODY AS LOCALBODY
11
12## Reset Initial Variables
13
14LOCALBUFFER='NULL'
15LOCALBODY='NULL'
16LOCALTIMESTAMP=`${DATE} +%s`
17LOCALPID="$$"
18
19:0 bciW: ${SBTEMP}/sbtemp.${TSTAMP}.${LOCALPID}.lock
20| ${HEAD} -400 > ${SBTEMP}/sbtemp.${TSTAMP}.${LOCALPID}
21
22LOCALBODY=`${CAT} "${SBTEMP}/sbtemp.${TSTAMP}.${LOCALPID}" |\
23           ${SED} -e 's/\([0-9A-Za-z]\.\)=\r\n\([A-Z][a-z]\)/\1 @@@@@\2/g' \
24                  -e 's/\([0-9A-Za-z]\.\)=\n\([A-Z][a-z]\)/\1 @@@@@\2/g' \
25                  -e 's/[=%][0-1][0-9A-F]//g' \
26                  -e 's/\([0-9A-Za-z](\.|\?|!)\)$/\1 /g' \
27                  -e 's/\([=%][0-9A-Fa-f][0-9A-Fa-f]\)$/\1 /g' \
28                  -e 's/=$//g' |\
29           ${TR} -d '\r' | ${TR} -d '\n'`
30
31LOCALBODY=`${ECHO} "${LOCALBODY}" |\
32           ${SED} -e 's/@@@@@/\n/g' -e 's/[=%]2[Ee]/\./g' \
33                  -e 's/Content-Type: text\/plain; charset=.*Content-Type: text\/html; charset=/ /g' \
34                  -e 's/Content-ID: <.*>/ /g' \
35                  -e 's/<[Dd][Ii][Vv]( )+[Cc][Ll][Aa][Ss][Ss]( )*=( )*\"preheader\".*<\/[Dd][Ii][Vv]>/ /g' \
36                  -e 's/<[Ss][Tt][Yy][Ll][Ee][^0-9A-Za-z].*<\/[Ss][Tt][Yy][Ll][Ee]>/ /g' \
37                  -e 's/[=%]20/ /g' -e 's/[=%]2[Ff]/\//g' \
38                  -e 's/\([a-z]\)\(http:\/\/\)/\1 \2/g' \
39                  -e 's/\([a-z]\)\(https:\/\/\)/\1 \2/g' \
40                  -e 's/[=%]2[Ee]/\./g' -e 's/�/\./g';\
41           ${RM} -f ${SBTEMP}/sbtemp.${TSTAMP}.${LOCALPID}`
42
43# GET MESSAGE BODY EMAIL ADDRESSES
44#
45#  Get any email addresses in the message body.
46
47### Reset Initial Variables
48
49LOCALBUFFER='NULL'
50LOCALDOMAIN='example.com'
51LOCALEMAIL='noemail@example.com'
52LOCALHOST='host.example.com'
53LOCALIP='000.000.000.000'
54LOCALLOGIN='noemail'
55LOCALREVIP='000.000.000.000'
56LOCALTAG='no'
57
58### Extract the email address
59:0
60* LOCALBODY ?? (^|[^0-9a-z�����������������������������������]|\
61   [=%](20|3[AaDdFf]|[Aa]0))\/[0-9a-z�����������������������������������]\
62   [-_0-9a-z�����������������������������������+.]*@\
63   ([0-9a-z�����������������������������������]\
64   [-_0-9a-z�����������������������������������]*\.)+(ac|\
65     academy|actor|ad|ae|aero|af|ag|agency|ai|al|am|an|and�no|ao|aq|\
66     ar|archi|as|asia|ask�no|associates|at|au|audi|aurskog-h�no|autos|aver�no|\
67     aw|ax|axa|az|a�ci|ba|bar|bargains|bayern|bb|bd|be|bearalv�no|beer|\
68     berlev�no|berlin|best|bf|bg|bh|bi|bid|biev�no|bike|biz|bj|bjark�no|\
69     black|blackfriday|blue|bm|bn|bo|bod�no|boutique|br|br�nn�no|bs|bt|\
70     budapest|build|builders|business|buzz|bv|bw|by|bz|b�id�no|b�l�no|\
71     b�no|b�d�ddj�no|b�no|b�no|b�no|ca|cab|camera|camp|capital|caravan|\
72     cards|career|careers|casa|cat|catering|cc|cd|center|ceo|cf|cg|ch|\
73     cheap|christmas|ci|ck|cl|cleaning|click|clothing|club|cm|cn|co|codes|\
74     coffee|college|cologne|com|community|company|computer|\
75     comunica��museum|condos|construction|consulting|contractors|cooking|\
76     cool|coop|correios-e-telecomunica��museum|country|cr|cricket|cruises|cu|cv|\
77     cw|cx|cy|cz|c�no|dance|date|dating|davvenj�no|de|democrat|desi|diamonds|\
78     directory|dj|dk|dm|dnp|do|domains|download|dr�no|dyr�no|dz|d�no|ec|edu|\
79     education|ee|eg|email|engineering|enterprises|equipment|er|es|\
80     estate|et|eu|eus|events|evenᚚno|expert|exposed|faith|farm|feedback|\
81     fi|finn�no|fish|fishing|fj|fk|flights|florist|flor�no|fl�no|fm|\
82     fo|foundation|fr|frogans|fr�no|fr�no|futbol|f�no|ga|gal|gallery|\
83     gb|gd|ge|gf|gg|ggee|gh|gi|gift|gildesk�no|gj�no|gl|glass|globo|\
84     gm|gn|gop|gov|gp|gq|gr|graphics|gripe|gs|gt|gu|guide|guitars|\
85     guru|gw|gy|g�\?no|g�ls�no|g�no|haus|her�m�no|her�no|hk|hm|hn|\
86     hob�no|holdings|holiday|holt�no|homes|horse|house|hr|ht|hu|\
87     h�mm�no|h�no|h�no|h�no|h�no|id|ie|il|im|immobilien|in|inder�no|\
88     industries|info|ink|institute|int|international|io|iq|ir|is|\
89     it|je|jetzt|jm|jo|jobs|jp|j�no|karm�no|kaufen|ke|kg|kh|ki|kim|\
90     kitchen|kiwi|kl�no|km|kn|koeln|kp|kr|krager�no|krd|kred|kr�no|\
91     kr�no|kvits�no|kv�no|kw|ky|kz|k�r�no|k�no|la|lacaixa|land|\
92     langev�no|lb|lc|lea\?no|lease|li|lighting|limo|lind�no|link|lk|\
93     loab�no|london|lr|ls|lt|lu|lur�no|luxe|luxury|lv|ly|l�no|l�museum|\
94     l�no|l�no|ma|maison|management|mango|marketing|mc|md|me|media|meet|\
95     mel�no|menu|mer�no|mg|mh|miami|mil|mini|mj�no|mk|ml|mm|mn|mo|mobi|\
96     moda|moe|monash|mormon|moscow|mosj�no|motorcycles|mo�no|mp|mq|mr|ms|\
97     mt|mu|muos�no|museum|mv|mw|mx|my|mz|m�no|m�tta-v�no|m�no|m�s�no|m�no|\
98     na|nagoya|name|nc|ne|net|network|neustar|nf|ng|ni|ninja|nl|no|np|nr|\
99     nrw|nu|nyc|nz|n�no|n��no|n�r�no|n�tter�no|okinawa|om|onl|oppeg�no|\
100     org|oster�no|os�no|otsuka|ovh|pa|partners|parts|party|pe|pf|pg|ph|photo|\
101     photography|photos|pics|pictures|pink|pk|pl|plumbing|pm|pn|pors�\?no|\
102     post|pr|praxi|pro|productions|properties|ps|pt|pub|pw|py|qa|qpon|quebec|\
103     racing|rad�no|re|recipes|red|reisen|ren|rennes�no|rentals|repair|report|rest|\
104     reviews?|rich|rio|ris�no|ro|rocks|rodeo|rs|ru|ruhr|rw|ryukyu|r�hkker�no|\
105     r�no|r�no|r�no|r�d�no|r�no|sa|saarland|sandnessj�no|sand�no|sb|sc|science|\
106     sd|se|services|sexy|sg|sh|shiksha|shoes|si|singles|sj|sk|skierv�no|\
107     skjerv�no|skj�no|sk�no|sk�no|sl|sm|sm�no|sn|sn�no|so|social|sohu|\
108     solar|solutions|space|sr|st|stj�no|su|supplies|supply|support|sv|sx|sy|\
109     systems|sz|s�l�no|s�no|s�no|tattoo|tc|td|technology|tel|tf|tg|th|\
110     tienda|tips|tj|tj�no|tk|tl|tm|tn|to|today|tokyo|tools|top|town|toys|tp|\
111     tr|trade|training|tran�no|travel|troms�no|tr�no|tr�no|tt|tv|tw|tysv�no|\
112     tz|t�no|ua|ug|uk|university|unj�no|uno|us|uy|uz|va|vacations|vads�no|\
113     vard�no|vc|ve|vegas|veg�no|ventures|vestv�g�no|vg|vi|viajes|villas|\
114     vision|vn|vodka|vote|voting|voto|voyage|vu|v�rgg�no|v�gs�no|v�g�no|\
115     v�no|v��no|v�r�no|wang|watch|webcam|wed|wf|wien|wiki|win|work|works|ws|\
116     wtc|xn--1qqw23a|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--45brj9c|\
117     xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|\
118     xn--6frz82g|xn--6qq986b3x1|xn--80adxhks|xn--80ao21a|xn--80asehdb|\
119     xn--80aswg|xn--90a3ac|xn--c1avg|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|\
120     xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--fiQ64b|\
121     xn--fiq228c5hs|xn--fiqs8s|xn--fiqz9s|xn--fpcrj9c3d|xn--fzc2c9e2c|\
122     xn--gecrj9c|xn--h2brj9c|xn--i1b6b1a6a2e|xn--io0a7i|xn--j1amh|\
123     xn--j6w193g|xn--kprw13d|xn--kpry57d|xn--l1acc|xn--lgbbat1ad8j|\
124     xn--mgb2ddes|xn--mgb9awbf|xn--mgba3a4f16a|xn--mgba3a4fra|\
125     xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbayh7gpa|xn--mgbbh1a71e|\
126     xn--mgbc0a9azcg|xn--mgberp4a5d4a87g|xn--mgberp4a5d4ar|\
127     xn--mgbqly7c0a67fbc|xn--mgbqly7cvafr|xn--mgbtf8fl|xn--mgbx4cd0ab|\
128     xn--ngbc5azd|xn--nnx388a|xn--node|xn--nqv7f|xn--nqv7fs00ema|\
129     xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pgbs0dh|\
130     xn--q9jyb4c|xn--rhqv96g|xn--s9brj9c|xn--ses554g|xn--unup4y|\
131     xn--vhquv|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|\
132     xn--xkc2dl3a5ee0h|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|\
133     xxx|xyz|yachts|ye|yokohama|yt|za|zip|zm|zone|zw|�k\?no|�lt�no|\
134     �no|�lg�no|�no|�no)([^0-9a-z�����������������������������������]|$)
135{
136 LOCALBUFFER=${MATCH}
137 LESKIP1=${LOCALBUFFER}
138 LOCALEMAIL=`${ECHO} ${LOCALBUFFER} | ${SED} -e 's/[^0-9A-Za-z�������������������������������������B������A�A�CCCCD����EEEEEH����II��NN�����،SS�����UUUU�ޟY�]*$//g' | ${TR} '[:upper:]' '[:lower:]'`
139}
140
141:0
142* ! LOCALEMAIL ?? ^noemail@example\.com$
143{
144 LOCALLOGIN=`${ECHO} -n ${LOCALEMAIL} | ${SED} -e 's/@.*$//'`
145}
146
147:0
148* LOCALEMAIL ?? ^.*(@|[=%]40)\/.*$
149{
150 LOCALHOST=${MATCH}
151}
152
153:0
154* ! LOCALHOST ?? ^host\.example\.com$
155{
156 INCLUDERC=${SBDIR}/functions/get-domain.rc
157}
158
159### Assign Variables
160:0
161* ! LOCALEMAIL ?? ^noemail@example\.com$
162{
163 FIRSTBODYEMAIL=${LOCALEMAIL}
164 FIRSTBODYLOGIN=${LOCALLOGIN}
165 FIRSTBODYEHOST=${LOCALHOST}
166 FIRSTBODYEDOMAIN=${LOCALDOMAIN}
167
168 ## Canonicalize and hash the First Body email address.
169
170 :0
171 * ! FIRSTBODYEMAIL ?? ^noemail@example.com$
172 {
173  LOCALLOGIN=${FIRSTBODYLOGIN}
174  LOCALHOST=${FIRSTBODYEHOST}
175  LOCALHASH='NULL'
176  INCLUDERC=${SBDIR}/functions/hash-email.rc
177  FIRSTBODYEHASH=${LOCALHASH}
178 }
179}
180
181# GET MESSAGE BODY HOSTS AND DOMAINS
182#
183#  Now, get any hosts and/or domains in the message body.
184
185# EXTRACT FIRST BODY HOST/INFO
186#
187# Extract the first body host, extract domain and lookup
188# IP for host.
189
190:0
191* FIRSTBODYHOST ?? ^host\.example\.com$
192* B ?? (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)\/([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
193        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
194        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
195        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
196        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
197        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
198        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
199        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
200        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
201        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
202        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
203        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
204        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
205        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
206        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)
207{
208 :0
209 { LOCALBUFFER=${MATCH} }
210
211 :0
212 { FIRSTBODYHOST=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^A-Za-z]*$//'` }
213}
214
215# Extract the domain from the first body host.
216:0
217* ! FIRSTBODYHOST ?? ^host\.example\.com$
218{
219 LOCALDOMAIN='example.com'
220 LOCALHOST=${FIRSTBODYHOST}
221 INCLUDERC=${SBDIR}/functions/get-domain.rc
222 FIRSTBODYDOMAIN=${LOCALDOMAIN}
223}
224
225# Look up the IP for the first body host.
226:0
227* ! SBCONFIG ?? ^Lite$
228* ! FIRSTBODYHOST ?? ^host\.example\.com$
229{
230 LOCALDOMAIN=${FIRSTBODYDOMAIN}
231 LOCALHOST=${FIRSTBODYHOST}
232 LOCALIP='000.000.000.000'
233 INCLUDERC=${SBDIR}/functions/get-ip.rc
234 FIRSTBODYHOSTIP=${LOCALIP}
235}
236
237# Reverse the IP.
238:0
239* ! SBCONFIG ?? ^Lite$
240* ! FIRSTBODYHOSTIP ?? ^000\.000\.000\.000$
241{
242 LOCALIP=${FIRSTBODYHOSTIP}
243 INCLUDERC=${SBDIR}/functions/reverseip.rc
244 FIRSTBODYHOSTREVIP=${LOCALREVIP}
245 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
246 FIRSTBODYHOSTIPREGEXP=${LOCALIPREGEXP}
247}
248
249
250# Extract the second body host and domain.
251#
252:0
253* ! FIRSTBODYHOST ?? ^host\.example\.com$
254* SECONDBODYHOST ?? ^host\.example\.com$
255* B ?? (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
256        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
257        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
258        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
259        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
260        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
261        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
262        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
263        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
264        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
265        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
266        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
267        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
268        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
269        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
270        (.*$)*.*\
271        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)\/([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
272        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
273        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
274        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
275        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
276        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
277        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
278        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
279        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
280        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
281        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
282        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
283        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
284        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
285        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)
286{
287 :0
288 { LOCALBUFFER=${MATCH} }
289
290 :0
291 { SECONDBODYHOST=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^A-Za-z]*$//'` }
292}
293
294# Extract the domain for the second body host.
295:0
296* ! SECONDBODYHOST ?? ^host\.example\.com$
297{
298 LOCALDOMAIN='example.com'
299 LOCALHOST=${SECONDBODYHOST}
300 INCLUDERC=${SBDIR}/functions/get-domain.rc
301 SECONDBODYDOMAIN=${LOCALDOMAIN}
302}
303
304# Look up the IP for the second body host.
305:0
306* ! SBCONFIG ?? ^Lite$
307* ! SECONDBODYHOST ?? ^host\.example\.com$
308{
309 LOCALDOMAIN=${SECONDBODYDOMAIN}
310 LOCALHOST=${SECONDBODYHOST}
311 LOCALIP='000.000.000.000'
312 INCLUDERC=${SBDIR}/functions/get-ip.rc
313 SECONDBODYHOSTIP=${LOCALIP}
314}
315
316# Reverse the IP.
317:0
318* ! SBCONFIG ?? ^Lite$
319* ! SECONDBODYHOSTIP ?? ^000\.000\.000\.000$
320{
321 LOCALIP=${SECONDBODYHOSTIP}
322 INCLUDERC=${SBDIR}/functions/reverseip.rc
323 SECONDBODYHOSTREVIP=${LOCALREVIP}
324 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
325 SECONDBODYHOSTIPREGEXP=${LOCALIPREGEXP}
326}
327
328# Check to see if SECONDBODYHOST is same as FIRSTBODYHOST.
329# If it is, check to see whether FIRSTBODYHOST didn't
330# resolve, but SECONDBODYHOST did.  If so, assign IP of
331# SECONDBODYHOST to FIRSTBODYHOST also.  (Thwarts DNS
332# tricks some spammers are using.)
333#
334:0
335* ! SBCONFIG ?? ^Lite$
336* $ SECONDBODYHOST ?? ${FIRSTBODYHOST}
337* FIRSTBODYHOSTIP ?? ^000\.000\.000\.000$
338* ! SECONDBODYHOSTIP ?? ^000\.000\.000\.000$
339{
340 FIRSTBODYHOSTIP=${SECONDBODYHOSTIP}
341 FIRSTBODYHOSTREVIP=${SECONDBODYHOSTREVIP}
342 FIRSTBODYHOSTIPREGEXP=${LOCALIPREGEXP}
343}
344
345
346# Extract the third body host and domain.
347#
348:0
349* ! FIRSTBODYHOST ?? ^host\.example\.com$
350* ! SECONDBODYHOST ?? ^host\.example\.com$
351* THIRDBODYHOST ?? ^host\.example\.com$
352* B ?? (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
353        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
354        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
355        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
356        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
357        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
358        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
359        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
360        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
361        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
362        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
363        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
364        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
365        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
366        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
367        (.*$)*.*\
368        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
369        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
370        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
371        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
372        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
373        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
374        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
375        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
376        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
377        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
378        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
379        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
380        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
381        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
382        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
383        (.*$)*.*\
384        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)\/([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
385        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
386        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
387        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
388        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
389        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
390        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
391        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
392        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
393        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
394        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
395        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
396        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
397        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
398        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)
399{
400 :0
401 { LOCALBUFFER=${MATCH} }
402
403 :0
404 { THIRDBODYHOST=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^A-Za-z]*$//'` }
405}
406
407# Extract the domain for the third body host.
408:0
409* ! THIRDBODYHOST ?? ^host\.example\.com$
410{
411 LOCALDOMAIN='example.com'
412 LOCALHOST=${THIRDBODYHOST}
413 INCLUDERC=${SBDIR}/functions/get-domain.rc
414 THIRDBODYDOMAIN=${LOCALDOMAIN}
415}
416
417# Look up the IP for the third body host.
418:0
419* ! SBCONFIG ?? ^Lite$
420* ! THIRDBODYHOST ?? ^host\.example\.com$
421{
422 LOCALDOMAIN=${THIRDBODYDOMAIN}
423 LOCALHOST=${THIRDBODYHOST}
424 LOCALIP='000.000.000.000'
425 INCLUDERC=${SBDIR}/functions/get-ip.rc
426 THIRDBODYHOSTIP=${LOCALIP}
427}
428
429# Reverse the IP.
430:0
431* ! SBCONFIG ?? ^Lite$
432* ! THIRDBODYHOSTIP ?? ^000\.000\.000\.000$
433{
434 LOCALIP=${THIRDBODYHOSTIP}
435 INCLUDERC=${SBDIR}/functions/reverseip.rc
436 THIRDBODYHOSTREVIP=${LOCALREVIP}
437 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
438 THIRDBODYHOSTIPREGEXP=${LOCALIPREGEXP}
439}
440
441# Check to see if THIRDBODYHOST is same as FIRSTBODYHOST
442# or SECONDBODYHOST. If it is, check to see whether
443# FIRSTBODYHOST or SECONDBODYHOST didn't resolve, but
444# THIRDBODYHOST did.  If so, assign IP of THIRDBODYHOST to
445# FIRSTBODYHOST or SECONDBODYHOST also.  (Thwarts DNS
446# tricks some spammers are using.)
447#
448:0
449* ! SBCONFIG ?? ^Lite$
450* $ THIRDBODYHOST ?? ${FIRSTBODYHOST}
451* FIRSTBODYHOSTIP ?? ^000\.000\.000\.000$
452* ! THIRDBODYHOSTIP ?? ^000\.000\.000\.000$
453{
454 FIRSTBODYHOSTIP=${THIRDBODYHOSTIP}
455 FIRSTBODYHOSTREVIP=${THIRDBODYHOSTREVIP}
456 FIRSTBODYHOSTIPREGEXP=${LOCALIPREGEXP}
457}
458
459:0
460* ! SBCONFIG ?? ^Lite$
461* $ THIRDBODYHOST ?? ${SECONDBODYHOST}
462* SECONDBODYHOSTIP ?? ^000\.000\.000\.000$
463* ! THIRDBODYHOSTIP ?? ^000\.000\.000\.000$
464{
465 SECONDBODYHOSTIP=${THIRDBODYHOSTIP}
466 SECONDBODYHOSTREVIP=${THIRDBODYHOSTREVIP}
467 SECONDBODYHOSTIPREGEXP=${LOCALIPREGEXP}
468}
469
470
471# Extract the fourth body host and domain.
472#
473:0
474* ! FIRSTBODYHOST ?? ^host\.example\.com$
475* ! SECONDBODYHOST ?? ^host\.example\.com$
476* ! THIRDBODYHOST ?? ^host\.example\.com$
477* FOURTHBODYHOST ?? ^host\.example\.com$
478* B ?? (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
479        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
480        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
481        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
482        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
483        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
484        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
485        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
486        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
487        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
488        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
489        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
490        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
491        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
492        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
493        (.*$)*.*\
494        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
495        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
496        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
497        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
498        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
499        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
500        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
501        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
502        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
503        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
504        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
505        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
506        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
507        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
508        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
509        (.*$)*.*\
510        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
511        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
512        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
513        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
514        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
515        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
516        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
517        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
518        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
519        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
520        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
521        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
522        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
523        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
524        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
525        (.*$)*.*\
526        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)\/([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
527        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
528        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
529        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
530        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
531        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
532        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
533        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
534        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
535        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
536        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
537        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
538        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
539        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
540        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)
541{
542 :0
543 { LOCALBUFFER=${MATCH} }
544
545 :0
546 { FOURTHBODYHOST=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^A-Za-z]*$//'` }
547}
548
549# Extract the domain for the fourth body host.
550:0
551* ! FOURTHBODYHOST ?? ^host\.example\.com$
552{
553 LOCALDOMAIN='example.com'
554 LOCALHOST=${FOURTHBODYHOST}
555 INCLUDERC=${SBDIR}/functions/get-domain.rc
556 FOURTHBODYDOMAIN=${LOCALDOMAIN}
557}
558
559# Look up the IP for the fourth body host.
560:0
561* ! SBCONFIG ?? ^Lite$
562* ! FOURTHBODYHOST ?? ^host\.example\.com$
563{
564 LOCALDOMAIN=${FOURTHBODYDOMAIN}
565 LOCALHOST=${FOURTHBODYHOST}
566 LOCALIP='000.000.000.000'
567 INCLUDERC=${SBDIR}/functions/get-ip.rc
568 FOURTHBODYHOSTIP=${LOCALIP}
569}
570
571# Reverse the IP.
572:0
573* ! SBCONFIG ?? ^Lite$
574* ! FOURTHBODYHOSTIP ?? ^000\.000\.000\.000$
575{
576 LOCALIP=${FOURTHBODYHOSTIP}
577 INCLUDERC=${SBDIR}/functions/reverseip.rc
578 FOURTHBODYHOSTREVIP=${LOCALREVIP}
579 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
580 FOURTHBODYHOSTIPREGEXP=${LOCALIPREGEXP}
581}
582
583
584# Extract the fifth body host and domain.
585#
586:0
587* ! FIRSTBODYHOST ?? ^host\.example\.com$
588* ! SECONDBODYHOST ?? ^host\.example\.com$
589* ! THIRDBODYHOST ?? ^host\.example\.com$
590* ! FOURTHBODYHOST ?? ^host\.example\.com$
591* FIFTHBODYHOST ?? ^host\.example\.com$
592* B ?? (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
593        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
594        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
595        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
596        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
597        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
598        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
599        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
600        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
601        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
602        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
603        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
604        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
605        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
606        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
607        (.*$)*.*\
608        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
609        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
610        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
611        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
612        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
613        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
614        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
615        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
616        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
617        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
618        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
619        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
620        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
621        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
622        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
623        (.*$)*.*\
624        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
625        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
626        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
627        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
628        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
629        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
630        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
631        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
632        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
633        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
634        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
635        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
636        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
637        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
638        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
639        (.*$)*.*\
640        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
641        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
642        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
643        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
644        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
645        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
646        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
647        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
648        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
649        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
650        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
651        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
652        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
653        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
654        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
655        (.*$)*.*\
656        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)\/([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
657        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
658        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
659        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
660        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
661        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
662        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
663        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
664        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
665        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
666        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
667        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
668        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
669        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
670        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)
671{
672 :0
673 { LOCALBUFFER=${MATCH} }
674
675 :0
676 { FIFTHBODYHOST=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^A-Za-z]*$//'` }
677}
678
679# Extract the domain for the fifth body host.
680:0
681* ! FIFTHBODYHOST ?? ^host\.example\.com$
682{
683 LOCALDOMAIN='example.com'
684 LOCALHOST=${FIFTHBODYHOST}
685 INCLUDERC=${SBDIR}/functions/get-domain.rc
686 FIFTHBODYDOMAIN=${LOCALDOMAIN}
687}
688
689# Look up the IP for the fifth body host.
690:0
691* ! SBCONFIG ?? ^Lite$
692* ! FIFTHBODYHOST ?? ^host\.example\.com$
693{
694 LOCALDOMAIN=${FIFTHBODYDOMAIN}
695 LOCALHOST=${FIFTHBODYHOST}
696 LOCALIP='000.000.000.000'
697 INCLUDERC=${SBDIR}/functions/get-ip.rc
698 FIFTHBODYHOSTIP=${LOCALIP}
699}
700
701# Reverse the IP.
702:0
703* ! SBCONFIG ?? ^Lite$
704* ! FIFTHBODYHOSTIP ?? ^000\.000\.000\.000$
705{
706 LOCALIP=${FIFTHBODYHOSTIP}
707 INCLUDERC=${SBDIR}/functions/reverseip.rc
708 FIFTHBODYHOSTREVIP=${LOCALREVIP}
709 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
710 FIFTHBODYHOSTIPREGEXP=${LOCALIPREGEXP}
711}
712
713
714# Extract the sixth body host and domain.
715#
716:0
717* ! FIRSTBODYHOST ?? ^host\.example\.com$
718* ! SECONDBODYHOST ?? ^host\.example\.com$
719* ! THIRDBODYHOST ?? ^host\.example\.com$
720* ! FOURTHBODYHOST ?? ^host\.example\.com$
721* ! FIFTHBODYHOST ?? ^host\.example\.com$
722* SIXTHBODYHOST ?? ^host\.example\.com$
723* B ?? (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
724        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
725        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
726        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
727        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
728        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
729        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
730        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
731        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
732        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
733        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
734        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
735        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
736        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
737        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
738        (.*$)*.*\
739        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
740        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
741        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
742        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
743        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
744        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
745        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
746        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
747        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
748        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
749        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
750        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
751        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
752        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
753        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
754        (.*$)*.*\
755        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
756        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
757        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
758        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
759        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
760        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
761        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
762        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
763        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
764        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
765        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
766        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
767        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
768        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
769        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
770        (.*$)*.*\
771        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
772        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
773        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
774        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
775        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
776        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
777        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
778        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
779        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
780        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
781        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
782        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
783        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
784        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
785        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
786        (.*$)*.*\
787        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)([0-9a-z][-_0-9a-z]*(�|\.|=2[EF]|%2E))+(ac|\
788        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
789        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
790        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
791        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
792        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
793        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
794        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
795        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
796        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
797        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
798        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
799        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
800        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
801        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)\
802        (.*$)*.*\
803        (^|[^-_0-9a-z.=]|=[0-9a-f][0-9a-f]|/\.|(link|goto)=|[<>]\.|=20\.)\/([0-9a-z][-_0-9a-z]*(�|\.|=2]EF]|%2E))+(ac|\
804        ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|\
805        ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|\
806        ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|\
807        de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|exp|fi|fj|fk|fm|fo|fr|\
808        ga|gd|ge|geek|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|\
809        hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|\
810        ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|llc|lnx|lr|ls|lt|ltd|\
811        lu|lv|ly|ma|mc|md|med|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|\
812        museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nic|nl|no|noc|\
813        np|nr|nu|null|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|porn|pr|pro|ps|\
814        pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|\
815        so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|\
816        ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xxx|ye|yt|yu|za|\
817        zm|zw)([^-a-z0-9.@=&]|=2[0F]|=$|$|\. |\./|\.$)
818{
819 :0
820 { LOCALBUFFER=${MATCH} }
821
822 :0
823 { SIXTHBODYHOST=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^A-Za-z]*$//'` }
824}
825
826# Extract the domain for the sixth body host.
827:0
828* ! SIXTHBODYHOST ?? ^host\.example\.com$
829{
830 LOCALDOMAIN='example.com'
831 LOCALHOST=${SIXTHBODYHOST}
832 INCLUDERC=${SBDIR}/functions/get-domain.rc
833 SIXTHBODYDOMAIN=${LOCALDOMAIN}
834}
835
836# Look up the IP for the sixth body host.
837:0
838* ! SBCONFIG ?? ^Lite$
839* ! SIXTHBODYHOST ?? ^host\.example\.com$
840{
841 LOCALDOMAIN=${SIXTHBODYDOMAIN}
842 LOCALHOST=${SIXTHBODYHOST}
843 LOCALIP='000.000.000.000'
844 INCLUDERC=${SBDIR}/functions/get-ip.rc
845 SIXTHBODYHOSTIP=${LOCALIP}
846}
847
848# Reverse the IP.
849:0
850* ! SBCONFIG ?? ^Lite$
851* ! SIXTHBODYHOSTIP ?? ^000\.000\.000\.000$
852{
853 LOCALIP=${SIXTHBODYHOSTIP}
854 INCLUDERC=${SBDIR}/functions/reverseip.rc
855 SIXTHBODYHOSTREVIP=${LOCALREVIP}
856 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
857 SIXTHBODYHOSTIPREGEXP=${LOCALIPREGEXP}
858}
859
860
861
862# GET MESSAGE BODY IPS
863#
864#  Now, get any IPs in the message body.
865
866# Get First message body IP.
867:0
868* FIRSTBODYIP ?? ^000\.000\.000\.000$
869* B ?? (^|[^0-9.])\/[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
870                    [0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?([^0-9.@=&]|$)
871{
872 :0
873 { LOCALBUFFER=${MATCH} }
874
875 :0
876 { FIRSTBODYIP=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^0-9]*$//'` }
877}
878
879# Reverse first message body IP.
880:0
881* ! FIRSTBODYIP ?? ^000\.000\.000\.000$
882{
883 LOCALIP=${FIRSTBODYIP}
884 INCLUDERC=${SBDIR}/functions/reverseip.rc
885 FIRSTBODYREVIP=${LOCALREVIP}
886 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
887 FIRSTBODYIPREGEXP=${LOCALIPREGEXP}
888}
889
890# Get second message body IP.
891:0
892* ! FIRSTBODYIP ?? ^000\.000\.000\.000$
893* SECONDBODYIP ?? ^000\.000\.000\.000$
894* B ?? (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
895             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
896  (^|[^0-9.])\/[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
897               [0-9][0-9]?[0-9]?([^0-9.@=&]|$)
898{
899 :0
900 { LOCALBUFFER=${MATCH} }
901
902 :0
903 { SECONDBODYIP=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^0-9]*$//'` }
904}
905
906# Reverse second message body IP.
907:0
908* ! SECONDBODYIP ?? ^000\.000\.000\.000$
909{
910 LOCALIP=${SECONDBODYIP}
911 INCLUDERC=${SBDIR}/functions/reverseip.rc
912 SECONDBODYREVIP=${LOCALREVIP}
913 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
914 SECONDBODYIPREGEXP=${LOCALIPREGEXP}
915}
916
917# Get third message body IP.
918:0
919* ! FIRSTBODYIP ?? ^000\.000\.000\.000$
920* ! SECONDBODYIP ?? ^000\.000\.000\.000$
921* THIRDBODYIP ?? ^000\.000\.000\.000$
922* B ?? (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
923             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
924  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
925             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
926  (^|[^0-9.])\/[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
927               [0-9][0-9]?[0-9]?([^0-9.@=&]|$)
928{
929 :0
930 { LOCALBUFFER=${MATCH} }
931
932 :0
933 { THIRDBODYIP=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^0-9]*$//'` }
934}
935
936# Reverse third message body IP.
937:0
938* ! THIRDBODYIP ?? ^000\.000\.000\.000$
939{
940 LOCALIP=${THIRDBODYIP}
941 INCLUDERC=${SBDIR}/functions/reverseip.rc
942 THIRDBODYREVIP=${LOCALREVIP}
943 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
944 THIRDBODYIPREGEXP=${LOCALIPREGEXP}
945}
946
947# Get fourth message body IP.
948:0
949* ! FIRSTBODYIP ?? ^000\.000\.000\.000$
950* ! SECONDBODYIP ?? ^000\.000\.000\.000$
951* ! THIRDBODYIP ?? ^000\.000\.000\.000$
952* FOURTHBODYIP ?? ^000\.000\.000\.000$
953* B ?? (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
954             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
955  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
956             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
957  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
958             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
959  (^|[^0-9.])\/[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
960               [0-9][0-9]?[0-9]?([^0-9.@=&]|$)
961{
962 :0
963 { LOCALBUFFER=${MATCH} }
964
965 :0
966 { FOURTHBODYIP=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^0-9]*$//'` }
967}
968
969# Reverse fourth message body IP.
970:0
971* ! FOURTHBODYIP ?? ^000\.000\.000\.000$
972{
973 LOCALIP=${FOURTHBODYIP}
974 INCLUDERC=${SBDIR}/functions/reverseip.rc
975 FOURTHBODYREVIP=${LOCALREVIP}
976 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
977 FOURTHBODYIPREGEXP=${LOCALIPREGEXP}
978}
979
980# Get fifth message body IP.
981:0
982* ! FIRSTBODYIP ?? ^000\.000\.000\.000$
983* ! SECONDBODYIP ?? ^000\.000\.000\.000$
984* ! THIRDBODYIP ?? ^000\.000\.000\.000$
985* ! FOURTHBODYIP ?? ^000\.000\.000\.000$
986* FIFTHBODYIP ?? ^000\.000\.000\.000$
987* B ?? (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
988             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
989  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
990             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
991  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
992             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
993  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
994             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
995  (^|[^0-9.])\/[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
996               [0-9][0-9]?[0-9]?([^0-9.@=&]|$)
997{
998 :0
999 { LOCALBUFFER=${MATCH} }
1000
1001 :0
1002 { FIFTHBODYIP=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^0-9]*$//'` }
1003}
1004
1005# Reverse fifth message body IP.
1006:0
1007* ! FIFTHBODYIP ?? ^000\.000\.000\.000$
1008{
1009 LOCALIP=${FIFTHBODYIP}
1010 INCLUDERC=${SBDIR}/functions/reverseip.rc
1011 FIFTHBODYREVIP=${LOCALREVIP}
1012 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
1013 FIFTHBODYIPREGEXP=${LOCALIPREGEXP}
1014}
1015
1016# Get sixth message body IP.
1017:0
1018* ! FIRSTBODYIP ?? ^000\.000\.000\.000$
1019* ! SECONDBODYIP ?? ^000\.000\.000\.000$
1020* ! THIRDBODYIP ?? ^000\.000\.000\.000$
1021* ! FOURTHBODYIP ?? ^000\.000\.000\.000$
1022* ! FIFTHBODYIP ?? ^000\.000\.000\.000$
1023* SIXTHBODYIP ?? ^000\.000\.000\.000$
1024* B ?? (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
1025             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
1026  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
1027             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
1028  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
1029             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
1030  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
1031             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
1032  (^|[^0-9.])[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
1033             [0-9][0-9]?[0-9]?([^0-9.@=&]|$)(.*$)*.*\
1034  (^|[^0-9.])\/[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)[0-9][0-9]?[0-9]?(�|\.|=2E|%2E)\
1035               [0-9][0-9]?[0-9]?([^0-9.@=&]|$)
1036{
1037 :0
1038 { LOCALBUFFER=${MATCH} }
1039
1040 :0
1041 { SIXTHBODYIP=`${ECHO} "${LOCALBUFFER}" | ${SED} -e 's/[=%]2[Ee]/\./g' -e 's/[^0-9]*$//'` }
1042}
1043
1044# Reverse sixth message body IP.
1045:0
1046* ! SIXTHBODYIP ?? ^000\.000\.000\.000$
1047{
1048 LOCALIP=${SIXTHBODYIP}
1049 INCLUDERC=${SBDIR}/functions/reverseip.rc
1050 SIXTHBODYREVIP=${LOCALREVIP}
1051 INCLUDERC=${SBDIR}/functions/cidrmatch.rc
1052 SIXTHBODYIPREGEXP=${LOCALIPREGEXP}
1053}
1054
1055