mirror of
https://github.com/ChronosX88/psyced.git
synced 2024-11-08 11:31:01 +00:00
stupid merge..
This commit is contained in:
commit
f47227d54d
246
CHANGESTODO
246
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,7 +24,7 @@ ________________________________________________________________________
|
||||
________________________________________________________________________
|
||||
== currently being inspected ===========================================
|
||||
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||
? /ve/TODO/leave-from-user
|
||||
- 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
|
||||
@ -69,6 +72,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 +98,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 +127,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 +147,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 +166,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 +182,7 @@ PRESENCE STATUS
|
||||
net/jabber/user#whojarr <message to='whojarr@example.org/Home' from='oops@example.org/irc' type='chat'><body>oops is a roving piker.</body></message>
|
||||
* 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 +208,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 +224,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 +311,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 +380,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
|
||||
@ -402,7 +413,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:
|
||||
@ -433,24 +444,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
|
||||
@ -461,6 +472,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?
|
||||
@ -470,13 +482,15 @@ FOLLOW INVITES
|
||||
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
|
||||
@ -494,7 +508,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
|
||||
@ -509,42 +523,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 <presence type="subscribe" from="oops@gmail.example" to="lynx@ve.example.com"/>
|
||||
« C:xmpp:gmail.com <presence to='oops@gmail.example' from='lynx@ve.example.com' type='subscribed'/>
|
||||
|
||||
|
||||
« C:xmpp:gmail.com <presence to='oops@gmail.com' from='lynx@ve.example.com'><x from='lynx@ve.example.com' stamp='20060314T21:21:47' xmlns='jabber:x:delay'/></presence>
|
||||
|
||||
..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.
|
||||
@ -581,7 +561,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
|
||||
@ -602,7 +582,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
|
||||
@ -622,7 +602,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
|
||||
@ -639,7 +619,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
|
||||
@ -662,7 +642,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
|
||||
@ -677,6 +657,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:
|
||||
@ -688,13 +669,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
|
||||
@ -724,7 +705,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.
|
||||
@ -748,7 +729,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
|
||||
@ -765,7 +746,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.. ;)
|
||||
@ -775,6 +756,7 @@ remoteMUC:
|
||||
or actually implement it? looks so stupid on telnet when typing <enter>
|
||||
... 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
|
||||
@ -791,6 +773,12 @@ remoteMUC:
|
||||
________________________________________________________________________
|
||||
== JABBER CLIENT ISSUES (...experimental is justified...) ==============
|
||||
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||
- display twitter notices somehow
|
||||
|
||||
- when 'localhost' is chosen as server name, psyced will append invalid
|
||||
dot and space in jabber output:
|
||||
<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><jid>test@localhost. /(null)</jid></bind>
|
||||
|
||||
? 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.
|
||||
@ -798,7 +786,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..
|
||||
@ -812,6 +800,7 @@ ASTERISK IN XMPP: UNIFORMS
|
||||
</message>
|
||||
- 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)
|
||||
@ -1234,7 +1223,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.
|
||||
@ -1250,6 +1239,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:
|
||||
@ -1293,7 +1283,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
|
||||
@ -1301,6 +1291,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
|
||||
@ -1407,14 +1398,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*
|
||||
@ -1441,18 +1424,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
|
||||
<fippo> man sollte dazu sagen, dass er danach gesagt hat, dass es ein
|
||||
@ -1482,7 +1465,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.
|
||||
@ -1588,7 +1571,7 @@ ________________________________________________________________________
|
||||
mobile phone, especially if you have permanent context subscriptions
|
||||
flowing into your log nonstop.
|
||||
|
||||
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
|
||||
@ -1608,26 +1591,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
|
||||
@ -1666,7 +1637,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
|
||||
@ -1765,7 +1736,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
|
||||
@ -1777,6 +1748,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
|
||||
|
||||
@ -1821,7 +1793,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%
|
||||
@ -1939,7 +1911,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?
|
||||
@ -1949,6 +1921,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 <route> sepp frida alex
|
||||
+_members p2puser
|
||||
+_members <subroute> uwe anton fippo
|
||||
@ -1961,10 +1936,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
|
||||
@ -1986,7 +1959,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...?
|
||||
@ -2012,7 +1985,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"
|
||||
@ -2021,6 +1994,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
|
||||
@ -2129,7 +2103,7 @@ thoughts from buddy-heggy.txt:
|
||||
|
||||
- logged_on should be gone
|
||||
________________________________________________________________________
|
||||
DRIVER TODO:
|
||||
> DRIVER TODO:
|
||||
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||
* moved to psyclpc/TODO file
|
||||
|
||||
@ -2137,7 +2111,7 @@ DRIVER TODO:
|
||||
- unless (checkVar(&key, &value)) return;
|
||||
- psyc/library
|
||||
________________________________________________________________________
|
||||
PERLPSYC TODO:
|
||||
> PERLPSYC TODO:
|
||||
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||
- FORK
|
||||
- negotiation muss sowohl blocking als auch nonblocking funktionieren. per
|
||||
@ -2148,7 +2122,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
|
||||
@ -2163,14 +2137,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,
|
||||
@ -2198,10 +2172,11 @@ Similar Projexx:
|
||||
http://freshmeat.net/projects/ymsgr/
|
||||
|
||||
== HINTS: Multicast (see also COMPETITION) =============================
|
||||
? reliable multicast library?
|
||||
From: Gerd Flaig <gefla@pond.example.org>
|
||||
> 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
|
||||
@ -2212,27 +2187,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
|
||||
@ -3984,4 +3951,13 @@ 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)
|
||||
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.
|
||||
user
|
||||
- psyc client _examine was falling thru to _HTML output, added return;
|
||||
|
100
bin/todo2csv
Executable file
100
bin/todo2csv
Executable file
@ -0,0 +1,100 @@
|
||||
#!/usr/bin/perl
|
||||
# parse the historic CHANGESTODO.txt file and produce
|
||||
# a "tab seperated values" CSV according to csv2trac format:
|
||||
#
|
||||
# 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;
|
||||
|
||||
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 <<X;
|
||||
type\ttime\tchangetime\tcomponent\tseverity\tpriority\towner\treporter\tcc\turl\tversion\tmilestone\tstatus\tresolution\tsummary\tdescription\tkeywords
|
||||
X
|
||||
|
||||
my $text = '';
|
||||
my $headline, $first, $type, $sub;
|
||||
|
||||
my %types = (
|
||||
'-' => '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 <<X;
|
||||
$t\t$mytime\t\tpsyced\t\t\t\t\t\t\t$headline\tnew\t\t$summary\t\\n$summary\\n$text\told imported
|
||||
X
|
||||
undef $type;
|
||||
undef $first;
|
||||
$text = '';
|
||||
}
|
||||
|
||||
<I>; # skip first line
|
||||
while (<I>) {
|
||||
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;
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
8
place/de_en.c
Normal file
8
place/de_en.c
Normal file
@ -0,0 +1,8 @@
|
||||
#define NAME "de_en"
|
||||
#define TRANSLATION "de_en"
|
||||
|
||||
#ifdef ADMINISTRATORS
|
||||
# define PLACE_OWNED ADMINISTRATORS
|
||||
#endif
|
||||
|
||||
#include "babeldos.i"
|
@ -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!
|
||||
|
||||
|
@ -366,28 +366,28 @@ _notice_place_leave
|
||||
|<presence type='unavailable' to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]' id='[_tag]'><x xmlns='http://jabber.org/protocol/muc#user'><item affiliation='none' role='none'/></x></presence>
|
||||
|
||||
_status_presence_here
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_status_presence_here_talkative
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>chat</show><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>chat</show><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_status_presence_here_busy
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>dnd</show><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>dnd</show><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_status_presence_away
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>away</show><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>away</show><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_status_presence_absent_vacation
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>xa</show><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>xa</show><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_status_presence_absent
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]' type='unavailable'><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]' type='unavailable'><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_status_presence_here_quiet
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'/>
|
||||
|
||||
_notice_presence_here
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber_bare]'><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber_bare]'><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_notice_presence_here_plain
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'/>
|
||||
@ -396,19 +396,19 @@ _notice_presence_here_quiet
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]'/>
|
||||
|
||||
_notice_presence_here_talkative
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber_bare]'><show>chat</show><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber_bare]'><show>chat</show><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_notice_presence_here_busy
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]'><show>dnd</show><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]'><show>dnd</show><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_notice_presence_away
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]'><show>away</show><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]'><show>away</show><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_notice_presence_absent_vacation
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]'><show>xa</show><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]'><show>xa</show><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_notice_presence_absent
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]' type='unavailable'><status>[_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|<presence to='[_INTERNAL_target_jabber_bare]' from='[_INTERNAL_source_jabber]' type='unavailable'><status>[_INTERNAL_XML_description_presence]</status><mood xmlns='http://jabber.org/protocol/mood'><[_INTERNAL_mood_jabber]/></mood></presence>
|
||||
|
||||
_notice_person_absent_netburp
|
||||
|<presence to='[_INTERNAL_target_jabber]' from='[_INTERNAL_source_jabber]'><show>xa</show><status>{_notice_person_absent_netburp}</status></presence>
|
||||
|
@ -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].
|
||||
|
@ -30,6 +30,10 @@
|
||||
#include <status.h>
|
||||
#include <uniform.h>
|
||||
|
||||
#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
|
||||
|
@ -48,10 +48,11 @@
|
||||
#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' // 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
|
||||
|
@ -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?
|
||||
|
@ -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"])
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
@ -550,7 +553,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 +698,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]];
|
||||
|
@ -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":
|
||||
|
@ -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":
|
||||
@ -250,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"
|
||||
]));
|
||||
}
|
||||
@ -572,15 +573,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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -71,7 +71,7 @@
|
||||
<tr><td>_flag_uniform_verbatim</td><td>verbatimuniform</td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td>_flag_visibility</td><td>visibility</td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td>_gender</td><td>sex</td><td>gender</td><td></td><td></td><td></td><td>gender</td></tr>
|
||||
<tr><td>_identification</td><td>id</td><td>psyc_id</td><td></td><td>PSYCID</td><td></td><td>psycID</td></tr>
|
||||
<tr><td>_identification</td><td>id</td><td>psyc_id</td><td></td><td></td><td></td><td>psycID</td></tr>
|
||||
<tr><td>_identification_other</td><td>otherid</td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td>_identification_scheme_AIM</td><td>aimid</td><td>aim_id</td><td></td><td></td><td></td><td>aimChatID</td></tr>
|
||||
<tr><td>_identification_scheme_ICQ</td><td>icqid</td><td>icq_id</td><td></td><td></td><td></td><td>icqChatID</td></tr>
|
||||
|
@ -94,7 +94,6 @@ volatile mapping psyc2jCard = ([
|
||||
"_affiliation" : "<ORG><ORGNAME>%s</ORGNAME></ORG>",
|
||||
"_date_birth" : "<BDAY>%s</BDAY>",
|
||||
"_description_public" : "<DESC>%s</DESC>",
|
||||
"_identification" : "<PSYCID>%s</PSYCID>",
|
||||
"_identification_scheme_XMPP" : "<JABBERID>%s</JABBERID>",
|
||||
"_identification_scheme_mailto" : "<EMAIL><USERID>%s</USERID></EMAIL>",
|
||||
"_name_family" : "<N><FAMILY>%s</FAMILY></N>",
|
||||
@ -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",
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
@ -1370,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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
@ -191,17 +191,22 @@ 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)) {
|
||||
// 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]))
|
||||
mixed t = 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",
|
||||
"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
|
||||
// we only get here if the _list has one or zero members
|
||||
#ifdef PARANOID
|
||||
@ -293,7 +298,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 +581,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)) {
|
||||
@ -1110,6 +1121,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");
|
||||
@ -1152,7 +1164,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
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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,8 +1056,21 @@ cmd(a, args, dest, command) {
|
||||
"Usage: /shout <message-to-your-friends>");
|
||||
break;
|
||||
# ifndef _flag_disable_module_presence
|
||||
case "presence":
|
||||
showMyPresence(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!
|
||||
// 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));
|
||||
@ -1157,6 +1158,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 +1594,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":
|
||||
@ -1630,6 +1634,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");
|
||||
@ -1637,6 +1642,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!
|
||||
@ -1746,17 +1766,25 @@ 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"],
|
||||
// parser takes care of checking _degree type
|
||||
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))
|
||||
// complain about missing args?
|
||||
return 0;
|
||||
P1(("got invalid %O: %O, %O in %O\n", mc, vars, data, ME))
|
||||
w("_failure_necessary_variable");
|
||||
return 1;
|
||||
#endif // _flag_disable_module_presence
|
||||
case "_list_peers_JSON":
|
||||
listAcq(PPL_JSON);
|
||||
@ -1773,7 +1801,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();
|
||||
|
Loading…
Reference in New Issue
Block a user