1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.james.jspf.core;
21
22
23
24
25 public interface SPFTermsRegexps {
26
27
28 final String ALPHA_PATTERN = "[a-zA-Z]";
29
30 final String MACRO_LETTER_PATTERN_EXP = "[rctlsodipvhRCTLSODIPVH]";
31
32 final String MACRO_LETTER_PATTERN = "[lsodipvhLSODIPVH]";
33
34 final String TRANSFORMERS_REGEX = "\\d*[r]?";
35
36 final String DELEMITER_REGEX = "[\\.\\-\\+,/_\\=]";
37
38 final String MACRO_LETTERS_REGEX = MACRO_LETTER_PATTERN_EXP + TRANSFORMERS_REGEX + DELEMITER_REGEX + "*";
39
40 final String MACRO_EXPAND_REGEX = "\\%(?:\\{"
41 + MACRO_LETTERS_REGEX + "\\}|\\%|\\_|\\-)";
42
43 final String MACRO_LITERAL_REGEX = "[\\x21-\\x24\\x26-\\x7e]";
44
45
46
47
48 final String MACRO_STRING_REGEX_TOKEN = MACRO_EXPAND_REGEX
49 + "|" + MACRO_LITERAL_REGEX + "{1}";
50
51
52
53
54
55 final String MACRO_STRING_REGEX = "(?:" + MACRO_STRING_REGEX_TOKEN +")*";
56
57 final String ALPHA_DIGIT_PATTERN = "[a-zA-Z0-9]";
58
59
60
61
62
63
64 final String TOP_LABEL_REGEX = "(?:"
65 + ALPHA_DIGIT_PATTERN + "*" + SPFTermsRegexps.ALPHA_PATTERN
66 + "{1}" + ALPHA_DIGIT_PATTERN + "*|(?:"
67 + ALPHA_DIGIT_PATTERN + "+" + "\\-" + "(?:"
68 + ALPHA_DIGIT_PATTERN + "|\\-)*"
69 + ALPHA_DIGIT_PATTERN + "))";
70
71
72
73
74 final String DOMAIN_END_REGEX = "(?:\\." + TOP_LABEL_REGEX
75 + "\\.?" + "|" + SPFTermsRegexps.MACRO_EXPAND_REGEX + ")";
76
77
78
79
80 final String DOMAIN_SPEC_REGEX = "("
81 + SPFTermsRegexps.MACRO_STRING_REGEX + DOMAIN_END_REGEX + ")";
82
83
84
85
86 final String DOMAIN_SPEC_REGEX_R = "("
87 + SPFTermsRegexps.MACRO_STRING_REGEX + ")(" + DOMAIN_END_REGEX + ")";
88
89
90 }