mirror of
https://github.com/ChronosX88/psyced.git
synced 2024-12-05 00:22:19 +00:00
Merge remote branch 'origin'
This commit is contained in:
commit
f941e8c96c
21
CHANGESTODO
21
CHANGESTODO
@ -4,6 +4,12 @@ vim:nosmarttab:syntax=diff
|
|||||||
| Essentially: whenever you fix something, move that line to the end of file.
|
| Essentially: whenever you fix something, move that line to the end of file.
|
||||||
| - marks bugs & fixes, + marks new features, ? marks issues, * marks big stuff
|
| - marks bugs & fixes, + marks new features, ? marks issues, * marks big stuff
|
||||||
________________________________________________________________________
|
________________________________________________________________________
|
||||||
|
== SERIOUS!!! ==========================================================
|
||||||
|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
- large submissions into scratchpad can crash the driver
|
||||||
|
|
||||||
|
- configure script fails on libidn now being in glibc
|
||||||
|
________________________________________________________________________
|
||||||
== NEXT RELEASE ========================================================
|
== NEXT RELEASE ========================================================
|
||||||
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
- interserver xmpp /me expects no leading newline, but pidgin recently
|
- interserver xmpp /me expects no leading newline, but pidgin recently
|
||||||
@ -393,6 +399,8 @@ ________________________________________________________________________
|
|||||||
________________________________________________________________________
|
________________________________________________________________________
|
||||||
== OTHER MAJOR TODOS ===================================================
|
== OTHER MAJOR TODOS ===================================================
|
||||||
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
- occasionally double data sets for psyc://ve.symlynx.com/~nick and nick
|
||||||
|
|
||||||
+ provide a tuning for ACTIVE server-side PING (keepalive) ?
|
+ provide a tuning for ACTIVE server-side PING (keepalive) ?
|
||||||
see http://about.psyc.eu/Ping for explanations.
|
see http://about.psyc.eu/Ping for explanations.
|
||||||
|
|
||||||
@ -1077,6 +1085,9 @@ cel'><service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error><
|
|||||||
________________________________________________________________________
|
________________________________________________________________________
|
||||||
== RELEASE INSTALLER ===================================================
|
== RELEASE INSTALLER ===================================================
|
||||||
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
+ the psyced script could check if psyced.ini has been changed recently
|
||||||
|
and autorun psyconf? or maybe just spit out a warning..
|
||||||
|
|
||||||
- _charset_console can still lead to unexpected convert_charset errors when
|
- _charset_console can still lead to unexpected convert_charset errors when
|
||||||
outputting random data. convert_charset must be non-fatal here!
|
outputting random data. convert_charset must be non-fatal here!
|
||||||
|
|
||||||
@ -1564,6 +1575,11 @@ ________________________________________________________________________
|
|||||||
look at: http://freshmeat.net/projects/pyvoicechat/
|
look at: http://freshmeat.net/projects/pyvoicechat/
|
||||||
dormant since 2004.. oops
|
dormant since 2004.. oops
|
||||||
|
|
||||||
|
+ tycho proposes /log reply of new messages should not necessarily
|
||||||
|
show automatically, in case you are connecting with a client on a
|
||||||
|
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()
|
+ net/spyc needs relaying (without parsing even), see TODO in parse_content()
|
||||||
? relaying doesn't work for psyc clients (xmpp: in particular)
|
? relaying doesn't work for psyc clients (xmpp: in particular)
|
||||||
@ -1584,6 +1600,8 @@ ________________________________________________________________________
|
|||||||
but some of the old stuff does.. how do we find a proper solution?
|
but some of the old stuff does.. how do we find a proper solution?
|
||||||
|
|
||||||
== DOCUMENTATION ISSUES ================================================
|
== DOCUMENTATION ISSUES ================================================
|
||||||
|
? should we point to some manuals on how to make and add certificates?
|
||||||
|
|
||||||
* 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
|
"library" "user" "server" "language" etc... und jede funktion kann sich
|
||||||
dann mit /** library: this stuff.. */ woanders einordnen.. jetzt brauchen wir
|
dann mit /** library: this stuff.. */ woanders einordnen.. jetzt brauchen wir
|
||||||
@ -1758,9 +1776,6 @@ das sieht doof aus.. gehts auch besser? hmm
|
|||||||
remain incarnated longer since mails seem to arrive often enough
|
remain incarnated longer since mails seem to arrive often enough
|
||||||
for some users to never leave memory.
|
for some users to never leave memory.
|
||||||
|
|
||||||
+ disallow TLS/SSL connections from localhost to save CPU resources
|
|
||||||
for useful things
|
|
||||||
|
|
||||||
- re-examine everything looking for optimizations.. like, are any
|
- re-examine everything looking for optimizations.. like, are any
|
||||||
lower_case's being called twice etc. or introduce a "lowercased"
|
lower_case's being called twice etc. or introduce a "lowercased"
|
||||||
flag into the driver's string structures *grin*
|
flag into the driver's string structures *grin*
|
||||||
|
12
bin/psyconf
12
bin/psyconf
@ -16,7 +16,8 @@ psyconf - a configuration tool for PSYCED
|
|||||||
|
|
||||||
Usage: psyconf [ <file> ]
|
Usage: psyconf [ <file> ]
|
||||||
|
|
||||||
The default configuration file used is /etc/psyced.ini
|
The default configuration file used is either ./psyced.ini
|
||||||
|
or /etc/psyc/psyced.ini
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@ -386,14 +387,23 @@ X
|
|||||||
my $t = $c{_basic_path_PEM_key};
|
my $t = $c{_basic_path_PEM_key};
|
||||||
if ($t) {
|
if ($t) {
|
||||||
$t = "$config/$t" unless $t =~ m#^/#;
|
$t = "$config/$t" unless $t =~ m#^/#;
|
||||||
|
print STDERR <<X unless -r $t;
|
||||||
|
WARNING: Key file $t does not exist.
|
||||||
|
X
|
||||||
$psyced .= " --tls-key $t";
|
$psyced .= " --tls-key $t";
|
||||||
}
|
}
|
||||||
if ($t = $c{_basic_path_PEM_certificate}) {
|
if ($t = $c{_basic_path_PEM_certificate}) {
|
||||||
$t = "$config/$t" unless $t =~ m#^/#;
|
$t = "$config/$t" unless $t =~ m#^/#;
|
||||||
|
print STDERR <<X unless -r $t;
|
||||||
|
WARNING: Certificate file $t does not exist.
|
||||||
|
X
|
||||||
$psyced .= " --tls-cert $t";
|
$psyced .= " --tls-cert $t";
|
||||||
}
|
}
|
||||||
if ($t = $c{_basic_path_trust}) {
|
if ($t = $c{_basic_path_trust}) {
|
||||||
$t = "$config/$t" unless $t =~ m#^/#;
|
$t = "$config/$t" unless $t =~ m#^/#;
|
||||||
|
print STDERR <<X unless -r $t;
|
||||||
|
WARNING: Trust directory $t does not exist.
|
||||||
|
X
|
||||||
$psyced .= " --tls-trustdirectory $t";
|
$psyced .= " --tls-trustdirectory $t";
|
||||||
}
|
}
|
||||||
# ldmud doesn't support this yet
|
# ldmud doesn't support this yet
|
||||||
|
16
install.sh
16
install.sh
@ -304,10 +304,13 @@ ask "Server host name" HOST_NAME
|
|||||||
get DOMAIN_NAME "" # `grep ^domain /etc/resolv.conf | sed "s/^domain.//"`
|
get DOMAIN_NAME "" # `grep ^domain /etc/resolv.conf | sed "s/^domain.//"`
|
||||||
ask "Your domain name" DOMAIN_NAME
|
ask "Your domain name" DOMAIN_NAME
|
||||||
|
|
||||||
get HOST_IP "127.0.0.1"
|
#get HOST_IP "127.0.0.1"
|
||||||
|
get HOST_IP
|
||||||
# `nslookup -sil $HOST_NAME | tail -n 2 | head -n 1 | awk '{print $2}' | sed "s/,//"`
|
# `nslookup -sil $HOST_NAME | tail -n 2 | head -n 1 | awk '{print $2}' | sed "s/,//"`
|
||||||
echo ""
|
echo ""
|
||||||
echo "If you have a static IP address for your server, please tell me:"
|
echo "If you have a static IP address for your server, please tell me."
|
||||||
|
echo "Otherwise I will resolve my own hostname at runtime in order to get my"
|
||||||
|
echo "current IP address."
|
||||||
ask "Server IP address" HOST_IP
|
ask "Server IP address" HOST_IP
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
@ -316,6 +319,9 @@ get USER "psyc"
|
|||||||
if test "x$USER" = "xroot"; then
|
if test "x$USER" = "xroot"; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "You shouldn't run psyced as root, so what about a 'psyc' user?"
|
echo "You shouldn't run psyced as root, so what about a 'psyc' user?"
|
||||||
|
# indigo6 thinks we should run useradd here, even if some unices
|
||||||
|
# do not provide that command. we can >/dev/null the error though...
|
||||||
|
echo "If the user doesn't exist yet, please make one."
|
||||||
fi
|
fi
|
||||||
#while true
|
#while true
|
||||||
#do
|
#do
|
||||||
@ -332,6 +338,7 @@ fi
|
|||||||
get GROUP "psyc"
|
get GROUP "psyc"
|
||||||
#while true
|
#while true
|
||||||
#do
|
#do
|
||||||
|
echo "If such a group doesn't exist yet, please create it now."
|
||||||
ask "Which group do you want to run psyced as" GROUP
|
ask "Which group do you want to run psyced as" GROUP
|
||||||
# if `id -Gn $USER | grep $GROUP > /dev/null`
|
# if `id -Gn $USER | grep $GROUP > /dev/null`
|
||||||
# then
|
# then
|
||||||
@ -371,6 +378,7 @@ done
|
|||||||
#echo "[server output goes to $RUNTIME_OUTPUT]"
|
#echo "[server output goes to $RUNTIME_OUTPUT]"
|
||||||
|
|
||||||
## BUG IN ORDER!!! we dont have $PSYC_PORT yet!!!!! TODO!!111
|
## BUG IN ORDER!!! we dont have $PSYC_PORT yet!!!!! TODO!!111
|
||||||
|
## also HOST_IP may be empty
|
||||||
RUNTIME_OUTPUT_DIR="$LOG_DIR/$HOST_IP-$PSYC_PORT"
|
RUNTIME_OUTPUT_DIR="$LOG_DIR/$HOST_IP-$PSYC_PORT"
|
||||||
RUNTIME_OUTPUT_STDERR="$RUNTIME_OUTPUT_DIR/stderr"
|
RUNTIME_OUTPUT_STDERR="$RUNTIME_OUTPUT_DIR/stderr"
|
||||||
RUNTIME_OUTPUT_STDOUT="$RUNTIME_OUTPUT_DIR/stdout"
|
RUNTIME_OUTPUT_STDOUT="$RUNTIME_OUTPUT_DIR/stdout"
|
||||||
@ -793,6 +801,7 @@ else
|
|||||||
echo "[host name resolving disabled (don't start erq).]"
|
echo "[host name resolving disabled (don't start erq).]"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
## TODO, should be disabled when there is no HOST_IP?
|
||||||
get WANT_PORTRULES "y"
|
get WANT_PORTRULES "y"
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
@ -986,7 +995,8 @@ _host_name = $HOST_NAME
|
|||||||
_host_domain = $DOMAIN_NAME
|
_host_domain = $DOMAIN_NAME
|
||||||
|
|
||||||
; Would you like to bind the server to a specific IP address?
|
; Would you like to bind the server to a specific IP address?
|
||||||
; If you do you MUST also provide _host_name and _host_domain
|
; If you do, you MUST also provide _host_name and _host_domain
|
||||||
|
; If you leave this empty, psyced will find out at runtime.
|
||||||
_host_IP = $HOST_IP
|
_host_IP = $HOST_IP
|
||||||
|
|
||||||
; Nickname for the chatserver. Appears in login message, telnet prompt,
|
; Nickname for the chatserver. Appears in login message, telnet prompt,
|
||||||
|
4
makefile
4
makefile
@ -58,3 +58,7 @@ local/all.ls:
|
|||||||
.links:
|
.links:
|
||||||
(cd world;../bin/findlinks */de/* */en/*) >$@
|
(cd world;../bin/findlinks */de/* */en/*) >$@
|
||||||
|
|
||||||
|
rights:
|
||||||
|
find . -type d -exec chmod 755 {} \;
|
||||||
|
find . -type f -exec chmod 644 {} \;
|
||||||
|
chmod +x bin/* run/* config/psyced.settings install.sh utility/multipatcher
|
||||||
|
@ -16,7 +16,10 @@
|
|||||||
start();
|
start();
|
||||||
babel();
|
babel();
|
||||||
|
|
||||||
#define CRESET start();
|
#define CREATE qInit(ME, 1000, 100);
|
||||||
|
|
||||||
|
// too aggressive to connect babelfish on every reset!!
|
||||||
|
//efine CRESET start();
|
||||||
inherit NET_PATH "connect";
|
inherit NET_PATH "connect";
|
||||||
#include <place.gen>
|
#include <place.gen>
|
||||||
|
|
||||||
@ -27,7 +30,6 @@ volatile mixed *current;
|
|||||||
volatile string krank, buffer;
|
volatile string krank, buffer;
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
qInit(ME, 1000, 100);
|
|
||||||
unless (has_con || is_con) {
|
unless (has_con || is_con) {
|
||||||
is_con = 1;
|
is_con = 1;
|
||||||
call_out(#'connect, 0, "babelfish.yahoo.com", 80);
|
call_out(#'connect, 0, "babelfish.yahoo.com", 80);
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
# (sort of like cgi) with LDMUD. but by now LDMUD knows how
|
# (sort of like cgi) with LDMUD. but by now LDMUD knows how
|
||||||
# to do MD5 and SHA1 itself, so they are not being used.
|
# to do MD5 and SHA1 itself, so they are not being used.
|
||||||
#
|
#
|
||||||
|
# consult http://about.psyc.eu/spawn for instructions
|
||||||
|
#
|
||||||
use Digest::MD5 qw(md5 md5_hex);
|
use Digest::MD5 qw(md5 md5_hex);
|
||||||
|
|
||||||
$| = 1;
|
$| = 1;
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
# (sort of like cgi) with LDMUD. but by now LDMUD knows how
|
# (sort of like cgi) with LDMUD. but by now LDMUD knows how
|
||||||
# to do MD5 and SHA1 itself, so they are not being used.
|
# to do MD5 and SHA1 itself, so they are not being used.
|
||||||
#
|
#
|
||||||
|
# consult http://about.psyc.eu/spawn for instructions
|
||||||
|
#
|
||||||
use Digest::SHA1 qw(sha1 sha1_hex);
|
use Digest::SHA1 qw(sha1 sha1_hex);
|
||||||
|
|
||||||
$| = 1;
|
$| = 1;
|
||||||
|
42
utility/rkeywordgrep
Executable file
42
utility/rkeywordgrep
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
#
|
||||||
|
# recursive PSYC keyword (methods, variables) collector --lynx98
|
||||||
|
# you may like how it looks after a subsequent sort
|
||||||
|
# see also http://about.psyc.eu/Rename
|
||||||
|
|
||||||
|
require 'find.pl';
|
||||||
|
|
||||||
|
$flags = '';
|
||||||
|
$flags = shift if $ARGV[0] =~ /^-/;
|
||||||
|
$verbose = $flags !~ /s/;
|
||||||
|
|
||||||
|
$|=1;
|
||||||
|
&find($#ARGV >= 0 ? @ARGV : '.');
|
||||||
|
print STDERR '=' x 78, "\n" if $verbose;
|
||||||
|
exit;
|
||||||
|
|
||||||
|
|
||||||
|
sub wanted {
|
||||||
|
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
|
||||||
|
$atime,$mtime,$ctime,$blksize,$blocks)
|
||||||
|
= lstat;
|
||||||
|
|
||||||
|
return unless /\.[chi]$/ or /\.gen$/;
|
||||||
|
return if -d _;
|
||||||
|
# return unless $blocks; # skip symlinks
|
||||||
|
return if $size < 10;
|
||||||
|
|
||||||
|
if ($verbose) {
|
||||||
|
$len = length $name;
|
||||||
|
print STDERR $name, ' ', '=' x (77-$len), "\r" if $len < 77;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (open(I, $_)) {
|
||||||
|
while(<I>) {
|
||||||
|
printf "%-41s -\t$name\n", $1 while s/"(_\w+)"/"got"/;
|
||||||
|
}
|
||||||
|
close I;
|
||||||
|
} else {
|
||||||
|
print STDERR "$name: $!\n";
|
||||||
|
}
|
||||||
|
}
|
@ -551,6 +551,9 @@ _request_description
|
|||||||
_request_open_page
|
_request_open_page
|
||||||
|Bitte folgende Seite aufrufen: [_page]
|
|Bitte folgende Seite aufrufen: [_page]
|
||||||
|
|
||||||
|
_request_open_page_login
|
||||||
|
|Bitte öffne [_page_login] um einzuloggen.
|
||||||
|
|
||||||
_request_open_page_edit
|
_request_open_page_edit
|
||||||
|Zur Bearbeitung der Einstellungen bitte folgende Seite aufrufen:
|
|Zur Bearbeitung der Einstellungen bitte folgende Seite aufrufen:
|
||||||
|[_page_edit]
|
|[_page_edit]
|
||||||
|
@ -1,6 +1,18 @@
|
|||||||
<PSYC:TEXTDB> ## vim:syntax=mail
|
<PSYC:TEXTDB> ## vim:syntax=mail
|
||||||
## Check utf-8: Praise Atatürk!
|
## Check utf-8: Praise Atatürk!
|
||||||
|
|
||||||
|
_failure_unavailable_state
|
||||||
|
|State module is not available as yet.
|
||||||
|
|
||||||
|
_failure_unknown_glyph
|
||||||
|
|Unknown modifier glyph encountered.
|
||||||
|
|
||||||
|
_error_illegal_protocol_variable
|
||||||
|
|You are not allowed to present a variable named [_variable_name].
|
||||||
|
|
||||||
|
_error_type_degree
|
||||||
|
|Your value for variable [_variable] does not qualify for a degree.
|
||||||
|
|
||||||
_error_necessary_nick_local
|
_error_necessary_nick_local
|
||||||
|This command only accepts local nicknames.
|
|This command only accepts local nicknames.
|
||||||
|
|
||||||
@ -1341,7 +1353,7 @@ _notice_link_service
|
|||||||
|
|
||||||
_notice_link
|
_notice_link
|
||||||
|[_location] linked to [_identification].
|
|[_location] linked to [_identification].
|
||||||
|You are now connected to this big marshmellow in the sky.
|
|## You are now connected to this big marshmellow in the sky.
|
||||||
|
|
||||||
_notice_unlink_exit
|
_notice_unlink_exit
|
||||||
|I wish you good sleep or a fun night-out.
|
|I wish you good sleep or a fun night-out.
|
||||||
|
@ -129,7 +129,7 @@ object connect(int uid, int port, string service) {
|
|||||||
peerport = pointerp(arg) ? (arg[2]*256 + arg[3]) : 0;
|
peerport = pointerp(arg) ? (arg[2]*256 + arg[3]) : 0;
|
||||||
if (peerport < 0) peerport = 65536 + peerport;
|
if (peerport < 0) peerport = 65536 + peerport;
|
||||||
// no support for non-AF_INET nets yet
|
// no support for non-AF_INET nets yet
|
||||||
if (peerport == SPYC_SERVICE) peerport = 0;
|
if (peerport == PSYC_SERVICE) peerport = 0;
|
||||||
# else
|
# else
|
||||||
// as long as the object names don't collide, this is okay too
|
// as long as the object names don't collide, this is okay too
|
||||||
peerport = 65536 + random(9999999);
|
peerport = 65536 + random(9999999);
|
||||||
|
@ -64,7 +64,6 @@
|
|||||||
# define NAMEPREP(s) FROM_UTF8(idna_stringprep(TO_UTF8(s), STRINGPREP_NAMEPREP))
|
# define NAMEPREP(s) FROM_UTF8(idna_stringprep(TO_UTF8(s), STRINGPREP_NAMEPREP))
|
||||||
# define RESOURCEPREP(s) FROM_UTF8(idna_stringprep(TO_UTF8(s), STRINGPREP_XMPP_RESOURCEPREP))
|
# define RESOURCEPREP(s) FROM_UTF8(idna_stringprep(TO_UTF8(s), STRINGPREP_XMPP_RESOURCEPREP))
|
||||||
#else
|
#else
|
||||||
# echo Warning: using lower_case instead of idna_stringprep!
|
|
||||||
# define NODEPREP(s) lower_case(s)
|
# define NODEPREP(s) lower_case(s)
|
||||||
# define NAMEPREP(s) lower_case(s)
|
# define NAMEPREP(s) lower_case(s)
|
||||||
# define RESOURCEPREP(s) (s)
|
# define RESOURCEPREP(s) (s)
|
||||||
|
@ -4,6 +4,10 @@
|
|||||||
#include "presence.h"
|
#include "presence.h"
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
#if !__EFUN_DEFINED__(idna_stringprep)
|
||||||
|
# echo Warning: idn support as recommended for XMPP is missing from LPC driver. will try lower_case() instead. usually works.
|
||||||
|
#endif
|
||||||
|
|
||||||
// necessary to implement a minimum set of commands for remote jabber users
|
// necessary to implement a minimum set of commands for remote jabber users
|
||||||
// #undef USER_PROGRAM
|
// #undef USER_PROGRAM
|
||||||
// #undef MYNICK
|
// #undef MYNICK
|
||||||
@ -221,8 +225,10 @@ jabberMsg(XMLNode node, mixed origin, mixed *su, array(mixed) tu) {
|
|||||||
time[TM_YEAR], time[TM_MON],
|
time[TM_YEAR], time[TM_MON],
|
||||||
time[TM_MDAY], time[TM_HOUR],
|
time[TM_MDAY], time[TM_HOUR],
|
||||||
time[TM_MIN], time[TM_SEC]);
|
time[TM_MIN], time[TM_SEC]);
|
||||||
if (res == 6 && (res = mktime(time)) != -1) {
|
if (res == 6) {
|
||||||
vars["_time_place"] = res; //helper["@stamp"];
|
// mktime uses month from 0 to 11, december error fixed
|
||||||
|
time[TM_MON]--;
|
||||||
|
if ((res = mktime(time)) != -1) vars["_time_place"] = res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -99,7 +99,7 @@ int msg(string source, string mc, string data,
|
|||||||
$2["_amount_users_registered"] = helper["@value"];
|
$2["_amount_users_registered"] = helper["@value"];
|
||||||
break;
|
break;
|
||||||
case "users/online":
|
case "users/online":
|
||||||
$2["_amount_users"] = helper["@value"];
|
$2["_amount_users_loaded"] = helper["@value"];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -812,10 +812,23 @@ varargs mixed sendmsg(mixed target, string mc, mixed data, vamapping vars,
|
|||||||
// fall thru
|
// fall thru
|
||||||
case "xmpp":
|
case "xmpp":
|
||||||
#ifdef SWITCH2PSYC
|
#ifdef SWITCH2PSYC
|
||||||
|
// maybe we should treat all of this just as if
|
||||||
|
// no scheme was given (jid treatment below)
|
||||||
P4(("LOOKing for %O in %O\n",
|
P4(("LOOKing for %O in %O\n",
|
||||||
"psyc://"+u[UHost]+"/", targets))
|
"psyc://"+u[UHost]+"/", targets))
|
||||||
tmp = targets["psyc://"+u[UHost]+"/"];
|
tmp = targets["psyc://"+u[UHost]+"/"];
|
||||||
if (tmp) { // && interactive(tmp)) {
|
if (tmp) {
|
||||||
|
// are we talking to our own net/root?
|
||||||
|
// in the past we used interactive() here
|
||||||
|
unless (clonep(tmp)) {
|
||||||
|
tmp = summon_person(u[UNick]);
|
||||||
|
unless (tmp) {
|
||||||
|
// doesn't have to be an error.. use jid treatment below?
|
||||||
|
sendmsg(source, "_failure_unavailable_route_place_XMPP",
|
||||||
|
"Sorry, you can't talk to a local chatroom via XMPP uniform.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
PT(("SWITCH2PSYC delivery %O for %O (%s)\n", tmp, target,
|
PT(("SWITCH2PSYC delivery %O for %O (%s)\n", tmp, target,
|
||||||
mc || "0"))
|
mc || "0"))
|
||||||
// we should very probably generate a redirect here instead! TODO
|
// we should very probably generate a redirect here instead! TODO
|
||||||
|
@ -70,7 +70,7 @@ int msg(string source, string method, string data,
|
|||||||
return ::msg(source, method, data, vars, showingLog, target);
|
return ::msg(source, method, data, vars, showingLog, target);
|
||||||
#else // }}}
|
#else // }}}
|
||||||
{
|
{
|
||||||
P2(("%O ist nicht interactive\n", ME))
|
P2(("%O is not interactive (no network connection)\n", ME))
|
||||||
if (!member(vars, "_source"))
|
if (!member(vars, "_source"))
|
||||||
vars["_source"] = UNIFORM(source);
|
vars["_source"] = UNIFORM(source);
|
||||||
// this stuff is causing loops and i don't know how to fix it right now
|
// this stuff is causing loops and i don't know how to fix it right now
|
||||||
|
@ -25,7 +25,7 @@ volatile string netloc;
|
|||||||
|
|
||||||
// this is completely anti-psyc. it should take mcs as arguments
|
// this is completely anti-psyc. it should take mcs as arguments
|
||||||
// and look up the actual message from textdb.. FIXME
|
// and look up the actual message from textdb.. FIXME
|
||||||
#define CIRCUITERROR(reason) { debug_message("SPYC CIRCUIT: " reason "\n"); \
|
#define CIRCUITERROR(reason) { \
|
||||||
croak("_error_circuit", "circuit error: " \
|
croak("_error_circuit", "circuit error: " \
|
||||||
reason); \
|
reason); \
|
||||||
return 0; \
|
return 0; \
|
||||||
@ -55,9 +55,12 @@ void feed(string data) {
|
|||||||
// yes, this is a funny implementation of croak
|
// yes, this is a funny implementation of croak
|
||||||
// it does not use msg(). Yes, that is intended
|
// it does not use msg(). Yes, that is intended
|
||||||
varargs mixed croak(string mc, string data, vamapping vars, vamixed source) {
|
varargs mixed croak(string mc, string data, vamapping vars, vamixed source) {
|
||||||
|
PT(("croak(%O) in %O (%O)\n", mc, ME, query_ip_name()))
|
||||||
|
unless (data) data = T(mc, "");
|
||||||
binary_message(sprintf("\n%s\n%s\n|\n", mc, data));
|
binary_message(sprintf("\n%s\n%s\n|\n", mc, data));
|
||||||
remove_interactive(ME);
|
// right behaviour for all croaks!?
|
||||||
destruct(ME);
|
remove_interactive(ME);
|
||||||
|
// destruct(ME);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,21 +15,21 @@ int may_parse_more;
|
|||||||
array(mixed) tvars;
|
array(mixed) tvars;
|
||||||
mapping hvars;
|
mapping hvars;
|
||||||
|
|
||||||
// this is completely anti-psyc. it should take mcs as arguments
|
// being faded out in favor of regular croak()
|
||||||
// and look up the actual message from textdb.. FIXME
|
#define PARSEERROR(reason) { \
|
||||||
#define PARSEERROR(reason) { debug_message("PSYC PARSE ERROR: " reason "\n"); \
|
croak("_error_syntax_broken", \
|
||||||
croak("_error_syntax_broken", "Failed parsing: " \
|
"Failed parsing: " reason); \
|
||||||
reason); \
|
return 0; }
|
||||||
return 0; \
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#define DELIM S_GLYPH_PACKET_DELIMITER "\n"
|
#define DELIM S_GLYPH_PACKET_DELIMITER "\n"
|
||||||
#define C_LINEFEED '\n'
|
#define C_LINEFEED '\n'
|
||||||
#define MVAR_GLYPH 0
|
#define MVAR_GLYPH 0
|
||||||
#define MVAR_STATE 1
|
#define MVAR_STATE 1
|
||||||
#define MVAR_VALUE 2
|
#define MVAR_VALUE 2
|
||||||
|
|
||||||
|
#ifndef PSYC_UDP
|
||||||
|
# define QUIT remove_interactive(ME); return 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
step(); // prototype
|
step(); // prototype
|
||||||
|
|
||||||
@ -76,9 +76,7 @@ void feed(string data) {
|
|||||||
|
|
||||||
|
|
||||||
// overload this as needed
|
// overload this as needed
|
||||||
varargs mixed croak(string mc, string data, vamapping vars, vamixed source) {
|
varargs mixed croak(string mc, string data, vamapping vars) { return 0; }
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// called when a complete packet has arrived
|
// called when a complete packet has arrived
|
||||||
@ -101,16 +99,18 @@ mapping process_header(mixed varops) {
|
|||||||
case C_GLYPH_MODIFIER_DIMINISH:
|
case C_GLYPH_MODIFIER_DIMINISH:
|
||||||
case C_GLYPH_MODIFIER_QUERY:
|
case C_GLYPH_MODIFIER_QUERY:
|
||||||
case C_GLYPH_MODIFIER_ASSIGN:
|
case C_GLYPH_MODIFIER_ASSIGN:
|
||||||
PARSEERROR("header modifier with glyph other than ':', this is not implemented")
|
croak("_failure_unavailable_state");
|
||||||
break;
|
QUIT
|
||||||
default:
|
default:
|
||||||
PARSEERROR("header modifier with unknown glyph")
|
croak("_failure_unknown_glyph");
|
||||||
break;
|
QUIT
|
||||||
}
|
}
|
||||||
// FIXME: not every legal varname is a mmp varname
|
// FIXME: not every legal varname is a routing varname
|
||||||
// look at shared_memory("routing")
|
// look at shared_memory("routing")
|
||||||
if (!legal_keyword(vname) || abbrev("_INTERNAL", vname)) {
|
if (!legal_keyword(vname) || abbrev("_INTERNAL", vname)) {
|
||||||
PARSEERROR("illegal varname in header")
|
croak("_error_illegal_protocol_variable", 0,
|
||||||
|
([ "_variable_name": vname ]));
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return vars;
|
return vars;
|
||||||
@ -158,7 +158,8 @@ void parse_header() {
|
|||||||
buffer = buffer[1..];
|
buffer = buffer[1..];
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PARSEERROR("noglyph")
|
croak("_error_syntax_expected_routing");
|
||||||
|
QUIT
|
||||||
}
|
}
|
||||||
fit = sscanf(buffer, "%.1s%t", vname);
|
fit = sscanf(buffer, "%.1s%t", vname);
|
||||||
if (fit != 1) {
|
if (fit != 1) {
|
||||||
@ -222,6 +223,7 @@ void parse_psyc() {
|
|||||||
PARSEERROR("negative binary length")
|
PARSEERROR("negative binary length")
|
||||||
}
|
}
|
||||||
if (strlen(body_buffer) < len) {
|
if (strlen(body_buffer) < len) {
|
||||||
|
// ouch, this is a problem here
|
||||||
PARSEERROR("not enough to read binary arg, may not happen")
|
PARSEERROR("not enough to read binary arg, may not happen")
|
||||||
}
|
}
|
||||||
vvalue = body_buffer[..len-1];
|
vvalue = body_buffer[..len-1];
|
||||||
@ -290,9 +292,9 @@ void parse_content() {
|
|||||||
}
|
}
|
||||||
fit = sscanf(body_buffer, "%.1s\n%.0s", method, body_buffer);
|
fit = sscanf(body_buffer, "%.1s\n%.0s", method, body_buffer);
|
||||||
if (fit != 2 || !legal_keyword(method)) {
|
if (fit != 2 || !legal_keyword(method)) {
|
||||||
croak("_error_illegal_method",
|
croak("_error_illegal_method");
|
||||||
"That's not a valid method name.");
|
// "That's not a valid method name.");
|
||||||
return; // NOTREACHED
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// mhmm... why does body_buffer still contain the newline?
|
// mhmm... why does body_buffer still contain the newline?
|
||||||
@ -359,8 +361,8 @@ void step() {
|
|||||||
first_response();
|
first_response();
|
||||||
step();
|
step();
|
||||||
} else {
|
} else {
|
||||||
croak("_error_syntax_initialization",
|
croak("_error_syntax_initialization");
|
||||||
"The new protocol begins with a pipe and a line feed.");
|
// "The new protocol begins with a pipe and a line feed.");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default: // uhm... if we ever get here this is the programmers fault
|
default: // uhm... if we ever get here this is the programmers fault
|
||||||
|
@ -28,7 +28,7 @@ parse(string body, mapping headers) {
|
|||||||
P4((body))
|
P4((body))
|
||||||
//#endif
|
//#endif
|
||||||
unless (pointerp(wurst = parse_json(body))) {
|
unless (pointerp(wurst = parse_json(body))) {
|
||||||
monitor_report("_failure_network_fetch_twitter_empty",
|
monitor_report("_failure_network_fetch_twitter_broken",
|
||||||
"[_source] failed to parse its timeline");
|
"[_source] failed to parse its timeline");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user