Modern version of XMPPHP extlib

Original XMPPHP is no longer maintained
Therefore I've done some optimizations and imported some commits from birkner and zorn-v forks.
None of the forks really looked ready to be adopted...
This commit is contained in:
Diogo Cordeiro
2019-06-18 19:02:40 +01:00
parent fd9cac3c17
commit c7cdcc588a
20 changed files with 2659 additions and 2265 deletions

View File

@@ -1,43 +1,104 @@
<?php
// activate full error reporting
//error_reporting(E_ALL & E_STRICT);
/**
* @file: XMPPHP Cli example BOSH
*
* @info: If this script doesn't work, are you running 64-bit PHP with < 5.2.6?
*/
include 'XMPPHP/BOSH.php';
/**
* Activate full error reporting
* error_reporting(E_ALL & E_STRICT);
*
* XMPPHP Log levels:
*
* LEVEL_ERROR = 0;
* LEVEL_WARNING = 1;
* LEVEL_INFO = 2;
* LEVEL_DEBUG = 3;
* LEVEL_VERBOSE = 4;
*/
#Use XMPPHP_Log::LEVEL_VERBOSE to get more logging for error reports
#If this doesn't work, are you running 64-bit PHP with < 5.2.6?
$conn = new XMPPHP_BOSH('server.tld', 5280, 'username', 'password', 'xmpphp', 'server.tld', $printlog=true, $loglevel=XMPPHP_Log::LEVEL_VERBOSE);
require '../vendor/autoload.php';
$conf = array(
'server' => 'server.tld',
'port' => 5280,
'username' => 'username',
'password' => 'password',
'proto' => 'xmpphp',
'domain' => 'server.tld',
'printlog' => true,
'loglevel' => XMPPHP\Log::LEVEL_VERBOSE,
);
// Easy and simple for access to variables with their names
extract($conf);
$conn = new XMPPHP\BOSH($server, $port, $username, $password, $proto, $domain, $printlog, $loglevel);
$conn->autoSubscribe();
try {
$conn->connect('http://server.tld:5280/xmpp-httpbind');
while(!$conn->isDisconnected()) {
$payloads = $conn->processUntil(array('message', 'presence', 'end_stream', 'session_start'));
foreach($payloads as $event) {
$pl = $event[1];
switch($event[0]) {
case 'message':
print "---------------------------------------------------------------------------------\n";
print "Message from: {$pl['from']}\n";
if($pl['subject']) print "Subject: {$pl['subject']}\n";
print $pl['body'] . "\n";
print "---------------------------------------------------------------------------------\n";
$conn->message($pl['from'], $body="Thanks for sending me \"{$pl['body']}\".", $type=$pl['type']);
if($pl['body'] == 'quit') $conn->disconnect();
if($pl['body'] == 'break') $conn->send("</end>");
break;
case 'presence':
print "Presence: {$pl['from']} [{$pl['show']}] {$pl['status']}\n";
break;
case 'session_start':
print "Session Start\n";
$conn->getRoster();
$conn->presence($status="Cheese!");
break;
}
}
while (!$conn->isDisconnected()) {
$events = array('message', 'presence', 'end_stream', 'session_start');
$payloads = $conn->processUntil($events);
foreach ($payloads as $result) {
list($event, $data) = $result;
if (isset($data)) {
extract($data);
}
switch ($event) {
case 'message':
if (!$body) {
break;
}
echo str_repeat('-', 80);
echo "Message from: $from";
if (isset($subject)) {
echo "Subject: $subject";
}
echo $body;
echo str_repeat('-', 80);
$cmd = explode(' ', $body);
$body = "Mi no entender! '$body'";
$conn->message($from, $body, $type);
if (isset($cmd[0])) {
if ($cmd[0] == 'quit') {
$conn->disconnect();
}
if ($cmd[0] == 'break') {
$conn->send('</end>');
}
}
break;
case 'presence':
echo "Presence: $from [$show] $status\n";
break;
case 'session_start':
echo "Session start\n";
$conn->getRoster();
$conn->presence('Quasar!');
break;
}
}
}
} catch(XMPPHP_Exception $e) {
} catch (XMPPHP\Exception $e) {
die($e->getMessage());
}