X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=scripts%2Fxmppdaemon.php;h=1db6687d0f8698ec1f358fabcc06d9d6576b943d;hb=69e6e812b79d8f2e947d3cd0b7561d4a862f40a0;hp=43f2b6aaeedb7fee94343a8fc103a478b3cfe1e0;hpb=808b40dc534316a82b9c614f1d8438fd1b149074;p=quix0rs-gnu-social.git diff --git a/scripts/xmppdaemon.php b/scripts/xmppdaemon.php index 43f2b6aaee..1db6687d0f 100755 --- a/scripts/xmppdaemon.php +++ b/scripts/xmppdaemon.php @@ -55,6 +55,7 @@ if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); define('LACONICA', true); +define('CLAIM_TIMEOUT', 100000); require_once(INSTALLDIR . '/lib/common.php'); require_once(INSTALLDIR . '/lib/jabber.php'); @@ -176,6 +177,10 @@ class XMPPDaemon { $this->log(LOG_INFO, 'Ignoring OTR from ' . $from); return; } else { + if(strlen($pl['body'])>140) { + $this->from_site($from, 'Message too long - maximum is 140 characters, you sent ' . strlen($pl['body'])); + return; + } $this->add_notice($user, $pl); } } @@ -203,15 +208,49 @@ class XMPPDaemon { function handle_command($user, $body) { # XXX: localise - switch(trim($body)) { + $p=explode(' ',$body); + if(count($p)>2) + return false; + switch($p[0]) { + case 'help': + if(count($p)!=1) + return false; + $this->from_site($user->jabber, "Commands:\n on - turn on notifications\n off - turn off notifications\n help - show this help \n sub - subscribe to user\n unsub - unsubscribe from user"); + return true; case 'on': + if(count($p)!=1) + return false; $this->set_notify($user, true); $this->from_site($user->jabber, 'notifications on'); return true; case 'off': + if(count($p)!=1) + return false; $this->set_notify($user, false); $this->from_site($user->jabber, 'notifications off'); return true; + case 'sub': + if(count($p)==1) { + $this->from_site($user->jabber, 'Specify the name of the user to subscribe to'); + return true; + } + $result=subs_subscribe_user($user, $p[1]); + if($result=='true') + $this->from_site($user->jabber, 'Subscribed to ' . $p[1]); + else + $this->from_site($user->jabber, $result); + return true; + case 'unsub': + if(count($p)==1) { + $this->from_site($user->jabber, 'Specify the name of the user to unsubscribe from'); + return true; + } + $result=subs_unsubscribe_user($user, $p[1]); + if($result=='true') + $this->from_site($user->jabber, 'Unsubscribed from ' . $p[1]); + else + $this->from_site($user->jabber, $result); + return true; default: return false; } @@ -221,7 +260,7 @@ class XMPPDaemon { $orig = clone($user); $user->jabbernotify = $notify; $result = $user->update($orig); - if (!$id) { + if (!$result) { $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError'); $this->log(LOG_ERR, 'Could not set notify flag to ' . $notify . @@ -234,7 +273,7 @@ class XMPPDaemon { } function add_notice(&$user, &$pl) { - $notice = Notice::saveNew($user->id, trim(substr($pl['body'], 0, 140)), 'xmpp'); + $notice = Notice::saveNew($user->id, trim(mb_substr($pl['body'], 0, 140)), 'xmpp'); if (is_string($notice)) { $this->log(LOG_ERR, $notice); return; @@ -430,6 +469,8 @@ class XMPPDaemon { } +mb_internal_encoding('UTF-8'); + $resource = ($argc > 1) ? $argv[1] : NULL; $daemon = new XMPPDaemon($resource);