[Gd-chatter] r11075 - trunk/libraries/network/koala/sources/examples/buddha
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Mon Dec 18 05:04:16 CET 2006
Author: hannes
Date: Mon Dec 18 05:04:12 2006
New Revision: 11075
Modified:
trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan
trunk/libraries/network/koala/sources/examples/buddha/cidr.dylan
trunk/libraries/network/koala/sources/examples/buddha/config.dylan
trunk/libraries/network/koala/sources/examples/buddha/ipv4.dylan
trunk/libraries/network/koala/sources/examples/buddha/ipv6.dylan
trunk/libraries/network/koala/sources/examples/buddha/library.dylan
trunk/libraries/network/koala/sources/examples/buddha/network.dylan
trunk/libraries/network/koala/sources/examples/buddha/zone.dylan
Log:
Bug: 7257
more fixes
Modified: trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan Mon Dec 18 05:04:12 2006
@@ -322,17 +322,6 @@
do(add-form(real-type,
#f,
parent-object,
- xml: if (real-type = <network>)
- with-xml()
- div { text("generate reverse zone"),
- input(type => "checkbox",
- name => "reverse-dns?",
- value => "reverse-dns?")
- }
- end
- else
- #f
- end,
fill-from-request: errors))
}
end);
@@ -1181,7 +1170,27 @@
format(out, "%=", page);
end;
+/*define method save (change :: <change>) => ()
+ next-method();
+ block ()
+ broadcast-message(*xmpp-bot*, as(<string>, with-xml() html { do(print-xml(change)) } end));
+ exception (e :: <condition>)
+ xmpp-worker();
+ end;
+end;
+
+define variable *xmpp-bot* = #f;
+
+define function xmpp-worker ()
+ block()
+ *xmpp-bot* := make(<xmpp-bot>, jid: "buddha at jabber.berlin.ccc.de", password: "fnord");
+ exception (e :: <condition>)
+ *xmpp-bot* := #f
+ end;
+end; */
define function main () => ()
+ //xmpp-worker();
+ //sleep(3);
register-url("/buddha.css", maybe-serve-static-file);
block()
start-server();
Modified: trunk/libraries/network/koala/sources/examples/buddha/cidr.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/cidr.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/cidr.dylan Mon Dec 18 05:04:12 2006
@@ -117,11 +117,15 @@
define method cidr-to-reverse-zone (cidr :: <cidr>)
=> (zone-name :: <string>)
let res = "";
- for (i from 2 to 0 by -1)
- res := concatenate(res,
- integer-to-string(cidr.cidr-network-address[i]),
- ".")
+ let nums = truncate/(cidr.cidr-netmask, 8);
+ for (i from nums - 1 to 0 by -1)
+ res := concatenate(res, ip-address-to-string(cidr.cidr-network-address, i))
end;
- concatenate(res, "in-addr.arpa.");
+ concatenate(res, if (instance?(cidr.cidr-network-address, <ipv4-address>))
+ "in-addr.arpa."
+ elseif (instance?(cidr.cidr-network-address, <ipv6-address>))
+ "ip6.arpa"
+ end);
end;
+
Modified: trunk/libraries/network/koala/sources/examples/buddha/config.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/config.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/config.dylan Mon Dec 18 05:04:12 2006
@@ -151,10 +151,6 @@
network.cidr.cidr-network-address := base-network-address(network.cidr);
end;
if (every?(method(x) x = network end, overlaps(network)))
- if (get-query-value("reverse-dns?"))
- //add reverse delegated zones...
- add-reverse-zones(network);
- end;
#t;
else
signal(make(<web-error>,
@@ -249,10 +245,7 @@
end;
define method print-tinydns-zone-file
- (config :: <collection>, stream :: <stream>, #key reverse-table)
+ (config :: <collection>, stream :: <stream>)
=> ()
- let reverse-table = make(<string-table>);
- for (zone in config)
- print-tinydns-zone-file(zone, stream, reverse-table: reverse-table)
- end;
+ do(rcurry(print-tinydns-zone-file, stream), config)
end;
Modified: trunk/libraries/network/koala/sources/examples/buddha/ipv4.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/ipv4.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/ipv4.dylan Mon Dec 18 05:04:12 2006
@@ -184,3 +184,8 @@
end block;
mask;
end;
+
+define method ip-address-to-string (ip :: <ipv4-address>, index :: <integer>) => (res :: <string>)
+ concatenate(integer-to-string(ip[index]), ".");
+end;
+
Modified: trunk/libraries/network/koala/sources/examples/buddha/ipv6.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/ipv6.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/ipv6.dylan Mon Dec 18 05:04:12 2006
@@ -93,4 +93,9 @@
define constant $bottom-v6-address = as(<ipv6-address>, "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
-
+define method ip-address-to-string (ip :: <ipv6-address>, index :: <integer>) => (res :: <string>)
+ let s1 = integer-to-string(ip[index], base: 16, size: 2);
+ concatenate(copy-sequence(s1, start: 1), ".",
+ copy-sequence(s1, end: 1), ".");
+end;
+
Modified: trunk/libraries/network/koala/sources/examples/buddha/library.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/library.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/library.dylan Mon Dec 18 05:04:12 2006
@@ -14,6 +14,7 @@
use xml-parser;
use dylan;
use web-framework;
+ use xmpp-bot;
export buddha;
end;
@@ -58,4 +59,5 @@
use users;
use change;
use utils;
+ use xmpp-bot;
end;
Modified: trunk/libraries/network/koala/sources/examples/buddha/network.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/network.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/network.dylan Mon Dec 18 05:04:12 2006
@@ -81,6 +81,14 @@
format(stream, "Network: CIDR: %s\n", as(<string>, network));
end;
+define function get-reverse-cidrs (network :: <network>)
+ let mask = 8 * (ceiling/(network.cidr.cidr-netmask, 8));
+ if (mask ~= network.cidr.cidr-netmask)
+ map(cidr-to-reverse-zone, split-cidr(network.cidr, mask));
+ else
+ list(cidr-to-reverse-zone(network.cidr))
+ end;
+end;
define method print-isc-dhcpd-file (print-network :: <ipv4-network>,
stream :: <stream>)
=> ();
Modified: trunk/libraries/network/koala/sources/examples/buddha/zone.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/zone.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/zone.dylan Mon Dec 18 05:04:12 2006
@@ -135,8 +135,7 @@
end;
define method print-tinydns-zone-file (print-zone :: <zone>,
- stream :: <stream>,
- #key reverse-table)
+ stream :: <stream>)
//Zfqdn:mname:rname:ser:ref:ret:exp:min:ttl:timestamp:lo
format(stream, "Z%s:%s.:%s.\n", //:%d:%d:%d:%d:%d:%d\n",
print-zone.zone-name, print-zone.nameservers[0].ns-name,
@@ -144,90 +143,59 @@
// print-zone.refresh, print-zone.retry,
// print-zone.expire, print-zone.minimum,
// print-zone.time-to-live);
+ //reverse zones for networks
+ do(method(x)
+ format(stream, "Z%s:%s.:%s.\n",
+ x, print-zone.nameservers[0].ns-name, print-zone.hostmaster);
+ end, apply(concatenate, map(get-reverse-cidrs, storage(<network>))));
//nameserver
do(method(x)
format(stream, "&%s::%s.\n", print-zone.zone-name, x.ns-name)
end, print-zone.nameservers);
- if (print-zone.reverse?)
- //PTR
- if (reverse-table)
- let net = parse-cidr(print-zone.zone-name);
- let ip = net.cidr.cidr-network-address;
- while (ip < broadcast-address(net.cidr))
- let reverse-name = element(reverse-table,
- as(<string>, ip),
- default: concatenate("hacker-", get-ptr(ip)));
- format(stream, "^%d.%s:%s.%s:%d\n",
- ip[3],
- print-zone.zone-name,
- reverse-name,
- "congress.ccc.de",
- 300);
- ip := ip + 1;
- end;
- end;
- else
- //MX
- do(method(x)
- format(stream, "@%s::%s.%s:%d\n",
- print-zone.zone-name, mx-name(x), print-zone.zone-name, priority(x));
- end, print-zone.mail-exchanges);
- //Hosts
- do(method(x)
- if (reverse-table) reverse-table[as(<string>, x.ipv4-address)] := x.host-name end;
- format(stream, "=%s.%s:%s:%d\n",
- x.host-name,
- print-zone.zone-name,
- as(<string>, x.ipv4-address),
- x.time-to-live);
- unless (x.ipv6-address = $bottom-v6-address)
- format(stream, "6%s.%s:%s:%d\n",
- x.host-name,
- print-zone.zone-name,
- as-dns-string(x.ipv6-address),
- x.time-to-live);
- end;
- end, choose(method(x)
- x.zone = print-zone
- end, storage(<host>)));
- //A
- do(method(x)
- unless (x.ipv4-address = $bottom-v4-address)
- format(stream, "+%s.%s:%s:%d\n",
- x.host-name,
- print-zone.zone-name,
- as(<string>, x.ipv4-address),
- x.time-to-live);
- end;
- unless (x.ipv6-address = $bottom-v6-address)
- format(stream, "3%s.%s:%s:%d\n",
- x.host-name,
- print-zone.zone-name,
- as-dns-string(x.ipv6-address),
- x.time-to-live);
- end;
- end, print-zone.host-records);
- //CNAME
- do(method(x)
- format(stream, "C%s.%s:%s.%s\n",
- source(x), print-zone.zone-name, target(x), print-zone.zone-name);
- end, print-zone.cnames);
- //a records for dynamic PTR records
- let rev-net = storage(<network>)[0].cidr;
- let ip = rev-net.cidr-network-address;
- if (reverse-table)
- while (ip < broadcast-address(rev-net))
- unless (element(reverse-table, as(<string>, ip), default: #f))
- format(stream, "+%s.%s:%s:%d\n",
- concatenate("hacker-", get-ptr(ip)),
- print-zone.zone-name,
- ip,
- 300);
- end;
- ip := ip + 1;
- end;
- end;
- end;
+ //MX
+ do(method(x)
+ format(stream, "@%s::%s.%s:%d\n",
+ print-zone.zone-name, mx-name(x), print-zone.zone-name, priority(x));
+ end, print-zone.mail-exchanges);
+ //Hosts
+ do(method(x)
+ format(stream, "=%s.%s:%s:%d\n",
+ x.host-name,
+ print-zone.zone-name,
+ as(<string>, x.ipv4-address),
+ x.time-to-live);
+ unless (x.ipv6-address = $bottom-v6-address)
+ format(stream, "6%s.%s:%s:%d\n",
+ x.host-name,
+ print-zone.zone-name,
+ as-dns-string(x.ipv6-address),
+ x.time-to-live);
+ end;
+ end, choose(method(x)
+ x.zone = print-zone
+ end, storage(<host>)));
+ //A
+ do(method(x)
+ unless (x.ipv4-address = $bottom-v4-address)
+ format(stream, "+%s.%s:%s:%d\n",
+ x.host-name,
+ print-zone.zone-name,
+ as(<string>, x.ipv4-address),
+ x.time-to-live);
+ end;
+ unless (x.ipv6-address = $bottom-v6-address)
+ format(stream, "3%s.%s:%s:%d\n",
+ x.host-name,
+ print-zone.zone-name,
+ as-dns-string(x.ipv6-address),
+ x.time-to-live);
+ end;
+ end, print-zone.host-records);
+ //CNAME
+ do(method(x)
+ format(stream, "C%s.%s:%s.%s\n",
+ source(x), print-zone.zone-name, target(x), print-zone.zone-name);
+ end, print-zone.cnames);
end;
define method parse-cidr (zone-name :: <string>) => (network :: <network>)
More information about the chatter
mailing list