[Gd-chatter] r11096 - in trunk/libraries/network: koala/sources/examples/buddha xmpp-bot
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Fri Dec 22 02:03:16 CET 2006
Author: hannes
Date: Fri Dec 22 02:03:14 2006
New Revision: 11096
Modified:
trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan
trunk/libraries/network/koala/sources/examples/buddha/zone.dylan
trunk/libraries/network/xmpp-bot/xmpp-bot.dylan
Log:
Bug:7257
some more features to buddha:
use zone infos in SOA
xmpp-echo-bot
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 Fri Dec 22 02:03:14 2006
@@ -1159,22 +1159,26 @@
format-out("Sending %s\n", message);
broadcast-message(*xmpp-bot*, message);
exception (e :: <condition>)
- xmpp-worker();
+ format-out("Message could not be delivered %=\n", e);
end;
end;
define variable *xmpp-bot* = #f;
define function xmpp-worker ()
- block()
- *xmpp-bot* := make(<xmpp-bot>, jid: "buddha at jabber.berlin.ccc.de/serva", password: "fnord");
- sleep(3); //this is for safety reasons, xml-parser is not thread-safe!
- exception (e :: <condition>)
- *xmpp-bot* := #f
+ while (#t)
+ block()
+ unless (*xmpp-bot*)
+ *xmpp-bot* := make(<xmpp-bot>, jid: "buddha at jabber.berlin.ccc.de/serva", password: "fnord");
+ end;
+ sleep(23345);
+ exception (e :: <condition>)
+ *xmpp-bot* := #f
+ end;
end;
end;
define function main () => ()
- xmpp-worker();
+ make(<thread>, function: xmpp-worker);
register-url("/buddha.css", maybe-serve-static-file);
block()
start-server();
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 Fri Dec 22 02:03:14 2006
@@ -88,16 +88,17 @@
data reverse? :: <boolean> = #f;
has-many cname :: <cname>;
data hostmaster :: <string> = "hostmaster.congress.ccc.de";
- data serial :: <integer> = 0;
- data refresh :: <integer> = 180;
- data retry :: <integer> = 300;
- data expire :: <integer> = 600;
+ slot serial :: <integer> = 0;
+ data refresh :: <integer> = 16384;
+ data retry :: <integer> = 2048;
+ data expire :: <integer> = 1048576;
data time-to-live :: <integer> = 1800;
- data minimum :: <integer> = 300;
+ data minimum :: <integer> = 2560;
has-many nameserver :: <nameserver>;
has-many mail-exchange :: <mail-exchange>;
has-many host-record :: <host-record>;
//has-many text :: <string>;
+ data zone-serial :: <string>;
end;
define method initialize (zone :: <zone>,
@@ -136,13 +137,17 @@
define method print-tinydns-zone-file (print-zone :: <zone>,
stream :: <stream>)
+ let (year, month, days, hours, minutes, seconds) = decode-date(current-date());
+ let s2 = rcurry(integer-to-string, size: 2);
+ let ser = concatenate(integer-to-string(year, size: 4), s2(month), s2(days), s2(hours), s2(minutes));
+ print-zone.zone-serial := ser;
//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",
+ format(stream, "Z%s:%s.:%s.:%s:%d:%d:%d:%d:%d\n",
print-zone.zone-name, print-zone.nameservers[0].ns-name,
- print-zone.hostmaster); //, print-zone.serial,
-// print-zone.refresh, print-zone.retry,
-// print-zone.expire, print-zone.minimum,
-// print-zone.time-to-live);
+ print-zone.hostmaster, print-zone.zone-serial,
+ print-zone.refresh, print-zone.retry,
+ print-zone.expire, print-zone.minimum,
+ print-zone.time-to-live);
//nameserver
do(method(x)
format(stream, "&%s::%s.\n", print-zone.zone-name, x.ns-name)
Modified: trunk/libraries/network/xmpp-bot/xmpp-bot.dylan
==============================================================================
--- trunk/libraries/network/xmpp-bot/xmpp-bot.dylan (original)
+++ trunk/libraries/network/xmpp-bot/xmpp-bot.dylan Fri Dec 22 02:03:14 2006
@@ -32,6 +32,8 @@
#rest rest, #key, #all-keys)
let subscription-callback = make(<callback>, reference: #"default", priority: 3, handler: curry(auto-subscriber, xmpp-bot));
add-callback(xmpp-bot.client, <presence>, subscription-callback);
+ let broadcast-callback = make(<callback>, reference: #"default", priority: 3, handler: curry(broadcaster, xmpp-bot));
+ add-callback(xmpp-bot.client, <message>, broadcast-callback);
if (~ connect(xmpp-bot.client))
exit-application(1);
end if;
@@ -40,6 +42,11 @@
send(xmpp-bot.client, make(<iq>, type: #"get", query: with-xml() query(xmlns => "jabber:iq:roster") end, id: "roster"));
end;
+define method broadcaster (xmpp-bot, client, message)
+ if (message.body & ~(subsequence-position(as(<string>, message.body), "?OTR")))
+ broadcast-message(xmpp-bot, concatenate(as(<string>, message.from), " wrote: ", as(<string>, message.body)));
+ end;
+end;
define method auto-subscriber (xmpp-bot, client, presence)
if (presence.type)
select (presence.type)
@@ -77,8 +84,9 @@
end;
end select;
else
- unless (any?(method(a) a = as(<string>, presence.from) end, xmpp-bot.online-users))
- xmpp-bot.online-users := add!(xmpp-bot.online-users, as(<string>, presence.from));
+ let subscriber = as(<string>, presence.from);
+ unless (any?(curry(\=, subscriber), xmpp-bot.online-users))
+ xmpp-bot.online-users := add!(xmpp-bot.online-users, subscriber);
end;
end;
end;
More information about the chatter
mailing list