From 1b9b468ecf109512f223ffb78f15f3f56a6a4793 Mon Sep 17 00:00:00 2001 From: "psyc://psyced.org/~lynX" <@> Date: Sat, 7 Mar 2009 17:39:25 +0100 Subject: [PATCH] _amount_users_loaded --- CHANGESTODO | 130 ++++++++++++++------------------ world/default/de/plain.textdb | 4 +- world/default/en/irc.textdb | 2 +- world/default/en/plain.textdb | 3 + world/default/it/plain.textdb | 2 +- world/net/jabber/mixin_render.c | 5 +- world/net/person.c | 2 +- world/net/root.c | 18 ++++- world/net/user.c | 4 +- world/net/usercmd.i | 5 +- 10 files changed, 85 insertions(+), 90 deletions(-) diff --git a/CHANGESTODO b/CHANGESTODO index 5931efc..27a17a2 100644 --- a/CHANGESTODO +++ b/CHANGESTODO @@ -13,62 +13,6 @@ ________________________________________________________________________ ________________________________________________________________________ == currently being inspected =========================================== ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ -- remote IRC place does not send names listing on /join -- remote IRC /part shows no reaction at first attempt - +++ not limited to IRC!! thx marenz - -- XMPP: first reply to a stranger's remote psyc message did not show up in psi - -- IRC shows "*** k kindly asks for your friendship." for remote - friendship requests. eh! where's the uniform!? - -- remote /topic shows wrong nick (abolish _nick and this problem disappears) - -- /m freenode:symlynx hey - Sorry, _message_private is not supported by the IRC gateway. - huh? wasn't that once the point to make them? debug... - -- tjgillies ponders: connecting to psyced.org with psi pops up a - profile window everytime - -- 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.. -- google talk also makes funny errors, maybe because of the '*' - /me asks: you see me? - - /me asks: you see me? - - - - - -- spam by unregistered users: limit unregistered users to 1 per minute for now? - or force them to do web-based registration? or even.. trustee-based? - it's the real thing.....! - -? 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 - -- filter strangers is off by default, but we still seem to get a warning -+ we should put _trustee into messages to strangers, so we can talk with - people who we have friends in common with, by default. *TRUST* -? in gui clients this could be a menu option in a buddy list: - "contact a common friend" .. and of course when /surf'ing - -? is it a good idea to use SIGS in user:cmd, too? not sure!! - -- experimental rename fails sometimes: - Attempt to rename to existing object '~nautilutz' - possible fix: separate user identity from user access interface (see below) - -- REGISTERED_USERS_ONLY does not behave properly on IRC port - (see also NO_NEWBIES ... clean up and rename?) - -? tg reports inconsistent display of availability states in friend contextes - so far unable to reproduce ________________________________________________________________________ == psyced 1.0 ========================================================== ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ @@ -134,6 +78,10 @@ AUTOALIASES & ALIASES FOR PLACES or we should look at presence/subscribe integration first (where the distinction of users and rooms becomes less relevant). ! whenever a _context is output, its nick will be auto-added to raliases +problems that should disappear when we move away from _nick's: +- IRC shows "*** k kindly asks for your friendship." for remote + friendship requests. eh! where's the uniform!? +- remote /topic shows wrong nick PRESENCE STATUS + all _status_person need to be upgraded to _status_presence with @@ -192,6 +140,23 @@ see also http://about.psyc.eu/subscription + FRIEND_ECHO ... send echo for /fr type commands from recipient not from own UNI (see #ifdef FRIEND_ECHO) ... or just rewrite it all into context subscription!! + +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?) + +? is it a good idea to use SIGS in user:cmd, too? not sure!! + +- filter strangers is off by default, but we still seem to get a warning ++ we should put _trustee into messages to strangers, so we can talk with + people who we have friends in common with, by default. *TRUST* +? in gui clients this could be a menu option in a buddy list: + "contact a common friend" .. and of course when /surf'ing ________________________________________________________________________ == TOP DELEGATES for 1.0 =============================================== ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ @@ -349,15 +314,6 @@ ________________________________________________________________________ ? apply more TAGGING (tagged callbacks also avoid the monster switches) - /lusers shows: There are 441 users on this server. - no, this is not a number from smtp spam links. -- either we keep an extra counter for people who are _really_ online - or we avoid summoning people just to hand them out a _notice_presence. - the latter makes sense really. -- also, offline users are never unloaded apparently, so the problem is - somewhere in the reset() or clean_up() procedure. we first need to - unload them, then we can look into not loading them in the first place - CIRCUITRY - _request_circuit_shutdown isnt issued or doesnt arrive or is the disconnected-detection buggy? @@ -538,12 +494,14 @@ JYNX möchte mit Dir Freundschaft schließen. - falls /set entersilent off so erhalten bleibt, dokumentieren PROGRAMMABLE USER IDENTIFICATIONS & MULTIPLE CLIENT INTERFACES -+ fippo insists on the uni/client split.. +- experimental rename fails sometimes: + Attempt to rename to existing object '~nautilutz' + possible fix: separate user identity from user access interface ++ fippo insists on the uni/client split and saga has been asking for years.. = separate user identity from user access interface - (and saga has been asking for years) .. read also 'person.gen' below -- this would probably also solve the issue with the ~nick object name plan + but it is a messy piece of work (i tried to do it and stashed the branch) + and it allows for multiple jabber resources, of course - (but it means we need to actively support UNRs for UNLs) + (but it means we need to actively support UNRs for UNLs in entities) ? one day we could have a person.gen to create all sorts of user objects from, but it sure is confusing that each of them still needs to be able to call upon the various protocols.. this may either need a @@ -745,6 +703,27 @@ remoteMUC: ________________________________________________________________________ == JABBER CLIENT ISSUES (...experimental is justified...) ============== ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ +? 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. + als er miranda hochfuhr war er bei uns immernoch im MUC und bekam die + MUC meldungen. ob der fehler bei psi oder uns liegt, k.A. + ... is this still happening with the new fixes? + +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.. +- google talk also makes funny errors, maybe because of the '*' + /me asks: you see me? + + /me asks: you see me? + + + + +- 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) @@ -869,10 +848,6 @@ ________________________________________________________________________ - iChat sends /me with a newline after and before the /me .. it doesn't get seen as /me, but it doesn't get output either!? -? neulich wurde 'stanly' beim runterfahren von psi nicht aus dem MUC genommen. - als er miranda hochfuhr war er bei uns immernoch im MUC und bekam die - MUC meldungen. ob der fehler bei psi oder uns liegt, k.A. - ? wenn wir psyc die eintragung von beliebigen weiteren identifications und locations pro user beibringen, könnte man dann diesen user via jabber transports in seine im-logins einloggen? @@ -1416,6 +1391,10 @@ mapping rvars msg(source, mc, data, vars, rvars); ________________________________________________________________________ * GATEBOT / IRCGATE / etc ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ +- /m freenode:symlynx hey + Sorry, _message_private is not supported by the IRC gateway. + huh? wasn't that once the point to make them? debug... + - msg from irc to remote psyc user doesn't work: ERQ could not resolve "symlynX". (it tries to resolve the irc:nick) @@ -1745,7 +1724,7 @@ SHOW STATUS? - psyctext() hängt sich auf wenn ein [ nicht wieder mit ] geschlossen wird SPAM / FLOOD CONTROL -+ connect flood protection (against icaruz from pD9E3F294.dip.t-dialin.net) ++ 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% is reached @@ -1755,6 +1734,9 @@ SPAM / FLOOD CONTROL maximum number of connections per ipmask, defaulting to 0 6. maybe MAX_CONNECTIONS_FROM_ONE_IP can also be lowered interactively using "/block * 200" +- spam by unregistered users: limit unregistered users to 1 per minute for now? + or force them to do web-based registration? or even.. trustee-based? + it's the real thing.....! see also: http://about.psyc.eu/SPAM == FRIENDSNETS / FRIENDSHIP DEGREES / WEB OF TRUST TODO: =============== diff --git a/world/default/de/plain.textdb b/world/default/de/plain.textdb index 33a6226..937adb6 100644 --- a/world/default/de/plain.textdb +++ b/world/default/de/plain.textdb @@ -1543,8 +1543,8 @@ _status_version_agent _status_version |Version: [_nick] verwendet "[_version_description]" ([_version]). -_status_users -|Es sind [_amount_users] Nutzer auf diesem Server angemeldet. +_status_user_amount +|Es sind [_amount_users_loaded] Nutzer auf Server [_source] geladen. _status_friends |Anwesende Freunde: [_friends]. diff --git a/world/default/en/irc.textdb b/world/default/en/irc.textdb index 847b04b..7e673a6 100644 --- a/world/default/en/irc.textdb +++ b/world/default/en/irc.textdb @@ -366,4 +366,4 @@ _status_place_members_end_verbose |#315 [_INTERNAL_nick_me] #[_nick_place] :End of /WHO list. _status_user_amount -|#251 [_INTERNAL_nick_me] :There are [_amount_users_online] users on [_source]'s server +|#251 [_INTERNAL_nick_me] :{_status_user_amount} diff --git a/world/default/en/plain.textdb b/world/default/en/plain.textdb index 3d1f02d..dcdb5ba 100644 --- a/world/default/en/plain.textdb +++ b/world/default/en/plain.textdb @@ -1409,6 +1409,9 @@ _status_version_agent _status_version |Version: [_nick] is using "[_version_description]" ([_version]). +_status_user_amount +|There are [_amount_users_loaded] users loaded on server [_source]. + _notice_presence_here_talkative |Presence: [_nick] is willing to talk. [_description_presence] diff --git a/world/default/it/plain.textdb b/world/default/it/plain.textdb index 5da0abf..1e83d9b 100644 --- a/world/default/it/plain.textdb +++ b/world/default/it/plain.textdb @@ -956,7 +956,7 @@ _notice_friendship_removed_implied |Automatischerweise kündigt auch [_nick] Dir die Freundschaft. _status_user_amount -|[_amount_users_online] utenti sono connessi tramite questo server. +|[_amount_users_loaded] utenti caricati su [_source]. _status_friends |Anwesende Freunde: [_friends]. diff --git a/world/net/jabber/mixin_render.c b/world/net/jabber/mixin_render.c index 482aee4..79c1376 100644 --- a/world/net/jabber/mixin_render.c +++ b/world/net/jabber/mixin_render.c @@ -102,8 +102,9 @@ int msg(string source, string mc, string data, break; } } - return ({ $1, "_status_user_amount", - "There are [_amount_users] people online, [_amount_users_registered] accounts on this server.", + return ({ $1, "_status_user_amount", 0, + // generic formats shouldn't be hanging around in net/jabber...!? + // "There are [_amount_users_loaded] people loaded, [_amount_users_registered] accounts on this server.", $2 }); } else return ({ $1, "_error_request_users_amount", diff --git a/world/net/person.c b/world/net/person.c index 87ac0ca..475c091 100644 --- a/world/net/person.c +++ b/world/net/person.c @@ -1982,7 +1982,7 @@ case "_notice_presence_here_busy": t = v("locations")[0]; if (t && t != source) { // no psyctext rendering happening in this variant -# ifndef _flag_disable_circuit_proxy_multiplexing +# ifdef _flag_enable_circuit_proxy_multiplexing vars["_target_forward"] = t; # endif sendmsg(t, mc, data, vars, source); diff --git a/world/net/root.c b/world/net/root.c index fb5cdf2..8308c72 100644 --- a/world/net/root.c +++ b/world/net/root.c @@ -110,17 +110,27 @@ msg(source, mc, data, vars, showingLog, target) { case "_query_users_amount": // old, please remove case "_request_user_amount": # ifdef _flag_disable_query_amount_users_online - rv["_amount_users_online"] = -1; + rv["_amount_users_loaded"] = -1; # else - rv["_amount_users_online"] = amount_people(); + // this actually shows the number of loaded user entities + // which is higher than the actual number of users online + rv["_amount_users_loaded"] = amount_people(); # endif rv["_amount_users_registered"] = -1; // how to get this? // maybe read in the user directory so you have the amount of registered users. // i think it isn't anybody's business... // in the name of privacy we should be // giving out random numbers instead of -1.. ;) - sendmsg(source, "_status_user_amount", - "[_source] has [_amount_users_online] users online.", rv); + sendmsg(source, "_status_user_amount", 0, rv); + // ircds tell a lot of things in reply to /lusers: + // + // 251 x :There are 25079 listed and 22070 unlisted users on 38 servers + // 252 x 39 :flagged staff members + // 254 x 22434 :channels formed + // 255 x :I have 2180 clients and 0 servers + // 265 x :Current local users: 2180 Max: 2714 + // 266 x :Current global users: 47149 Max: 55541 + // 250 x :Highest connection count: 2715 (2714 clients) (228789 since server was (re)started) return 1; #endif // _flag_disable_query_server case "_error": diff --git a/world/net/user.c b/world/net/user.c index df97a10..e95d7fb 100644 --- a/world/net/user.c +++ b/world/net/user.c @@ -1338,7 +1338,7 @@ w(string mc, string data, mapping vars, mixed source, int showingLog) { #else # echo No LPC? Wow. Good luck! #endif -#ifndef _flag_disable_circuit_proxy_multiplexing +#ifdef _flag_enable_circuit_proxy_multiplexing // this is necessary when a single proxy is emulating // several clients for several users. to figure out // which context stuff is forwarded to which client @@ -1349,8 +1349,8 @@ w(string mc, string data, mapping vars, mixed source, int showingLog) { // for them instead of accepting forwards from each UNI vars["_target_forward"] = loc; // maybe this can be avoided when no _context is set...? -#endif P3(("%O user:w forwarding %O to %O\n", ME, mc, vars["_target_forward"])) +#endif sendmsg(loc, mc, nudata, vars); // PT(("PSYCW: %s -> %O (%O)\n", mc, loc, vars)) #if DEBUG > 1 diff --git a/world/net/usercmd.i b/world/net/usercmd.i index 097c273..6249eec 100644 --- a/world/net/usercmd.i +++ b/world/net/usercmd.i @@ -266,9 +266,8 @@ cmd(a, args, dest, command) { // erzeugen sollte.. no? ausserdem sind die vars und // das fmt unterschiedlich. und fast derselbe käse steht // nochmal in net/irc/common... TODO - w("_status_user_amount", - "There are [_amount_users] users on this server.", - ([ "_amount_users" : amount_people() ]) ); + w("_status_user_amount", 0, + ([ "_amount_users_loaded" : amount_people() ]) ); } #else if (sizeof(args) > 1 && is_formal(args[1])) t = args[1];