nip.io
|
@@ -1,35 +1,41 @@ |
1 |
1 |
|
#!/usr/bin/python |
2 |
2 |
|
|
3 |
|
- |
import sys |
4 |
|
- |
import re |
5 |
|
- |
import os |
6 |
3 |
|
import ConfigParser |
|
4 |
+ |
import os |
|
5 |
+ |
import re |
|
6 |
+ |
import sys |
|
7 |
+ |
|
|
8 |
+ |
DEBUG = 0 |
7 |
9 |
|
|
8 |
|
- |
DEBUG=0 |
9 |
10 |
|
|
10 |
11 |
|
def log(msg): |
11 |
12 |
|
sys.stderr.write('backend (%s): %s\n' % (os.getpid(), msg)) |
12 |
13 |
|
|
13 |
14 |
|
|
14 |
15 |
|
def write(*l): |
15 |
|
- |
args=len(l) |
|
16 |
+ |
args = len(l) |
16 |
17 |
|
c = 0 |
17 |
18 |
|
for a in l: |
18 |
19 |
|
c += 1 |
19 |
|
- |
if DEBUG: log('writing: %s' % a) |
|
20 |
+ |
if DEBUG: |
|
21 |
+ |
log('writing: %s' % a) |
20 |
22 |
|
sys.stdout.write(a) |
21 |
23 |
|
if c < args: |
22 |
|
- |
if DEBUG: log('writetab') |
|
24 |
+ |
if DEBUG: |
|
25 |
+ |
log('writetab') |
23 |
26 |
|
sys.stdout.write('\t') |
24 |
|
- |
if DEBUG: log('writenewline') |
|
27 |
+ |
if DEBUG: |
|
28 |
+ |
log('writenewline') |
25 |
29 |
|
sys.stdout.write('\n') |
26 |
30 |
|
sys.stdout.flush() |
27 |
31 |
|
|
28 |
32 |
|
|
29 |
33 |
|
def get_next(): |
30 |
|
- |
if DEBUG: log('reading now') |
|
34 |
+ |
if DEBUG: |
|
35 |
+ |
log('reading now') |
31 |
36 |
|
l = sys.stdin.readline() |
32 |
|
- |
if DEBUG: log('read line: %s' % l) |
|
37 |
+ |
if DEBUG: |
|
38 |
+ |
log('read line: %s' % l) |
33 |
39 |
|
return l.strip().split('\t') |
34 |
40 |
|
|
35 |
41 |
|
|
|
@@ -47,18 +53,18 @@ |
47 |
53 |
|
if not os.path.exists(fname): |
48 |
54 |
|
log('%s does not exist' % fname) |
49 |
55 |
|
sys.exit(1) |
50 |
|
- |
|
|
56 |
+ |
|
51 |
57 |
|
fp = open(fname) |
52 |
58 |
|
config = ConfigParser.ConfigParser() |
53 |
59 |
|
config.readfp(fp) |
54 |
60 |
|
fp.close() |
55 |
61 |
|
|
56 |
62 |
|
self.id = config.get('soa', 'id') |
57 |
|
- |
self.soa = '%s %s %s' % (config.get('soa', 'ns'), config.get('soa','hostmaster'), self.id) |
|
63 |
+ |
self.soa = '%s %s %s' % (config.get('soa', 'ns'), config.get('soa', 'hostmaster'), self.id) |
58 |
64 |
|
self.domain = config.get('main', 'domain') |
59 |
65 |
|
self.ip_address = config.get('main', 'ipaddress') |
60 |
66 |
|
self.ttl = config.get('main', 'ttl') |
61 |
|
- |
|
|
67 |
+ |
|
62 |
68 |
|
for entry in config.items('nameservers'): |
63 |
69 |
|
self.name_servers[entry[0]] = entry[1] |
64 |
70 |
|
|
|
@@ -80,7 +86,8 @@ |
80 |
86 |
|
|
81 |
87 |
|
while True: |
82 |
88 |
|
cmd = get_next() |
83 |
|
- |
if DEBUG: log(cmd) |
|
89 |
+ |
if DEBUG: |
|
90 |
+ |
log(cmd) |
84 |
91 |
|
|
85 |
92 |
|
if len(cmd) < 6: |
86 |
93 |
|
log('did not understand: %s' % cmd) |
|
@@ -108,24 +115,28 @@ |
108 |
115 |
|
write('END') |
109 |
116 |
|
|
110 |
117 |
|
def handle_subdomains(self, qname): |
111 |
|
- |
subdomain = qname[0:qname.find(self.domain)-1] |
|
118 |
+ |
subdomain = qname[0:qname.find(self.domain) - 1] |
112 |
119 |
|
|
113 |
120 |
|
subparts = subdomain.split('.') |
114 |
121 |
|
if len(subparts) < 4: |
115 |
|
- |
if DEBUG: log('subparts less than 4') |
|
122 |
+ |
if DEBUG: |
|
123 |
+ |
log('subparts less than 4') |
116 |
124 |
|
self.handle_self(qname) |
117 |
125 |
|
return |
118 |
126 |
|
|
119 |
127 |
|
ipaddress = subparts[-4:] |
120 |
|
- |
if DEBUG: log('ip: %s' % ipaddress) |
|
128 |
+ |
if DEBUG: |
|
129 |
+ |
log('ip: %s' % ipaddress) |
121 |
130 |
|
for part in ipaddress: |
122 |
131 |
|
if re.match('^\d{1,3}$', part) is None: |
123 |
|
- |
if DEBUG: log('%s is not a number' % part) |
|
132 |
+ |
if DEBUG: |
|
133 |
+ |
log('%s is not a number' % part) |
124 |
134 |
|
self.handle_self(qname) |
125 |
135 |
|
return |
126 |
136 |
|
parti = int(part) |
127 |
137 |
|
if parti < 0 or parti > 255: |
128 |
|
- |
if DEBUG: log('%d is too big/small' % parti) |
|
138 |
+ |
if DEBUG: |
|
139 |
+ |
log('%d is too big/small' % parti) |
129 |
140 |
|
self.handle_self(qname) |
130 |
141 |
|
return |
131 |
142 |
|
|
|
@@ -152,8 +163,6 @@ |
152 |
163 |
|
|
153 |
164 |
|
|
154 |
165 |
|
if __name__ == '__main__': |
155 |
|
- |
|
156 |
166 |
|
backend = DynamicBackend() |
157 |
167 |
|
backend.configure() |
158 |
168 |
|
backend.run() |
159 |
|
- |
|