From 9df03c38aa824c20963fcc90f5410f3db412b9d7 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Wed, 4 Nov 2009 17:41:47 +0100
Subject: [PATCH 01/15] fix _status_description_time and jCard
---
world/net/jabber/mixin_render.c | 3 ++-
world/net/jabber/user.c | 1 +
world/net/library/profiles.html | 2 +-
world/net/library/profiles.i | 2 --
world/net/library/profiles.pl | 3 ++-
5 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/world/net/jabber/mixin_render.c b/world/net/jabber/mixin_render.c
index 79c1376..865c872 100644
--- a/world/net/jabber/mixin_render.c
+++ b/world/net/jabber/mixin_render.c
@@ -9,7 +9,8 @@ int msg(string source, string mc, string data,
mapping vars, int showingLog, string target) {
mixed t;
- switch (mc){
+ switch (mc) {
+ case "_status_description_time":
case "_status_person_away":
case "_status_person_present":
case "_status_person_present_implied":
diff --git a/world/net/jabber/user.c b/world/net/jabber/user.c
index a0e7ef2..01a8c9c 100644
--- a/world/net/jabber/user.c
+++ b/world/net/jabber/user.c
@@ -129,6 +129,7 @@ msg(source, mc, data, mapping vars, showingLog) {
mc = "_notice_place_leave";
}
switch (mc) {
+ case "_status_description_time":
case "_status_person_present":
case "_status_person_present_implied":
case "_status_person_absent":
diff --git a/world/net/library/profiles.html b/world/net/library/profiles.html
index 62a1556..6d5854c 100644
--- a/world/net/library/profiles.html
+++ b/world/net/library/profiles.html
@@ -71,7 +71,7 @@
_flag_uniform_verbatim
verbatimuniform
_flag_visibility
visibility
_gender
sex
gender
gender
-
_identification
id
psyc_id
PSYCID
psycID
+
_identification
id
psyc_id
psycID
_identification_other
otherid
_identification_scheme_AIM
aimid
aim_id
aimChatID
_identification_scheme_ICQ
icqid
icq_id
icqChatID
diff --git a/world/net/library/profiles.i b/world/net/library/profiles.i
index b523ad2..aa33926 100644
--- a/world/net/library/profiles.i
+++ b/world/net/library/profiles.i
@@ -94,7 +94,6 @@ volatile mapping psyc2jCard = ([
"_affiliation" : "%s",
"_date_birth" : "%s",
"_description_public" : "%s",
- "_identification" : "%s",
"_identification_scheme_XMPP" : "%s",
"_identification_scheme_mailto" : "%s",
"_name_family" : "%s",
@@ -133,7 +132,6 @@ volatile mapping jCard2psyc = ([
"TEL/NUMBER" : "_contact_telephone",
"BDAY" : "_date_birth",
"DESC" : "_description_public",
- "PSYCID" : "_identification",
"JABBERID" : "_identification_scheme_XMPP",
"EMAIL/USERID" : "_identification_scheme_mailto",
"N/FAMILY" : "_name_family",
diff --git a/world/net/library/profiles.pl b/world/net/library/profiles.pl
index 7ecfbb8..3e00cd0 100644
--- a/world/net/library/profiles.pl
+++ b/world/net/library/profiles.pl
@@ -377,7 +377,8 @@ FOAF icqChatID
PSYC _identification
jProf psyc_id
-jCard PSYCID
+# I'm afraid adding a PSYCID field will not be well-recepted by some apps
+#jCard PSYCID
FOAF psycID
PSYC _identification_other
From 958980e2d6fd3af427121f899c752336306962bb Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Wed, 4 Nov 2009 19:10:32 +0100
Subject: [PATCH 02/15] a bit cleaner
---
world/net/jabber/user.c | 15 ++++++++-------
world/net/person.c | 25 -------------------------
2 files changed, 8 insertions(+), 32 deletions(-)
diff --git a/world/net/jabber/user.c b/world/net/jabber/user.c
index a0e7ef2..32e02f0 100644
--- a/world/net/jabber/user.c
+++ b/world/net/jabber/user.c
@@ -572,15 +572,16 @@ iq(XMLNode node) {
P3(("+++ %O IQ node %O\n", ME, node))
iqchild = getiqchild(node);
- unless(iqchild) switch(node["@type"]) {
- case "get":
- case "set":
- case "result":
- case "error":
- break;
+ unless (iqchild && mappingp(iqchild)) switch(node["@type"]) {
+ case "get":
+ case "set":
+ case "result":
+ case "error":
+ P1(("%O got empty iq %O\n", ME, node))
+ return;
default:
P1(("%O got invalid iq %O\n", ME, node))
- return;
+ return;
}
helper = iqchild;
diff --git a/world/net/person.c b/world/net/person.c
index 2b80bc0..8068d2d 100644
--- a/world/net/person.c
+++ b/world/net/person.c
@@ -1011,34 +1011,10 @@ case "_set_password":
// TODO? add support for integer _service means multiple
// catch-all clients possible. do we want this?
if (vars["_service"]) {
- // oh. we let it suggest a *different* location?
- // interesting. why don't we also do this for clients?
- // and who is using this code anyway?
linkDel(vars["_service"]);
linkSet(vars["_service"], vars["_location"], source);
return 0;
}
-#if 0
- if (vars["_password"]) {
-#ifndef VOLATILE
- // obviously similar code in usercmd:set()
- if (!v("password") &&
- (t = legal_password(vars["_password"],
- MYNICK))) {
- ME->pr(t[0], t[1]); // TODO
- return;
- }
- // why do we check password here again
- // if we are just after a checkPassword?
- // what are we doing here?
-#endif
- } else if (ONLINE &&
- v("locations")[0] != source) {
- sendmsg(source,
- "_error_status_person_connected");
- return 0;
- }
-#else
// this code should also run for _service, but it
// needs a reorg
t = v("locations")[0];
@@ -1058,7 +1034,6 @@ case "_set_password":
// now we leave the old client circuit
// to die off.. let's hope that's safe
}
-#endif
#ifdef _flag_disable_module_trust
unless(stringp(source)) {
m_delete(v("locations"), 0);
From 37a4720711a23bd637b48257ee3d2d96ff4cbafe Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Wed, 4 Nov 2009 19:17:53 +0100
Subject: [PATCH 03/15] _request_do_subscribe
---
world/net/psyc/parse.i | 1 +
world/net/usercmd.i | 15 +++++++++++++++
2 files changed, 16 insertions(+)
diff --git a/world/net/psyc/parse.i b/world/net/psyc/parse.i
index 9a9e1a5..e7a2557 100644
--- a/world/net/psyc/parse.i
+++ b/world/net/psyc/parse.i
@@ -1110,6 +1110,7 @@ vamixed startParse(string a) {
restart();
if (isServer()) greet();
}
+// new syntax is so broken, we should not pretend to support it yet FIXME
# if defined(SPYC_PATH) && defined(USE_SPYC)
else if (a == "|") { // new S_GLYPH_PACKET_DELIMITER
object o = clone_object(SPYC_PATH "server");
diff --git a/world/net/usercmd.i b/world/net/usercmd.i
index c90d962..d133617 100644
--- a/world/net/usercmd.i
+++ b/world/net/usercmd.i
@@ -1637,6 +1637,21 @@ case "_invite":
return invite(t, vars);
}
return 0;
+case "_subscribe_permanent":
+case "_subscribe_temporary":
+case "_subscribe":
+ if (t = vars["_group"] || vars["_focus"]) {
+ subscribe(family == "_subscribe_permanent" ?
+ SUBSCRIBE_PERMANENT : SUBSCRIBE_TEMPORARY, t);
+ return 1;
+ }
+ return 0;
+case "_unsubscribe":
+ if (t = vars["_group"] || vars["_focus"]) {
+ subscribe(SUBSCRIBE_NOT, t);
+ return 1;
+ }
+ return 0;
case "_remove_register":
case "_register_remove": // to go
// unregister a user? only if you are trustworthy!
From 7b3b955117f2217b161dfbb5f98e39593a5e1042 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Sat, 7 Nov 2009 00:07:54 +0100
Subject: [PATCH 04/15] bugfix: enforce uniforms in _routes
---
CHANGESTODO | 3 +++
world/default/en/jabber.textdb | 24 ++++++++++++------------
world/net/group/master.c | 27 ++++++++++++++++++++++++---
world/net/jabber/common.c | 2 +-
world/net/jabber/mixin_parse.c | 4 ++--
world/net/jabber/user.c | 2 +-
world/net/place/archetype.gen | 3 +++
7 files changed, 46 insertions(+), 19 deletions(-)
diff --git a/CHANGESTODO b/CHANGESTODO
index c632db6..9b7587c 100644
--- a/CHANGESTODO
+++ b/CHANGESTODO
@@ -3977,4 +3977,7 @@ irc/user
- handle root messages
jabber/*
- deal with < and > in status updates
+group/master
+- don't use local objects as they may get replaced and zeroed
+ use local uniforms instead (fixes some strange ghost membership fx)
diff --git a/world/default/en/jabber.textdb b/world/default/en/jabber.textdb
index 70bf913..3b69c56 100644
--- a/world/default/en/jabber.textdb
+++ b/world/default/en/jabber.textdb
@@ -366,28 +366,28 @@ _notice_place_leave
|
_status_presence_here
-|[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_status_presence_here_talkative
-|chat[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|chat[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_status_presence_here_busy
-|dnd[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|dnd[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_status_presence_away
-|away[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|away[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_status_presence_absent_vacation
-|xa[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|xa[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_status_presence_absent
-|[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_status_presence_here_quiet
|
_notice_presence_here
-|[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_notice_presence_here_plain
|
@@ -396,19 +396,19 @@ _notice_presence_here_quiet
|
_notice_presence_here_talkative
-|chat[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|chat[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_notice_presence_here_busy
-|dnd[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|dnd[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_notice_presence_away
-|away[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|away[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_notice_presence_absent_vacation
-|xa[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|xa[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_notice_presence_absent
-|[_XML_description_presence]<[_INTERNAL_mood_jabber]/>
+|[_INTERNAL_XML_description_presence]<[_INTERNAL_mood_jabber]/>
_notice_person_absent_netburp
|xa{_notice_person_absent_netburp}
diff --git a/world/net/group/master.c b/world/net/group/master.c
index 10121f7..2711a52 100644
--- a/world/net/group/master.c
+++ b/world/net/group/master.c
@@ -30,6 +30,10 @@
#include
#include
+#ifdef BETA
+# define ENFORCE_UNIFORM
+#endif
+
#ifdef CONTEXT_STATE // {{{
# define HEADER_ONLY
# include "../state.c"
@@ -98,7 +102,7 @@ castmsg(source, mc, data, vars) {
#endif // }}}
P2(("%O castmsg(%O,%O,%O..) for %O\n", ME, source,mc,data, _routes))
- D3(P2(("%O vars = %O\n", ME, vars)))
+ D4(P2(("%O vars = %O\n", ME, vars)))
// _context is an MMP variable, so we use it internally with objectp
vars["_context"] = ME;
@@ -114,11 +118,11 @@ castmsg(source, mc, data, vars) {
foreach (route, noa : _routes) {
#if defined(TIDILY) && defined(MEMBERS_BY_SOURCE)
- P3(("place:each(%O,t=%O,s=%O,mc=%O,d=%O,v=%O)\n",
+ P4(("place:each(%O,t=%O,s=%O,mc=%O,d=%O,v=%O)\n",
mappingp(noa) ? sizeof(noa) : noa, route, source, mc,
data, vars))
#else
- P3(("place:each(%O,t=%O,s=%O,mc=%O,d=%O,v=%O)\n",
+ P4(("place:each(%O,t=%O,s=%O,mc=%O,d=%O,v=%O)\n",
noa, route, source, mc, data, vars))
#endif
// if (route == source) return; // skip sender
@@ -191,6 +195,9 @@ protected load(file) {
remove_member(source, origin) {
mixed t;
+#ifdef ENFORCE_UNIFORM
+ if (objectp(source)) source = psyc_name(source);
+#endif
P2(("%O remove_member(%O, %O)\n", ME, source, origin))
if (origin && (
#if 1 //defined(TIDILY) && defined(MEMBERS_BY_SOURCE)
@@ -241,10 +248,23 @@ jabberisten die freundschaft zum user#fippo entfernte:
P2(("%O encountered unnecessary remove of %O from %O\n",
ME, source, _routes))
}
+ P3(("%O -> _routes = %O\n", ME, _routes))
}
insert_member(source, origin) {
mixed t;
+
+#ifdef ENFORCE_UNIFORM
+ // when storing objects into _routes stupid things can happen:
+ // when a user is created, all her local friends are cloned and
+ // placed into her context. if one of those local friends logs in
+ // under different access a different user object is created -
+ // the old one is destroyed and, guess what, this context mapping
+ // is not updated. always using uniforms is a way to solve this
+ // problem.
+ //
+ if (objectp(source)) source = psyc_name(source);
+#endif
P2(("%O insert_member(%O, %O)\n", ME, source, origin))
if (objectp(origin) && (t = origin->qOrigin())) {
#ifdef FORK
@@ -279,6 +299,7 @@ insert_member(source, origin) {
// would be nice to do it here, but that's not correct
//revision += 1;
#endif
+ P3(("%O -> _routes = %O\n", ME, _routes))
}
// code duplicaton is faster than others
diff --git a/world/net/jabber/common.c b/world/net/jabber/common.c
index 2f2141b..7a26c02 100644
--- a/world/net/jabber/common.c
+++ b/world/net/jabber/common.c
@@ -300,7 +300,7 @@ render(string mc, string data, mapping vars, mixed source) {
// if this kind of problem recurrs, we should quote every
// single damn variable
if (vars["_description_presence"])
- vars["_XML_description_presence"] =
+ vars["_INTERNAL_XML_description_presence"] =
xmlquote(vars["_description_presence"]);
if (stringp(data)) data = xmlquote(data);
else if (vars["_action"])
diff --git a/world/net/jabber/mixin_parse.c b/world/net/jabber/mixin_parse.c
index bdd2e28..12e6233 100644
--- a/world/net/jabber/mixin_parse.c
+++ b/world/net/jabber/mixin_parse.c
@@ -550,7 +550,7 @@ jabberMsg(XMLNode node, mixed origin, mixed *su, array(mixed) tu) {
vars["_description_presence"] =
(node["/status"] && node["/status"][Cdata]) ?
node["/status"][Cdata] : ""; // "Get psyced!";
- vars["_XML_description_presence"] =
+ vars["_INTERNAL_XML_description_presence"] =
xmlquote(vars["_description_presence"]);
vars["_INTERNAL_mood_jabber"] = "neutral";
sendmsg(o, "_notice_presence_absent", 0,
@@ -695,7 +695,7 @@ jabberMsg(XMLNode node, mixed origin, mixed *su, array(mixed) tu) {
vars["_description_presence"] =
(node["/status"] && node["/status"][Cdata]) ?
node["/status"][Cdata] : ""; // "Get psyced!";
- vars["_XML_description_presence"] =
+ vars["_INTERNAL_XML_description_presence"] =
xmlquote(vars["_description_presence"]);
vars["_degree_availability"] = jabber2avail[node["/show"]
&& node["/show"][Cdata]];
diff --git a/world/net/jabber/user.c b/world/net/jabber/user.c
index 805dcde..7d74c5b 100644
--- a/world/net/jabber/user.c
+++ b/world/net/jabber/user.c
@@ -251,7 +251,7 @@ showFriends() {
"_INTERNAL_target_jabber" : myjid,
"_INTERNAL_source_jabber" : mkjid(person),
"_description_presence" : "", // TODO: get these from state
- "_XML_description_presence" : "",
+ "_INTERNAL_XML_description_presence" : "",
"_INTERNAL_mood_jabber" : "neutral"
]));
}
diff --git a/world/net/place/archetype.gen b/world/net/place/archetype.gen
index 7d23e52..cc24c61 100644
--- a/world/net/place/archetype.gen
+++ b/world/net/place/archetype.gen
@@ -768,6 +768,7 @@ insert_member(source, mc, data, vars, ni, neu, again) {
# else
// only this code runs
vars["_duty"] = "member";
+ // why not _role instead of _duty?
# endif
#endif // OWNED
// we are also echoing his vars back to the requestor
@@ -1150,6 +1151,8 @@ msg(source, mc, data, mapping vars) {
|| abbrev("_request_invitation", mc)) {
mc = "_notice_place"+mc[8..];
#ifdef PLACE_TOPIC
+ // hm, this doesn't just go back to the new
+ // person.. it is resent to all..
if (v("topic") &&! abbrev("_request_leave", mc))
vars["_topic"] = v("topic");
#endif
From 7bcd5852f42aa3ed2ca6170da82ce4951cce99c5 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Sun, 8 Nov 2009 19:03:25 +0100
Subject: [PATCH 05/15] _failure_necessary_variable just for _Tycho_
---
world/default/de/plain.textdb | 3 +++
world/default/en/plain.textdb | 5 +++-
world/net/usercmd.i | 45 ++++++++++++++++++-----------------
3 files changed, 30 insertions(+), 23 deletions(-)
diff --git a/world/default/de/plain.textdb b/world/default/de/plain.textdb
index 937adb6..c0f94ec 100644
--- a/world/default/de/plain.textdb
+++ b/world/default/de/plain.textdb
@@ -744,6 +744,9 @@ _error_illegal_password_size
_error_necessary_registration
|Tut mir Leid, das geht erst nach Registrierung.
+_failure_necessary_variable
+|Unvollständige Anfrage.
+
_error_necessary_nick_place
|Du kannst hier nicht einfach hereinlaufen ohne einen anständigen Spitznamen!
diff --git a/world/default/en/plain.textdb b/world/default/en/plain.textdb
index c326565..4527c01 100644
--- a/world/default/en/plain.textdb
+++ b/world/default/en/plain.textdb
@@ -626,7 +626,10 @@ _failure_filter_strangers
|[_nick] has not enabled messages from strangers.
_failure_necessary_registration
-|[_nick_target] cannot handle friendships yet.
+|[_nick_target] is no registered user yet.
+
+_failure_necessary_variable
+|Your request is incomplete.
_failure_unsuccessful_delivery
|Could not establish a circuit to [_host] to deliver a [_method_relay] to [_source].
diff --git a/world/net/usercmd.i b/world/net/usercmd.i
index d133617..a225214 100644
--- a/world/net/usercmd.i
+++ b/world/net/usercmd.i
@@ -914,7 +914,7 @@ cmd(a, args, dest, command) {
if (member(places, (t = sizeof(args) < 2 ? place : args[1]))) {
m_delete(places, t);
}
- // fall thru
+ // fall thru
case "unenter": // and the protocol should follow.. unenter!
case "leave":
case "part":
@@ -1001,7 +1001,7 @@ cmd(a, args, dest, command) {
break;
case "notice":
t2 = "_message_private_annotate";
- // fall thru
+ // fall thru
case "msg":
case "tell":
case "m":
@@ -1020,7 +1020,7 @@ cmd(a, args, dest, command) {
"Usage: /more. See also /tell and /talk.");
break;
}
- // fall thru
+ // fall thru
case "q":
case "query":
case "talk":
@@ -1046,18 +1046,6 @@ cmd(a, args, dest, command) {
return 1;
}
break;
- // experimental new way to log out without logging out.
- // may very well not work as planned
- case "det":
- case "detach":
- //availability = AVAILABILITY_OFFLINE;
- remove_interactive(ME);
- //break;
- // used to fall thru to declare myself offline as well..
- // now you have to declare yourself offline manually
- // no you don't. if availability isn't offline the
- // disconnect() handler will clean you out!
- // fall thru
#endif
#ifndef _flag_disable_module_friendship
case "shout":
@@ -1068,9 +1056,19 @@ cmd(a, args, dest, command) {
"Usage: /shout ");
break;
# ifndef _flag_disable_module_presence
- case "presence":
- showMyPresence(1);
- return 1;
+ // experimental new way to log out without logging out.
+ // may very well not work as planned
+ // detach for psyc clients: _do_presence offline + _unlink
+ case "det":
+ case "detach":
+ //availability = AVAILABILITY_OFFLINE;
+ remove_interactive(ME);
+ //break;
+ // used to fall thru to declare myself offline as well..
+ // now you have to declare yourself offline manually
+ // no you don't. if availability isn't offline the
+ // disconnected() handler will clean you out!
+ // fall thru
case "offline":
announce(AVAILABILITY_OFFLINE, 1, 1, ARGS(1));
return 1;
@@ -1157,6 +1155,9 @@ cmd(a, args, dest, command) {
// this command is normally accessed as /mynick
// as it behaves similarely to /me
return motto(ARGS(1));
+ case "presence":
+ showMyPresence(1);
+ return 1;
# endif /* _flag_disable_module_presence */
case "cancel":
case "can":
@@ -1590,7 +1591,7 @@ case "_message":
tell(vars["_person"], data, 0, vars["_action"], 0);
return 1;
}
- // else.. fall thru
+ // else.. fall thru
case "_message_public":
case "_public":
case "_speak":
@@ -1770,8 +1771,8 @@ case "_presence":
return 1;
}
P1(("got invalid %O: %O, %O\n", mc, vars, data))
- // complain about missing args?
- return 0;
+ w("_failure_necessary_variable");
+ return 1;
#endif // _flag_disable_module_presence
case "_list_peers_JSON":
listAcq(PPL_JSON);
@@ -1788,7 +1789,7 @@ case "_unlink":
case "_exit":
// so this is some kind of ugly hack not to be used.. huh?
announce(AVAILABILITY_OFFLINE);
- // fall thru
+ // fall thru
case "_quit":
// bye(vars["_reason"]);
quit();
From c324da0255652fdf4e34adcf13798e999209f9be Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Sun, 8 Nov 2009 19:42:57 +0100
Subject: [PATCH 06/15] Availability degree checked by server
---
CHANGESTODO | 5 +++++
world/net/usercmd.i | 19 +++++++++++++------
2 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/CHANGESTODO b/CHANGESTODO
index 9b7587c..8251242 100644
--- a/CHANGESTODO
+++ b/CHANGESTODO
@@ -3980,4 +3980,9 @@ jabber/*
group/master
- don't use local objects as they may get replaced and zeroed
use local uniforms instead (fixes some strange ghost membership fx)
+usercmd
++ _failure_necessary_variable for _request_do_presence that
+ doesn't provide _availability (just provides _mood for example)
+- tycho: Availability degree is not checked by server and can
+ be negative, like -5.
diff --git a/world/net/usercmd.i b/world/net/usercmd.i
index a225214..b3bff73 100644
--- a/world/net/usercmd.i
+++ b/world/net/usercmd.i
@@ -1762,15 +1762,22 @@ case "_friend": // tmp
return 1;
#ifndef _flag_disable_module_presence
case "_presence":
- P3(("%O with %O\n", mc, vars))
- if ((t = vars["_degree_mood"]) && intp(t))
- vSet("mood", mood = t);
- if ((t = vars["_degree_availability"]) && intp(t)) {
- announce(t, !vars["_degree_automation"],
+ if (t = vars["_degree_mood"]) {
+ if (! sscanf(t, "%1d", t)) {
+ w("_warning_usage_mood");
+ return 1;
+ }
+ vSet("mood", mood = t);
+ }
+ if (t = vars["_degree_availability"]) {
+ if (! sscanf(t, "%1d", t))
+ w("_warning_usage_availability");
+ else
+ announce(t, !vars["_degree_automation"],
1, vars["_description_presence"]);
return 1;
}
- P1(("got invalid %O: %O, %O\n", mc, vars, data))
+ P1(("got invalid %O: %O, %O in %O\n", mc, vars, data, ME))
w("_failure_necessary_variable");
return 1;
#endif // _flag_disable_module_presence
From 2de03e7220dba18bef590bf9aafd21d081e85249 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Sun, 8 Nov 2009 20:04:56 +0100
Subject: [PATCH 07/15] client _examine was falling thru to _HTML
---
CHANGESTODO | 3 ++-
world/net/person.c | 4 ++++
world/net/user.c | 8 +++++---
world/net/usercmd.i | 1 +
4 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/CHANGESTODO b/CHANGESTODO
index 8251242..cbfdb1f 100644
--- a/CHANGESTODO
+++ b/CHANGESTODO
@@ -3985,4 +3985,5 @@ usercmd
doesn't provide _availability (just provides _mood for example)
- tycho: Availability degree is not checked by server and can
be negative, like -5.
-
+user
+- psyc client _examine was falling thru to _HTML output, added return;
diff --git a/world/net/person.c b/world/net/person.c
index 8068d2d..309260e 100644
--- a/world/net/person.c
+++ b/world/net/person.c
@@ -1345,6 +1345,10 @@ case "_request_execute":
// this should be renamed into _context but
// that cannot be done before _context is
// renamed into _channel .. hehe
+ //
+ // also this would be the perfect place to
+ // make a distinction between _focus and _group
+ // if we wanted to.. actually, no, we want _context
if (stringp(t = vars["_focus"]
|| vars["_group"])) {
// check if the uniform is one of
diff --git a/world/net/user.c b/world/net/user.c
index 595f2fa..6d5abe9 100644
--- a/world/net/user.c
+++ b/world/net/user.c
@@ -793,6 +793,7 @@ case "_status_description_place":
"_source_relay": source,
"_uniform_style": vars["_uniform_style"]
]) + vars);
+ return 1;
case "_HTML":
// client wants HTML
if (v("locations")[0]) sendmsg(v("locations")[0],
@@ -802,6 +803,7 @@ case "_status_description_place":
"_source_relay": source,
"_uniform_style": vars["_uniform_style"]
]));
+ return 1;
case "_surf":
// we're doing a /surf, so stop here
return 1;
@@ -814,7 +816,7 @@ case "_status_description_place":
// hmmm.. well, that's how psyc to client happens here
mc = "_list"+ mc[7..];
w(mc+"_on", data, ([ // used by irc whois..
- "_source_relay": source,
+ "_source_relay": source, "_tag_reply": t,
"_nick" : vars["_nick"] || vars["_nick_place"],
"_name_public" : vars["_name_public"] || "",
"_action_motto" : vars["_action_motto"] || "",
@@ -822,8 +824,8 @@ case "_status_description_place":
]));
listDescription(vars, 1);
w(mc+"_off", 0, ([
- "_source_relay": source,
- "_nick" : vars["_nick"] ]));
+ "_source_relay": source, "_tag_reply": t,
+ "_nick" : vars["_nick"] ]));
return 1;
case "_status_place_members_none_automatic":
if (beQuiet != -1) {
diff --git a/world/net/usercmd.i b/world/net/usercmd.i
index b3bff73..21058b5 100644
--- a/world/net/usercmd.i
+++ b/world/net/usercmd.i
@@ -1631,6 +1631,7 @@ case "_leave":
, 1, vars["_flag"]);
return 1;
case "_invite":
+ // _focus has been taken care of beforehand in person.c
if (t = vars["_person"]) {
unless (place) return w("_error_status_place_none",
"You aren't in a room");
From cc46edb253259ccff32a155a9c9836dff8a4e8ec Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Mon, 9 Nov 2009 07:15:38 +0100
Subject: [PATCH 08/15] gentoo update
---
config/gentoo/psyced/Makefile | 2 +-
config/gentoo/psyclpc/Makefile | 2 +-
world/net/include/peers.h | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/config/gentoo/psyced/Makefile b/config/gentoo/psyced/Makefile
index 8212fd3..ac48e7e 100644
--- a/config/gentoo/psyced/Makefile
+++ b/config/gentoo/psyced/Makefile
@@ -9,7 +9,7 @@
# emerge. From nothing. fischerspooner rocks. -lynX
P=psyced
-V=20090303
+V=20090617
# this part can be executed once the ebuild is in portage
diff --git a/config/gentoo/psyclpc/Makefile b/config/gentoo/psyclpc/Makefile
index 879770f..723b91e 100644
--- a/config/gentoo/psyclpc/Makefile
+++ b/config/gentoo/psyclpc/Makefile
@@ -9,7 +9,7 @@
# emerge. From nothing. fischerspooner rocks. -lynX
P=psyclpc
-V=20080707
+V=20090321
# this part can be executed once the ebuild is in portage
diff --git a/world/net/include/peers.h b/world/net/include/peers.h
index abc9916..e80e9c5 100644
--- a/world/net/include/peers.h
+++ b/world/net/include/peers.h
@@ -50,8 +50,8 @@
#define PPL_NOTIFY_DELAYED_MORE '4'
#define PPL_NOTIFY_FRIEND PPL_NOTIFY_DELAYED_MORE
#define PPL_NOTIFY_MUTE '2'
-#define PPL_NOTIFY_PENDING '1' // friendship request sent
-#define PPL_NOTIFY_OFFERED '0' // friendship request received
+#define PPL_NOTIFY_PENDING '1' // _outgoing friendship request sent
+#define PPL_NOTIFY_OFFERED '0' // _incoming friendship req received
#define PPL_NOTIFY_NONE ' '
#define TIME_DELAY_NOTIFY (60 * 3) // 3 minutes
From d6498a188aeacd7686aff653183d603c77adbb03 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Mon, 9 Nov 2009 12:47:06 +0100
Subject: [PATCH 09/15] valid degree?
---
world/net/psyc/parse.i | 26 ++++++++++++++++++--------
world/net/usercmd.i | 15 ++++++++-------
2 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/world/net/psyc/parse.i b/world/net/psyc/parse.i
index e7a2557..186b738 100644
--- a/world/net/psyc/parse.i
+++ b/world/net/psyc/parse.i
@@ -57,7 +57,7 @@ volatile string lastvar, mod, origin_unl;
volatile array(mixed) list;
volatile mapping hash;
volatile int l = 0;
-volatile int pongtime, routing = 1;
+volatile int reject = 0, pongtime; //, routing;
#ifndef PSYC_TCP
// resolved UNL of remote server (psyc://hostname or psyc://hostname:port)
@@ -129,7 +129,7 @@ int restart() {
// delete other stuff too
buffer = "";
mc = 0;
- routing = 1; // unused as yet
+// routing = 1; // unused as yet
#ifdef SYSTEM_SECRET
checkpack = vcheck = 0;
ctrust = trustworthy;
@@ -193,13 +193,17 @@ private int conclude() {
// a later day.. TODO
// hooray, we get to check some variable families for sanity
} else if (abbrev("_degree", lastvar)) {
+ mixed t = cvars[lastvar];
// allow for unset degree '-'
- if (!stringp(cvars[lastvar]) || (cvars[lastvar] != "-" &&
- !sscanf(cvars[lastvar], "%1d", cvars[lastvar]))) {
- P1(("%O failed to parse %O: %O\n", ME,
- lastvar, cvars[lastvar]))
+ if (!(intp(t) && t>=0) || (t != "-" &&
+ !sscanf(t, "%1d", cvars[lastvar]))) {
+ reject++;
+ P1(("%O failed to parse %O: %O\n", ME, lastvar, t))
+ croak("_error_type_degree",
+ "Your value for variable [_variable] does not qualify for a degree.",
+ ([ "_variable": lastvar ]));
m_delete(cvars, lastvar);
- if (mod != ":") m_delete(pvars, lastvar);
+ //if (mod != ":") m_delete(pvars, lastvar);
}
else if (mod != ":") pvars[lastvar] = cvars[lastvar];
} else if (abbrev("_list", lastvar)) { // _tab
@@ -293,7 +297,7 @@ vamixed parse(string a) {
// to put the mmp variable state away somewhere
// and go fetch the psyc variable state for the current
// source/target pair from somewhere else. TODO
- routing = 0; // unused as yet
+// routing = 0; // unused as yet
} else switch(a[0]) {
case ':':
unless (SCANFIT) {
@@ -576,6 +580,12 @@ vamixed getdata(string a) {
// a runtime error (but it's still better to fix it!)
next_input_to(#'parse);
# endif
+ if (reject) {
+ // packet has been rejected by parser for semantic reasons
+ reject = 0;
+ restart();
+ return 1;
+ }
if (!t || trustworthy > 5) {
deliver(0, 0, mc, buffer, cvars);
} else unless (u = parse_uniform(t)) {
diff --git a/world/net/usercmd.i b/world/net/usercmd.i
index 21058b5..794994c 100644
--- a/world/net/usercmd.i
+++ b/world/net/usercmd.i
@@ -1763,17 +1763,18 @@ case "_friend": // tmp
return 1;
#ifndef _flag_disable_module_presence
case "_presence":
+ // parser takes care of checking _degree type
if (t = vars["_degree_mood"]) {
- if (! sscanf(t, "%1d", t)) {
- w("_warning_usage_mood");
- return 1;
- }
+// if (! sscanf(t, "%1d", t)) {
+// w("_warning_usage_mood");
+// return 1;
+// }
vSet("mood", mood = t);
}
if (t = vars["_degree_availability"]) {
- if (! sscanf(t, "%1d", t))
- w("_warning_usage_availability");
- else
+// if (! sscanf(t, "%1d", t))
+// w("_warning_usage_availability");
+// else
announce(t, !vars["_degree_automation"],
1, vars["_description_presence"]);
return 1;
From 597204464d02df25c69c0f818f9900f6c051ac60 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Thu, 19 Nov 2009 18:05:25 +0100
Subject: [PATCH 10/15] converter for CHANGESTODO to csv import for into bug
management tool
---
CHANGESTODO | 223 ++++++++++++++-------------------
bin/todo2csv | 100 +++++++++++++++
world/net/jabber/gateway.c | 2 +-
world/net/jabber/mixin_parse.c | 3 +
4 files changed, 195 insertions(+), 133 deletions(-)
create mode 100755 bin/todo2csv
diff --git a/CHANGESTODO b/CHANGESTODO
index cbfdb1f..8408a2a 100644
--- a/CHANGESTODO
+++ b/CHANGESTODO
@@ -1,11 +1,14 @@
vim:nosmarttab:syntax=diff
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-This file contains TODO and CHANGES (at EOF) rolled into one.
-Essentially: whenever you fix something, move that line to the end of file.
-- marks bugs & fixes, + marks new features, ? marks issues, * marks big stuff
+| This file contains TODO and CHANGES (at EOF) rolled into one.
+| Essentially: whenever you fix something, move that line to the end of file.
+| - marks bugs & fixes, + marks new features, ? marks issues, * marks big stuff
________________________________________________________________________
== NEXT RELEASE ========================================================
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
+- interserver xmpp /me expects no leading newline, but pidgin recently
+ started sending one
+
- autorefetch twitter isnt working
http/fetch is too complicated. throw out the queue and callback logic. kiss!
@@ -21,8 +24,6 @@ ________________________________________________________________________
________________________________________________________________________
== currently being inspected ===========================================
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-? /ve/TODO/leave-from-user
-
- newbies are allowed to open new owned rooms
fippo sagt: ergo brauchst du nen exit-hook der owner löscht wenn der n00b-owner aus dem raum geht
@@ -69,6 +70,7 @@ ________________________________________________________________________
? should /load inform that errors go to the console?
+- the ~0 bug
________________________________________________________________________
:_group psyc://psyced.org/@welcome
:_source_identification psyc://xxx.no-ip.org/~xxx
@@ -94,14 +96,15 @@ In welcome spricht «psyc://xxx.no-ip.org/~0» xxx: it should either ignore firs
________________________________________________________________________
== psyced 1.0 ==========================================================
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-SPYC (implementation of http://about.psyc.eu/Specification)
-* to activate spyc support, defined USE_SPYC
- it will attempt to use new syntax on outgoing links by default
-* to debug verification, define USE_VERIFICATION
-* to spend an extra round trip time negotiating, define USE_FEATURES
+> SPYC
- net/spyc is buggy and incomplete
+ (implementation of http://about.psyc.eu/Specification)
+_ to activate spyc support, defined USE_SPYC
+ it will attempt to use new syntax on outgoing links by default
+_ to debug verification, define USE_VERIFICATION
+_ to spend an extra round trip time negotiating, define USE_FEATURES
-INVITE ISSUES
+> INVITE ISSUES
- remote /invite is shown without uniform, just #nick_place
remote invite thus doesn't work for ircers..
beta's lynx invites psyc://psyced.org/~gynx into TEST.
@@ -122,7 +125,7 @@ INVITE ISSUES
there is a circuit already (should it be a _request!?)
- /invite should do remote echo like _message_private, not local
-REMOVE NICKNAMES FROM PROTOCOL
+> REMOVE NICKNAMES FROM PROTOCOL
? remote uniforms could be passed around in the psyced as parse_uniform
arrays rather than as strings. this opens up the possibility to have
a stringprepped+lowercased version of the uniform for comparisons.
@@ -142,7 +145,7 @@ REMOVE NICKNAMES FROM PROTOCOL
nick/alias when a friend (or local?), full uniform when unknown...
so all [_nick] should simply be replaced by [_source] etc.
! implementing the latter approach with the uni2nick callback strategy!
-AUTOALIASES & ALIASES FOR PLACES
+> AUTOALIASES & ALIASES FOR PLACES
+ /set aliases auto
use temporary aliases for people in places,
keep them in [r]aliases mappings only, not in v("aliases")
@@ -161,7 +164,7 @@ problems that should disappear when we move away from _nick's:
friendship requests. eh! where's the uniform!?
- remote /topic shows wrong nick
-PRESENCE STATUS
+> PRESENCE STATUS
+ all _status_person need to be upgraded to _status_presence with
availability etc.
- _status_person_present appears as a chat msg for local jabber/server users.
@@ -177,7 +180,7 @@ PRESENCE STATUS
net/jabber/user#whojarr oops is a roving piker.
* see also various PRESENCE boxes
-DECENTRALIZED STATE / PERSISTENT CONTEXT SLAVES
+> DECENTRALIZED STATE / PERSISTENT CONTEXT SLAVES
- do not send revision with every cast
+ we could use better integration of availability
because right now CACHE_PRESENCE doesn't work
@@ -203,7 +206,7 @@ DECENTRALIZED STATE / PERSISTENT CONTEXT SLAVES
is useful even when we have packet ids in place.. some places it's okay
to lose packets if at least the member lists are in sync
-GENERIC CONTEXT SUBSCRIBE / PRESENCE FOR ALL
+> GENERIC CONTEXT SUBSCRIBE / PRESENCE FOR ALL
+ krasser rewrite und fusion von raumanwesenheit und buddylists mittels
generischer presence.. siehe auch http://about.psyc.eu/presence und..
schwer zu glauben, wir haben heute festgestellt, dass wir subscribe,
@@ -219,12 +222,13 @@ see also http://about.psyc.eu/subscription
not from own UNI (see #ifdef FRIEND_ECHO)
... or just rewrite it all into context subscription!!
-ARCHETYPE PLACES
+> ARCHETYPE PLACES
? archetype.gen & other places: current privilege model sux.
qAide(), qOwner(), boss(source), v("topic-user")
.. how does this fit with confctrl, _duty and qAllowExternal?
.. and in some cases you just want to check for isMember
+>>>
- REGISTERED_USERS_ONLY does not behave properly on IRC port
(see also NO_NEWBIES ... clean up and rename?)
@@ -305,6 +309,11 @@ ________________________________________________________________________
- place redirection doesn't work for ircII: client still thinks i am in the
first room while i get messages from the second room. when i type stuff
to the first room, it doesn't even forward to the second.
+
+- psyced spits out _error_rejected_relay_incoming for hostnames that have
+ been redirected using SRV. x-net.hu's A record is still being checked.
+ _psyc._tcp.x-net.hu has SRV record 0 0 14404 psyc.x-net.hu.
+
________________________________________________________________________
== MINOR DELEGATES =====================================================
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
@@ -369,12 +378,12 @@ ________________________________________________________________________
? generate psyced without cvs support if no cvs installed?
... bzw. git
-WINDOWS DISTRIBUTION
+> WINDOWS DISTRIBUTION
? how can we compile SRV into erq.exe? do we care?
? which open source installer for win to use?
? what to do about psyconf.. include perl or re-implement psyconf for win?
-TWITTER
+> TWITTER
+ resolve redirect-urls before forwarding to subscriptions, that means,
calling http/fetch on http://tr.im/whatever urls until it no longer
returns a 30x redirection code. [improves privacy btw, since all those
@@ -400,7 +409,7 @@ ________________________________________________________________________
? apply more TAGGING (tagged callbacks also avoid the monster switches)
-CIRCUITRY
+> CIRCUITRY
- _request_circuit_shutdown isnt issued or doesnt arrive
or is the disconnected-detection buggy?
+ net/circuit:pushback TODO:
@@ -431,24 +440,24 @@ CIRCUITRY
? what to do when hosts talk faster then we resolve them?
see around _error_invalid_host_slow
-TRUST1
+> TRUST1
- _request_circuit_trust needs to check some challenge, or it can be
tricked by replay. so for now only use it over safe networks!!
? generic SASL for xmpp, psyc and irc?
-TRUST2
+> TRUST2
? TRUSTED_HOSTS are permitted to relay, this allows all users from that host to
relay.. not so cool.
+ the trust implementation needs to learn to distinguish host trust and
person trust, yet understand the interaction and develop maths for it
-SCHEMES AND SERVICES
+> SCHEMES AND SERVICES
+ allow for icq: rather than xmpp:XXX@icq etc.
+ implement *.service.* and *.scheme.* etc according to
http://about.psyc.eu/Directory_Service - so that mailto: works for any server
+ move the .psyc.eu suffix into a #define
+ implement forward-to-mailto-when-offline as a generic forwarding feature
-FOLLOW INVITES
+> FOLLOW INVITES
+ /set follow all|friends|none
allow your friends to invite you (and make you follow) into a room
so that they can immediately start talking to a group of people like
@@ -459,6 +468,7 @@ FOLLOW INVITES
create a subchannel of your self context, containing only the friends
you want to have a conversation with, and poof you can start talking!
+>>>
- ok, x@y notation sollte mind. dots im host überprüfen,
wenn nicht sogar leading #
In BuHa fragt el_presidente: inseln?
@@ -492,7 +502,7 @@ fritz: fritz zuckt.
fippo: TAGGING koennte dieses problem bald loesen
wie denn? was würde reply() anders machen?
-PRESENCE
+> PRESENCE
- eigene mood & availability erscheinen nicht im showStatus
(description schon, aber das war's noch nicht)
- irc access receives _status_away notices for each message they send to a
@@ -507,42 +517,8 @@ PRESENCE
man kann eine passende _notice machen und wird sogar als friend gelistet
- persistent_presence does not store description and mood
- gmail hat irgendwelche anderen probleme...
-- heute nachmittag stand auf dem schirm:
- oops schließt mit Dir Freundschaft.
- TAV möchte mit Dir Freundschaft schließen.
- bin mir ziemlich sicher, dass es keinen lokalen oops gibt.. es handelt sich
- um eine fehlerhafte doppelte darstellung vom TAV alias ohne sein @gmail.com!?
- einige stunden später:
- Du bist mit oops bereits befreundet.
- TAV möchte mit Dir Freundschaft schließen.
- ? mir scheint das passiert nicht mehr..
- wenn "bereits befreundet" ausgegeben wird, geht auch ne textmeldung an
- tav auf gmail raus. eine die es in jabberland nicht gibt. das wär okay
- wenn wir keinen bug hätten.....
- * also eigentlich sollte da ein "meinetwegen bist du subscribed" rausgehen
- weshalb wir nur noch das display an unseren user unterdruecken muessten
- hier ein ausschnitt aus der rawlog..
-
-» S:xmpp:64.233.166.129:-26112
-« C:xmpp:gmail.com
-
-
-« C:xmpp:gmail.com
-
- ..man beachte, die newlines nach type='subscribed'/> wurden scheinbar
- wirklich gesendet, aber vermutlich harmlos. dass gmail einen subscribe
- abschickt für jemanden mit dem man schon längst befreundet ist, dass ist
- wohl das problem. vermutlich ein dirty hack im umgang mit herkömmlichen
- jabber servern welcher bei uns aber doofe effekte hat. was tun? genau
- genommen müsste man errors zurückschicken, aber das wird die gmail-user
- nicht glücklich stimmen.. sonst? einfach verwerfen? na gut
- ... hmm würde es reichen dafür ausserhalb des switch display=0 zu setzen
- und nur im fall von PPL_NOTIFY_PENDING display=1 einzuschalten?
- * man sollte wirklich mal von wem kompetentes auf gmail-seite den
- subscription state checken lassen. ich vermute, die lassen
- gaim-b0rkedness raus in die welt.
-- ouch!! ganz schlimm.. es ist kein gmail-only problem!
+>>>
+- unnecessary refriendship requests
wenn ich mit Alias: xmpp:symlynx@example.ccc.de = JYNX /friend mache kommt:
symlynx schließt mit Dir Freundschaft.
JYNX möchte mit Dir Freundschaft schließen.
@@ -579,7 +555,7 @@ JYNX möchte mit Dir Freundschaft schließen.
- falls /set entersilent off so erhalten bleibt, dokumentieren
-PROGRAMMABLE USER IDENTIFICATIONS & MULTIPLE CLIENT INTERFACES
+> PROGRAMMABLE USER IDENTIFICATIONS & MULTIPLE CLIENT INTERFACES
- experimental rename fails sometimes:
Attempt to rename to existing object '~nautilutz'
possible fix: separate user identity from user access interface
@@ -600,7 +576,7 @@ PROGRAMMABLE USER IDENTIFICATIONS & MULTIPLE CLIENT INTERFACES
a UNI server in c++ anyway... ;)
? consider also what CONTEXT CHANNEL requirements the new identity has
-WHITELISTING & BLACKLISTING on the SERVER TRUST WEB
+> WHITELISTING & BLACKLISTING on the SERVER TRUST WEB
+ enable the #ifdef such that dialback from new hosts is not automatically
replied to, but a _request_trust_manual is sent to the monitor.
see also http://about.psyc.eu/Talk:Encryption
@@ -620,7 +596,7 @@ WHITELISTING & BLACKLISTING on the SERVER TRUST WEB
when the server tells you about things that have happened automatically,
like an automatic blacklisting. _info_adopt_trust or something.
-CHARSET
+> CHARSET
+ ensure UTF-8 at parsing time on all inputs so we can
a) remove the action limitation:
- when an umlaut appears in speakaction, then the entire line is not
@@ -637,7 +613,7 @@ CHARSET
so it is still necessary that CONSOLE_CHARSET learns to be easy about it
== PSYC 1.0alpha =======================================================
-THE BIG METHOD RENAME
+> THE BIG METHOD RENAME
- shouldn't all _tag_reply be renamed into the more generic _tag_relay ?
i mean.. pushback setting _tag_reply is semantically wrong whereas
setting _tag_relay makes sense. the MMP spec has abandoned _tag_reply
@@ -660,7 +636,7 @@ THE BIG METHOD RENAME
should have the same names as the entries in psyced.ini if equivalent.
+ after /unsub and /unfriend we should also have /unset
-COMPACT METHODS and KEYWORD INHERITANCE
+> COMPACT METHODS and KEYWORD INHERITANCE
nothing can be as fast as fixing the method inheritance at psyc parsing time.
since we have to patch compact methods into long methods anyway, we know all
the methods the muve can handle - so we can handle inheritance before passing
@@ -675,6 +651,7 @@ clients). example:
in fact.. we can even simplify all abbrev() calls into mere == comparisons
or switches in our muve code, because they will never be needed!
+>>>
- when a _target does not comply to the rules, a message needs to be replied
to with an error. currently however, handling falls thru to rootMsg() like
this:
@@ -686,13 +663,13 @@ or switches in our muve code, because they will never be needed!
- should ignored people receive an echo for the sake of not being
distinguishable from not ignored people? yes... but is a nasty change to do
-TYPE CHECKING AT PARSING TIME
+> TYPE CHECKING AT PARSING TIME
- unless trustworthy > 4 all incoming vars should be checked for legal
content, like chars in actions etc.. or maybe switch over the varnames
and fix the obvious candidates.. if a method is non-standard (we will
be aware of this by 1.0) we should check each var mentioned in the body.
-PSYC protokoll verbessern, dass implementationen einfach sein können:
+> PSYC protokoll verbessern, dass implementationen einfach sein können:
+ die lookup_identification queue in place/basic ist vermutlich nicht
notwendig, da (a) clients den zutritt zu einem raum von ihrer UNI
vermitteln lassen können und (b) scripte ihre informationen für einen
@@ -722,7 +699,7 @@ PSYC protokoll verbessern, dass implementationen einfach sein können:
dadurch die queues in net/circuit vereinfachen? unwahrscheinlich, aber
man könnte nochmal seinen grips drauf ansetzen.
-HISTORY
+> HISTORY
+ add timestamp search to lastlog.c, add timestamp-based /history and /log
commands, maybe remove v("new") code. then again, it's quite efficient.
see person.h for details.
@@ -746,7 +723,7 @@ ________________________________________________________________________
? _nick_local and coolname are shown, but cannot be identified
-localMUC:
+> localMUC:
- MUC member list may be incorrect after psyced server restart..
we should probably castmsg all local leaves at shutdown
- when entering places from XMPP-S2S own id appears both
@@ -763,7 +740,7 @@ localMUC:
still causing problems
? M1: apparently something in psyced's MUC implementation is making mcabber crash :(
-remoteMUC:
+> remoteMUC:
- whispering in remote MUCs:
xmpp:psyc@conference.jabber.org sagt Dir: test
would be nice to see the nickname at least.. ;)
@@ -773,6 +750,7 @@ remoteMUC:
or actually implement it? looks so stupid on telnet when typing
... then again, telnet is the only protocol that could use that.. scrapped
+>>>
- "asks" kommt blöd.. entweder visiblespeakaction immer, oder gar
nicht (implement visiblespeakaction in net/jabber)
- ausserdem wird kein asks erzeugt wenn jabberisten fragen stellen
@@ -789,6 +767,8 @@ remoteMUC:
________________________________________________________________________
== JABBER CLIENT ISSUES (...experimental is justified...) ==============
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
+- display twitter notices somehow
+
? XMPP: connecting to psyced.org with psi pops up a profile window everytime
? XMPP: first reply to a stranger's remote psyc message did not show up in psi
? neulich wurde 'stanly' beim runterfahren von psi nicht aus dem MUC genommen.
@@ -796,7 +776,7 @@ ________________________________________________________________________
MUC meldungen. ob der fehler bei psi oder uns liegt, k.A.
... is this still happening with the new fixes?
-ASTERISK IN XMPP: UNIFORMS
+> ASTERISK IN XMPP: UNIFORMS
- tjgillies: meebo doesn't let you put * in MUC name
AFAIK the xmpp: uri does not forbid * from the URI RFC thus
meebo should be incorrect here. we'll have to talk to them..
@@ -810,6 +790,7 @@ ASTERISK IN XMPP: UNIFORMS
- is psi having a problem with this, too?
+>>>
- accurate availability values from friends aren't stored and delivered
- re-subscribe isn't properly handled (so we do friend(0) earlier instead)
@@ -1232,7 +1213,7 @@ ________________________________________________________________________
fippo hotzenplotzt: möglich
? problem: how to allow remote XMPP MUC users to filter web inspection notices?
-PROFILES
+> PROFILES
! depend on DECENTRALIZED STATE to get to the next stadium of coolness
- exposed lists aren't properly sorted by expose level. a maximum expose should
automatically put a friend or group at the top of the profile list etc.
@@ -1248,6 +1229,7 @@ PROFILES
by channels - so we have a chance to multicast changes to our profile to
the intended people and don't have complexity explosion in user data for this.
+>>>
- Invalid password error in tn/server appears indented w/o LF
+ provide textdb editing mechanisms:
@@ -1291,7 +1273,7 @@ PROFILES
? _subject in jabber messages wird ignoriert. was machen wir damit?
-library/dns ... geht derzeit sowieso nicht ohne erq. erq muss sein!
+> ERQ
- an mehreren stellen verlassen wir uns darauf, dass __ERQ_MAX_SEND__
undefiniert sein wird wenn erq beim hochfahren nicht gefunden wurde,
aber wenn ich ldmud mit -N aufrufe wird __ERQ_MAX_SEND__ trotzdem
@@ -1299,6 +1281,7 @@ library/dns ... geht derzeit sowieso nicht ohne erq. erq muss sein!
+ es gibt neue localhost selbstresolver switche, das müsste mehrere
if localhost abfragen im bisherigen code unnötig machen. optimization TODO
+>>>
- don't accept connections during shutdown sequence
should work by returning 0 from master:connect()
- reorder shutdown? why do we see _notice_place_leave_reload_server
@@ -1405,14 +1388,6 @@ javascript:popnoresize('http://sport.ard.de/php/sportticker/?event_art=6&ticker=
+ spoof tester script in perl- oder pypsyc, welches gespoofte oder fehler-
hafte meldungen zu erzeugen versucht um w() und co dicht zu kriegen
-sollten wir wieder eine "Too deep recursion" im raumbereich haben
-könnte es ein fall sein für diese kleine vermutung:
- wenn QUIET_REMOTE_MEMBERS nicht defined ist, ist
- isValidRelay(vars["_source_relay"]) in place/basic.c:47 bei einem
- _failure_unsuccessful_delivery true, weil im _source_relay der
- raum selbst steht. und dann so weiter, da der user nie aus _u
- verschwindet
-
+ support for transfer/sharing of user data between servers. when a new
server is started using the .o files of an existing server, each loaded
user object should be aware, that it is *not* the entity that *made*
@@ -1439,18 +1414,18 @@ könnte es ein fall sein für diese kleine vermutung:
trying to intantiate ridiculous objects? (no extensions outside static?)
see also http://about.psyc.eu/Web_Attack
________________________________________________________________________
-* GOTCHAs
+> GOTCHAs
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
! When the /topic command makes funny errors, then your room has a custom
cmd() and doesn't pass vars over. It should use ON_COMMAND instead!
________________________________________________________________________
-* PSYC FUTURES see also http://about.psyc.eu/Category:Vapor
+> PSYC FUTURES see also http://about.psyc.eu/Category:Vapor
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
+ http://about.psyc.eu/Hashtags
+ http://about.psyc.eu/Follower
________________________________________________________________________
-* TOYS IN THE ATTIC
+> TOYS IN THE ATTIC
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- In welcome spricht Igramul: hmm... the "+list" command made xchat crash
man sollte dazu sagen, dass er danach gesagt hat, dass es ein
@@ -1480,7 +1455,7 @@ mapping rvars msg(source, mc, data, vars, rvars);
wenn ein msg() signalisieren will, dass die nachricht abgearbeitet ist,
gibt es return 0 statt return rvars durch. ist das alles, oder fehlt was?
________________________________________________________________________
-* GATEBOT / IRCGATE / etc
+> GATEBOT / IRCGATE / etc
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- /m freenode:symlynx hey
Sorry, _message_private is not supported by the IRC gateway.
@@ -1581,7 +1556,7 @@ ________________________________________________________________________
look at: http://freshmeat.net/projects/pyvoicechat/
dormant since 2004.. oops
-RELAYING
+> RELAYING
+ net/spyc needs relaying (without parsing even), see TODO in parse_content()
? relaying doesn't work for psyc clients (xmpp: in particular)
works for localhost clients
@@ -1601,26 +1576,14 @@ RELAYING
but some of the old stuff does.. how do we find a proper solution?
== DOCUMENTATION ISSUES ================================================
-ich habs.. jede datei definiert am anfang in welche kategorie sie gehört..
+* ich habs.. jede datei definiert am anfang in welche kategorie sie gehört..
"library" "user" "server" "language" etc... und jede funktion kann sich
dann mit /** library: this stuff.. */ woanders einordnen.. jetzt brauchen wir
ne dokuware die sowas kann, und jemand der die dokummentare reinschreibt..
-> doxygen-1.3.9.1.src.tar.gz (2649K)... definitiv kein aufwand, sowas...
== RELEASE ANNOUNCEMENT ================================================
-REDIRECT: http://about.psyc.eu/Release_Announcement .. außerdem:
-
-? Netzeitung.de könnten man beschwatzen schonmal nen echten psyc feed
- zu liefern.. am besten wenn sie einen stabilen 0.99 server installieren.
- oder sie führen einfach dpa2psyc aus.
-
-? http://en.wikipedia.org/wiki/Chat und ff. strotzen vor Fehlern..
- erbarmt sich jemand? und ausserdem.. http://en.wikipedia.org/wiki/PSYC
- man kann sich ja an http://de.wikipedia.org/wiki/PSYC orientieren :)
-
-- "CSpace could be the 7th, component of the open office suite, see the
- discussion on the mailinglist of Open office developers for July 2006"
- they must be kidding!!!!
+* REDIRECT: http://about.psyc.eu/Release_Announcement
== COMPETITION =========================================================
+ man könnte die kollegen bitten gemäß forschertradition unter "other
@@ -1659,7 +1622,7 @@ http://freshmeat.net/projects/boo/
mixgerät aus active, server und circuit erstmal ein temporäres newct.c machen
________________________________________________________________________
-UNDER CONSTRUCTION: (offene baustellen im LPC code)
+== UNDER CONSTRUCTION: (offene baustellen im LPC code) =================
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- file transfers between local jabber clients
- file transfers between jabber clients and gateways
@@ -1758,7 +1721,7 @@ das sieht doof aus.. gehts auch besser? hmm
+ dns_rresolve should panic when discovering fake PTRs and suchlike
blacklist_report() ? :)
-SHOW STATUS?
+> SHOW STATUS?
? is the following stuff superceded by DECENTRALIZED STATE?
? _status_flags aus der auswahl _members _topic _configuration und
_limit_history bei _request_enter mitgeben, damit showStatus dann die
@@ -1770,6 +1733,7 @@ SHOW STATUS?
same way
+ "/set verbose on" gibt (unter anderem) mehr statuskram beim einloggen aus..
+>>>
? filter + /msg: auto tmp-friend status ?
hierzu müsste man wohl einen status "bekannter" in ppl einfügen
@@ -1814,7 +1778,7 @@ SHOW STATUS?
- psyctext() hängt sich auf wenn ein [ nicht wieder mit ] geschlossen wird
-SPAM / FLOOD CONTROL
+> SPAM / FLOOD CONTROL
+ connect flood protection (against icaruz from XX.XX.XX.XX)
1. introduce #define MAX_CONNECTIONS_FROM_ONE_IP
2. warn admins via monitor when MAX_CONNECTIONS_FROM_ONE_IP * 70%
@@ -1932,7 +1896,7 @@ ________________________________________________________________________
psyc textdb directory tree..
? user.c puts host, not ip, into v("ip") - makes sense?
-FROM MEDITATION ON PDEV:
+> FROM MEDITATION ON PDEV:
+ elaborate availability/presence features, even before "logon"
? do we want var change notifications on psyc parse level so that
the protocol does not need to issue messages for every minor event?
@@ -1942,6 +1906,9 @@ FROM MEDITATION ON PDEV:
+ unls wie psycbiff melden sich für bestimmte methodenfamilien an
== REAL PSYC ROUTING ===================================================
+? wie unterscheide ich member und subroute?
+falls du es überhaupt brauchst daran, dass subroute seine members definiert.
+
=_members sepp frida alex
+_members p2puser
+_members uwe anton fippo
@@ -1954,10 +1921,8 @@ aber casten braucht man nur an die router, die übrig bleiben.
und der p2puser ist ein sonderfall: er will von allen direkt angenachrichtet
werden ohne router dazwischen..
--> wie unterscheide ich member und subroute?
-falls du es überhaupt brauchst daran, dass subroute seine members definiert.
-
== P2P ROUTING =========================================================
+* Kademlia
Möglicherweise interessant ist eine P2P-artige Form von Routing, basierend
auf Kademlia ( siehe http://de.wikipedia.org/wiki/Kademlia ) + Auth
via Public Keys. Man sendet Nachrichten an einen (gehashten ?) Publickey
@@ -1979,7 +1944,7 @@ schaffen oder muss man freigiebiger mit der Information sein?
TODO: edit-funktionen, etc
-> oder gleich den eingebauten zeileneditor ed() von lpmud verwenden
(telnet only)
-threads:
+> threads:
+ jeder Message noch eine threadID geben (in-reply-to):
man numeriert die msgs durch und ein reply trägt noch den _tag von
seinem vorgänger.. oder so...?
@@ -2005,7 +1970,7 @@ threads:
? psyc clients as persistent java applets (ie channel, signed ns applet)
-TIME - rewrite of all time outputs:
+> TIME - rewrite of all time outputs:
+ handle timezones
+ introduce global psyc time?
? seconds since 2000-01-01 0:0 GMT or -- still lets you say "in an hour"
@@ -2014,6 +1979,7 @@ TIME - rewrite of all time outputs:
too bad it cant be done in perl
+ add date/weekday for /log messages older than 24h
+>>>
? finish up /connect with password
? wenn man per psyc ne message an xx schickt, gilt der anschliessend
@@ -2122,7 +2088,7 @@ thoughts from buddy-heggy.txt:
- logged_on should be gone
________________________________________________________________________
-DRIVER TODO:
+> DRIVER TODO:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
* moved to psyclpc/TODO file
@@ -2130,7 +2096,7 @@ DRIVER TODO:
- unless (checkVar(&key, &value)) return;
- psyc/library
________________________________________________________________________
-PERLPSYC TODO:
+> PERLPSYC TODO:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- FORK
- negotiation muss sowohl blocking als auch nonblocking funktionieren. per
@@ -2141,7 +2107,7 @@ PERLPSYC TODO:
konfigurieren können. md5 überprüft dann die legitimität der nachricht.
oder wir implementieren das auf serverconnect-ebene.. hmmm
-sonst noch evtl anguckenswert
+> sonst noch evtl anguckenswert
+ http://search.cpan.org/~sparsons/Net-Dev-Syslog-0.8.0/Syslog.pm
+ http://freshmeat.net/projects/yeemp/ GPG over SSL, UTF8 etc.
? http://freshmeat.net/projects/xchatosd/ X11 OSD hihi
@@ -2156,14 +2122,14 @@ sonst noch evtl anguckenswert
- checkout the fileshare stuff in perlpsyc/bin/
________________________________________________________________________
-PSYC SPEC TODO:
+> PSYC SPEC TODO:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
+ option to receive rendered messages instead of templates ( as in ve:w() )
+ option to not receive templates for standard messages?
+ standardized way to select language?
________________________________________________________________________
-MISCELLANEOUS STUFF:
+> MISCELLANEOUS STUFF:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
? irc-notify suckt, aber als reines client-interface kann man es doch
eigentlich erlauben? ison polling nervt, kann man hoffentlich vermeiden,
@@ -2191,10 +2157,11 @@ Similar Projexx:
http://freshmeat.net/projects/ymsgr/
== HINTS: Multicast (see also COMPETITION) =============================
+? reliable multicast library?
From: Gerd Flaig
-> Was brauchen wir in der Praxis also? Eine reliable Multicast
-> Implementation in PSYC einbinden (müsste ja heutzutage ne fertige
-> Library sein zum Aufrufen), [..]
+ > Was brauchen wir in der Praxis also? Eine reliable Multicast
+ > Implementation in PSYC einbinden (müsste ja heutzutage ne fertige
+ > Library sein zum Aufrufen), [..]
nach so etwas suche ich schon eine ganze Weile, habe aber bisher nur
im OCaml-Umfeld eine Implementierung gefunden (genaue URL habe ich
nicht mehr, irgendwo unter http://caml.inria.fr/), die aber wohl noch
@@ -2205,27 +2172,19 @@ stabile Bibliothek entsteht.
wer kann ich das mal ansehen?
http://www.junglemonkey.net/emcast/
-und ausserdem... erste gedanken an multicasting bei den jabbers:
- http://www.jabber.org/jeps/jep-0033.html
-es geht erstmal nur um eine syntax zwischen client und server
-was der server dann tut ist weiterhin unicast... oder?
-neuerdings erste gedanken bei den jabbers an raeume, die raeume joinen,
-was eine rudimentaere Form von effizenter Verteilung sein mag, jedoch
-ohne conferencing control
-
== DOC: HOW TO PORT TO MUD =============================================
-> #define MUD
-> #undef _flag_enable_routing_UDP will force psyc to use tcp only
-> #define NO_EXTERNAL_LOGINS if you want
-> #define CONFIG_PATH to where your /local/ is
-> #define TEXT_PATH to where you want to put /default/*
+* #define MUD
+ > #undef _flag_enable_routing_UDP will force psyc to use tcp only
+ > #define NO_EXTERNAL_LOGINS if you want
+ > #define CONFIG_PATH to where your /local/ is
+ > #define TEXT_PATH to where you want to put /default/*
if you care to define SERVER_HOST, please do so in local.h, not in net.h
same goes for DEFAULT_USER_OBJECT. if you need to fake the library
#include "/net/gl-psyc/simulated.h" in your local.h
________________________________________________________________________
-LOOKING INTO PIKE:
+> LOOKING INTO PIKE:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
irc bot in pike: http://caudiumforge.net/anoncvs.rxml
http://cvsweb.caudiumforge.net/cgi-bin/cvsweb.cgi/sugor/?cvsroot=sugor
diff --git a/bin/todo2csv b/bin/todo2csv
new file mode 100755
index 0000000..e8c58dd
--- /dev/null
+++ b/bin/todo2csv
@@ -0,0 +1,100 @@
+#!/usr/bin/perl
+# parse the historic CHANGESTODO.txt file and produce
+# a csv according to csv2trac format:
+#
+# 12 Each line in the CSV file needs to have the following entries
+# 13 type text -- the ticket purpose
+# 14 time integer -- the time it was created
+# 15 changetime integer
+# 16 component text
+# 17 severity text
+# 18 priority text
+# 19 owner text -- who is this ticket assigned to
+# 20 reporter text
+# 21 cc text -- email addresses to notify
+# 22 url text -- url related to this ticket
+# 23 version text --
+# 24 milestone text --
+# 25 status text
+# 26 resolution text
+# 27 summary text -- one-line summary
+# 28 description text -- problem description (long)
+# 29 keywords text
+
+use locale;
+
+my $changestodofile = shift or die 'Please provide path to CHANGESTODO.txt';
+open(I, "/usr/bin/expand $changestodofile |")
+ or die "Failed to /usr/bin/expand $changestodofile";
+
+print < 'defect',
+ '+' => 'enhancement',
+ '*' => 'task',
+ '?' => 'question', # needs to be added by trac-admin
+);
+
+sub output {
+ return unless $first;
+ my $t = $types{$type};
+ die 'no type' unless $t;
+ $summary = ($first && $sub) ? "$sub: $first" : ($first || $sub);
+ die 'expand failed' if $summary =~ /\t/ or $text =~ /\t/;
+# $summary =~ s/\t/ /gm;
+# $text =~ s/\t/ /gm;
+ $text =~ s/\n/\\n/gm;
+ my $mytime = 1234567890;
+ print <; # skip first line
+while () {
+ next if /^[_¯]+$/;
+ next if /^\|/;
+ if ( /^== (.+) =====/ ) {
+ &output;
+ $headline = $1;
+ undef $sub;
+ next;
+ }
+ if ( /^(-|\+|\?|\*) (.+)$/ ) {
+ &output;
+ $type = $1;
+ $first = "$1 $2";
+ next;
+ }
+ if ( /^\> (.+)$/ ) {
+ &output;
+ $sub = $1;
+# print STDERR $_;
+ next;
+ }
+ if ( /^\>\>\>/ ) {
+ &output;
+ undef $sub;
+ next;
+ }
+ if ( /^=+$/ ) {
+ &output;
+ exit;
+ }
+# if ( /^ (.+)$/ or /^\t(.+)$/ ) {
+# $text .= $1;
+# next;
+# }
+ $text .= $_;
+# print STDERR;
+}
+
diff --git a/world/net/jabber/gateway.c b/world/net/jabber/gateway.c
index 7cc3565..828c330 100644
--- a/world/net/jabber/gateway.c
+++ b/world/net/jabber/gateway.c
@@ -340,7 +340,7 @@ jabberMsg(XMLNode node) {
if (node["/connection-timeout"]) {
/* ignore it */
} else if (node["/system-shutdown"]) {
- P1(("%O: counterpart is doing a system shutdown", ME))
+ P1(("%O: counterpart is doing a system shutdown\n", ME))
/* ignore it */
} else {
P0(("stream error in %O: %O\n", ME, node))
diff --git a/world/net/jabber/mixin_parse.c b/world/net/jabber/mixin_parse.c
index 12e6233..6a63504 100644
--- a/world/net/jabber/mixin_parse.c
+++ b/world/net/jabber/mixin_parse.c
@@ -185,6 +185,9 @@ jabberMsg(XMLNode node, mixed origin, mixed *su, array(mixed) tu) {
}
PT(("input¹ %O\n", body))
if (stringp(body) && strlen(body)) {
+#ifdef BETA
+ if (body[0] == '\n') body = body[1..];
+#endif
if (body[0] == cmdchar) {
// '/ /usr' notation is a USER_PROGRAM feature
// so we have to redo it here
From 2a6e327d1f641702b261994d515a96f998a8a6e1 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Thu, 26 Nov 2009 00:35:44 +0100
Subject: [PATCH 11/15] no, i mean THIS bugtracker
---
CHANGESTODO | 14 +++++++++++---
bin/todo2csv | 38 +++++++++++++++++++-------------------
world/net/include/peers.h | 3 ++-
world/net/irc/user.c | 9 ++++++++-
4 files changed, 40 insertions(+), 24 deletions(-)
diff --git a/CHANGESTODO b/CHANGESTODO
index 8408a2a..1660500 100644
--- a/CHANGESTODO
+++ b/CHANGESTODO
@@ -24,6 +24,8 @@ ________________________________________________________________________
________________________________________________________________________
== currently being inspected ===========================================
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
+- install.sh/configure doesn't *ensure* libidn is available
+
- newbies are allowed to open new owned rooms
fippo sagt: ergo brauchst du nen exit-hook der owner löscht wenn der n00b-owner aus dem raum geht
@@ -478,13 +480,15 @@ ________________________________________________________________________
C:xmpp:euirc · euirc does not resolve
In BuHa fragt el_presidente: was soll da passieren?
-- improve handling of "Minusport" outgoing stuff:
- reject and handle _failures
-? suspend flag on error? like this: when you receive errors, that a user or a
+> ERROR HANDLING
+- reject and handle _failures
+ suspend flag on error? like this: when you receive errors, that a user or a
host could not be reached, then the castmsg'ing entity could flag this
candidate as 'suspended' or 'temporarily unreachable' - and automatically
change this status with the first sign of life from that entity or server.
this would save friendship status and room presence across downtimes.
+ : added PPL_NOTIFY_INACTIVE to peers.h but actually this needs a more
+ generic solution for all contexts. see krasser rewrite.
? uni.c kümmert sich nicht um castmsg(), weswegen presence zurecht immer
zur UNI gehen, aber leider auch raumcasts. im falle von jabber UNRs
@@ -769,6 +773,10 @@ ________________________________________________________________________
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- display twitter notices somehow
+- when 'localhost' is chosen as server name, psyced will append invalid
+ dot and space in jabber output:
+ test@localhost. /(null)
+
? XMPP: connecting to psyced.org with psi pops up a profile window everytime
? XMPP: first reply to a stranger's remote psyc message did not show up in psi
? neulich wurde 'stanly' beim runterfahren von psi nicht aus dem MUC genommen.
diff --git a/bin/todo2csv b/bin/todo2csv
index e8c58dd..5d28f6b 100755
--- a/bin/todo2csv
+++ b/bin/todo2csv
@@ -1,25 +1,25 @@
#!/usr/bin/perl
# parse the historic CHANGESTODO.txt file and produce
-# a csv according to csv2trac format:
+# a "tab seperated values" CSV according to csv2trac format:
#
-# 12 Each line in the CSV file needs to have the following entries
-# 13 type text -- the ticket purpose
-# 14 time integer -- the time it was created
-# 15 changetime integer
-# 16 component text
-# 17 severity text
-# 18 priority text
-# 19 owner text -- who is this ticket assigned to
-# 20 reporter text
-# 21 cc text -- email addresses to notify
-# 22 url text -- url related to this ticket
-# 23 version text --
-# 24 milestone text --
-# 25 status text
-# 26 resolution text
-# 27 summary text -- one-line summary
-# 28 description text -- problem description (long)
-# 29 keywords text
+# Each line in the CSV file needs to have the following entries
+# type text -- the ticket purpose
+# time integer -- the time it was created
+# changetime integer
+# component text
+# severity text
+# priority text
+# owner text -- who is this ticket assigned to
+# reporter text
+# cc text -- email addresses to notify
+# url text -- url related to this ticket
+# version text --
+# milestone text --
+# status text
+# resolution text
+# summary text -- one-line summary
+# description text -- problem description (long)
+# keywords text
use locale;
diff --git a/world/net/include/peers.h b/world/net/include/peers.h
index e80e9c5..1af43a3 100644
--- a/world/net/include/peers.h
+++ b/world/net/include/peers.h
@@ -48,7 +48,8 @@
#define PPL_NOTIFY_DEFAULT PPL_NOTIFY_IMMEDIATE
#define PPL_NOTIFY_DELAYED '6'
#define PPL_NOTIFY_DELAYED_MORE '4'
-#define PPL_NOTIFY_FRIEND PPL_NOTIFY_DELAYED_MORE
+#define PPL_NOTIFY_INACTIVE '3' // delivery returned error
+#define PPL_NOTIFY_FRIEND PPL_NOTIFY_INACTIVE
#define PPL_NOTIFY_MUTE '2'
#define PPL_NOTIFY_PENDING '1' // _outgoing friendship request sent
#define PPL_NOTIFY_OFFERED '0' // _incoming friendship req received
diff --git a/world/net/irc/user.c b/world/net/irc/user.c
index 862f06d..275cd1c 100644
--- a/world/net/irc/user.c
+++ b/world/net/irc/user.c
@@ -846,7 +846,14 @@ logon() {
// but i guess it is indeed appropriate to make it clear how very much
// different we are from a regular irc server.
//
- reply(RPL_ISUPPORT, "PSYC=.99 ALIAS AVAILABILITY FRIEND HISTORY MOOD SHOUT SSET STATUS SUBSCRIBE THREAD TRUST PREFIX= CHANTYPES=# CHANMODES= NICKLEN="+ (string)MAX_UNIFORM_LEN +" CHANNELLEN="+ (string)MAX_UNIFORM_LEN +" CASEMAPPING=ascii TOPICLEN=4404 KICKLEN=4404 AWAYLEN=4404 MAXTARGETS=1 CHARSET="+ (v("charset")||SYSTEM_CHARSET) +" NETWORK=" SERVER_HOST " CTCP=PRESENCE,TS UNIFORMS=psyc,xmpp :are supported by this server");
+ // reduced TOPICLEN etc from 4404 to 444 because of the 512 limit
+ // which some legacy clients really require. in fact, since we are
+ // very lax on uniform length here, it could be possible to attack
+ // irc clients in a psyc room using suitably long uniforms etc.
+ // solutions are either a uniform length limit in chatrooms or
+ // forced autoalias for ircers.
+ //
+ reply(RPL_ISUPPORT, "PSYC=.99 ALIAS AVAILABILITY FRIEND HISTORY MOOD SHOUT SSET STATUS SUBSCRIBE THREAD TRUST PREFIX= CHANTYPES=# CHANMODES= NICKLEN="+ (string)MAX_UNIFORM_LEN +" CHANNELLEN="+ (string)MAX_UNIFORM_LEN +" CASEMAPPING=ascii TOPICLEN=444 KICKLEN=444 AWAYLEN=444 MAXTARGETS=1 CHARSET="+ (v("charset")||SYSTEM_CHARSET) +" NETWORK=" SERVER_HOST " CTCP=PRESENCE,TS UNIFORMS=psyc,xmpp :are supported by this server");
//
// MAXCHANNELS vs CHANLIMIT - we currently only have a limit on subs
// STD? what the hell is STD?
From f57f84e28de7a6c6693d6feca6470841e982be1e Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Fri, 27 Nov 2009 17:02:39 +0100
Subject: [PATCH 12/15] fix for /detach
---
world/net/psyc/parse.i | 2 +-
world/net/spyc/parse.c | 2 +-
world/net/usercmd.i | 5 ++++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/world/net/psyc/parse.i b/world/net/psyc/parse.i
index 186b738..7a851b1 100644
--- a/world/net/psyc/parse.i
+++ b/world/net/psyc/parse.i
@@ -1163,7 +1163,7 @@ vamixed startParse(string a) {
else {
PT(("PSYC startParse got %O from %O\n", a, query_ip_number()))
croak("_error_syntax_initialization",
- "The protocol begins with a dot on a line by itself.");
+ "The old protocol begins with a dot on a line by itself.");
// experiencing a loop here, because some implementations
// try immediate reconnect. idea: in most places where we
// QUIT we should put the tcp link on hold instead, and
diff --git a/world/net/spyc/parse.c b/world/net/spyc/parse.c
index d33422f..e4972dc 100644
--- a/world/net/spyc/parse.c
+++ b/world/net/spyc/parse.c
@@ -360,7 +360,7 @@ void step() {
step();
} else {
croak("_error_syntax_initialization",
- "The protocol begins with a pipe and a line feed.");
+ "The new protocol begins with a pipe and a line feed.");
}
break;
default: // uhm... if we ever get here this is the programmers fault
diff --git a/world/net/usercmd.i b/world/net/usercmd.i
index 794994c..bffc9e7 100644
--- a/world/net/usercmd.i
+++ b/world/net/usercmd.i
@@ -1068,7 +1068,10 @@ cmd(a, args, dest, command) {
// now you have to declare yourself offline manually
// no you don't. if availability isn't offline the
// disconnected() handler will clean you out!
- // fall thru
+ // ok let's do it manually.. see if we get in trouble later.
+ availability = AVAILABILITY_OFFLINE;
+ // yes v("availability") is retained.. maybe useful later
+ return 1;
case "offline":
announce(AVAILABILITY_OFFLINE, 1, 1, ARGS(1));
return 1;
From 72542a92d130390b057b264a99041c1b9aeae9ca Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Fri, 27 Nov 2009 21:38:41 +0100
Subject: [PATCH 13/15] _degree fix?
---
world/net/psyc/parse.i | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/world/net/psyc/parse.i b/world/net/psyc/parse.i
index 7a851b1..7f149be 100644
--- a/world/net/psyc/parse.i
+++ b/world/net/psyc/parse.i
@@ -191,12 +191,14 @@ private int conclude() {
// to also store the list in pvars, but since i'm generally
// doubtful if this is the right way to go, i'll leave it to
// a later day.. TODO
- // hooray, we get to check some variable families for sanity
+ // hooray, we get to check some var type families for sanity
} else if (abbrev("_degree", lastvar)) {
mixed t = cvars[lastvar];
- // allow for unset degree '-'
- if (!(intp(t) && t>=0) || (t != "-" &&
- !sscanf(t, "%1d", cvars[lastvar]))) {
+ // allow for unset degree '-' ? not unless we know what for.
+ if ((intp(t) && t>=0) || sscanf(t, "%1d", cvars[lastvar])) {
+ // accept
+ if (mod != ":") pvars[lastvar] = cvars[lastvar];
+ } else {
reject++;
P1(("%O failed to parse %O: %O\n", ME, lastvar, t))
croak("_error_type_degree",
@@ -205,7 +207,6 @@ private int conclude() {
m_delete(cvars, lastvar);
//if (mod != ":") m_delete(pvars, lastvar);
}
- else if (mod != ":") pvars[lastvar] = cvars[lastvar];
} else if (abbrev("_list", lastvar)) { // _tab
// we only get here if the _list has one or zero members
#ifdef PARANOID
From dbee641b882da827434437520eb62d612852c381 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Wed, 9 Dec 2009 01:13:05 +0100
Subject: [PATCH 14/15] babeldos updated to new API
---
place/babeldos.i | 33 +++++++++++++++++++++------------
world/net/library.i | 7 ++++++-
world/net/library/share.c | 8 ++++----
3 files changed, 31 insertions(+), 17 deletions(-)
diff --git a/place/babeldos.i b/place/babeldos.i
index 6c538ae..ad6d649 100644
--- a/place/babeldos.i
+++ b/place/babeldos.i
@@ -10,13 +10,14 @@
#include
#include
+#include
#define INHERIT_CONNECT
start();
babel();
#define CRESET start();
-inherit "net/connect";
+inherit NET_PATH "connect";
#include
#define emit binary_message
@@ -29,7 +30,7 @@ start() {
qInit(ME, 1000, 100);
unless (has_con || is_con) {
is_con = 1;
- call_out(#'connect, 0, "babelfish.altavista.com", 80);
+ call_out(#'connect, 0, "babelfish.yahoo.com", 80);
}
}
@@ -37,21 +38,24 @@ escape(data) {
return regreplace(data, "[^a-zA-Z0-9]", (: return sprintf("%%%x", $1[0]); :), 1);
}
-disconnect() {
+disconnected() {
+ string k;
+
+//efine FMT "%~s
%s
%~s"
+#define FMT "%~s%~s"
+
has_con = 0;
+ P0(("%O received %O bytes of buffer for %O\n", ME, sizeof(buffer), current))
switch (pointerp(current) ? current[0] : "") {
- string k;
case TRANSLATION:
- if (sscanf(buffer, "%~s
%s
%~s", k)) {
- krank = k;
- }
+ if (sscanf(buffer, FMT, k)) krank = k;
+ else krank = "und es geschah ihr als sei es von der ferne";
#ifdef TRANSLATION2
babel(TRANSLATION2, current[1], current[2], krank, current[4]);
break;
case TRANSLATION2:
- if (sscanf(buffer, "%~s
%s
%~s", k)) {
- krank = k;
- }
+ if (sscanf(buffer, FMT, k)) krank = k;
+ else krank = "und sie sah fern als sei es ein geschehen";
#endif
::msg(current[1], current[2], replace(krank, """, "\""), current[4]);
default:
@@ -103,8 +107,13 @@ babel(mode, source, mc, data, mapping vars) {
buffer = "";
krank = 0;
current = ({ mode, source, mc, data, vars });
- emit("GET /tr?lp=" + mode + "&urltext=" + escape(data) + " HTTP/1.1\r\n"
- "Host: babelfish.altavista.com\r\n\r\n");
+ // old API
+// emit("GET /tr?lp=" + mode + "&urltext=" + escape(data) + " HTTP/1.1\r\n"
+// "Host: babelfish.altavista.com\r\n\r\n");
+ // new API
+ emit("GET /translate_txt?ei=UTF-8&doit=done&fr=bf-res&intl=1&lp="+
+ mode +"&tt=urltext&trtext="+
+ escape(data) +" HTTP/1.1\r\nHost: babelfish.yahoo.com\r\n\r\n");
}
msg(source, mc, data, mapping vars) {
diff --git a/world/net/library.i b/world/net/library.i
index d04dcce..3ef9933 100644
--- a/world/net/library.i
+++ b/world/net/library.i
@@ -794,7 +794,12 @@ varargs mixed sendmsg(mixed target, string mc, mixed data, vamapping vars,
showingLog, source, u);
#endif
case 0:
-#ifdef DEVELOPMENT
+#if 0 //def DEVELOPMENT
+ // we get here when doing remote messaging
+ // in xmpp.. and in fact, in net/jabber we
+ // don't *know* which scheme needs to be
+ // used.
+ //
raise_error("scheme 0 is a bug\n");
//
// TODO: we had this error, and maybe it's
diff --git a/world/net/library/share.c b/world/net/library/share.c
index a3845bb..195be99 100644
--- a/world/net/library/share.c
+++ b/world/net/library/share.c
@@ -24,11 +24,11 @@ volatile mapping share = ([
#ifdef JABBER_PATH
# ifndef _flag_disable_module_presence
"jabber2avail": ([
- 0 : AVAILABILITY_HERE,
"chat" : AVAILABILITY_TALKATIVE,
- "dnd" : AVAILABILITY_BUSY,
- "away" : AVAILABILITY_DO_NOT_DISTURB,
- "xa" : AVAILABILITY_AWAY
+ 0 : AVAILABILITY_HERE,
+ "dnd" : AVAILABILITY_BUSY, // dnd?
+ "away" : AVAILABILITY_DO_NOT_DISTURB, // nearby?
+ "xa" : AVAILABILITY_AWAY // "not available"
]),
// map to http://www.jabber.org/jeps/jep-0107.html although that
// is more like good ole mud feelings
From fa20b9aa265e9b429ea24b6b62b0721b18a99811 Mon Sep 17 00:00:00 2001
From: "psyc://psyced.org/~lynX" <@>
Date: Wed, 9 Dec 2009 01:16:08 +0100
Subject: [PATCH 15/15] realtime translation from german to english
---
place/de_en.c | 8 ++++++++
1 file changed, 8 insertions(+)
create mode 100644 place/de_en.c
diff --git a/place/de_en.c b/place/de_en.c
new file mode 100644
index 0000000..6028949
--- /dev/null
+++ b/place/de_en.c
@@ -0,0 +1,8 @@
+#define NAME "de_en"
+#define TRANSLATION "de_en"
+
+#ifdef ADMINISTRATORS
+# define PLACE_OWNED ADMINISTRATORS
+#endif
+
+#include "babeldos.i"