aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/beechat.php250
1 files changed, 0 insertions, 250 deletions
diff --git a/lib/beechat.php b/lib/beechat.php
deleted file mode 100644
index bf002d648..000000000
--- a/lib/beechat.php
+++ /dev/null
@@ -1,250 +0,0 @@
-<?
-/*
- allow_change_subj
- allow_private_messages
- allow_query_users
- allow_user_invites
- anonymous
- logging
- max_users
- members_by_default
- members_only
- moderated
- password
- password_protected
- persistent
- public
- public_list
- title
-
-muc_room_set_affiliation struct[{name, String}, {service, String},
- {jid, String}, {affiliation, Affiliation}] Integer
-
-
-*/
- //$request = xmlrpc_encode_request('muc_online_rooms', "global", (array('encoding' => 'utf-8')));
-
-
-function ejabberd_xmlrpc_send($request)
-{
- $context = stream_context_create(array('http' => array(
- 'method' => "POST",
- 'header' => "User-Agent: XMLRPC::Client mod_xmlrpc\r\n" .
- "Content-Type: text/xml\r\n" .
- "Content-Length: ".strlen($request),
- 'content' => $request
- )));
-
- $file = file_get_contents("http://".elgg_get_plugin_setting("xmlrpcip", "beechat").":4560/RPC2", false, $context);
-
- $response = xmlrpc_decode($file);
- if (is_array($response) && xmlrpc_is_fault($response)) {
- trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
- } else {
- // print_r($response);
- }
-}
-
-function ejabberd_xmlrpc_command($command, $params)
-{
- //error_log("send xmlrpc: ".$command);
- $request = xmlrpc_encode_request($command, $params, (array('encoding' => 'utf-8')));
- return ejabberd_xmlrpc_send($request);
-}
-
-function xmpp_escape($name) {
- // http://xmpp.org/extensions/xep-0106.html#escaping
- $name = str_replace(' ', '\\20', $name);
- $name = str_replace('"', '\\22', $name);
- $name = str_replace('&', '\\26', $name);
- $name = str_replace("'", '\\27', $name);
- $name = str_replace('/', '\\2f', $name);
- $name = str_replace(';', '\\3a', $name);
- $name = str_replace('<', '\\3c', $name);
- $name = str_replace('>', '\\3e', $name);
- $name = str_replace('@', '\\40', $name);
- $name = str_replace('\\', '\\5c', $name);
- return $name;
-}
-
-class EjabberdMucRoom {
- function __construct($group) {
- $this->group = $group;
- }
- function setOption($name, $value) {
- $group = $this->group;
- $param=array("name"=>elgg_get_friendly_title($group->name),
- "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
- "option"=>$name,
- "value"=>$value);
- ejabberd_xmlrpc_command('muc_room_change_option', $param);
- }
- function addMember($member) {
- //"outcast" | "none" | "member" | "admin" | "owner"
- $group = $this->group;
- if ($member->guid === $group->owner_guid)
- $affiliation = "owner";
- elseif ($group->canEdit($member->guid))
- $affiliation = "admin";
- else
- $affiliation = "member";
- $this->setAffiliation($member, $affiliation);
- }
-
- function setAffiliation($member, $affiliation) {
- $group = $this->group;
- $param = array("name" => elgg_get_friendly_title($group->name),
- "service" => elgg_get_plugin_setting("groupdomain", "beechat"),
- "jid" => xmpp_escape($member->username) . '@' . elgg_get_plugin_setting("domain", "beechat"),
- "affiliation" => $affiliation);
- ejabberd_xmlrpc_command('muc_room_set_affiliation', $param);
- //echo "set affiliation ".$member->username."<br/>";
- }
-}
-
-function ejabberd_create_group($group)
-{
- //echo "creating " . $group->name . "<br/>";
- // create room
- $param=array("name"=>elgg_get_friendly_title($group->name),
- "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
- "server"=>elgg_get_plugin_setting("domain", "beechat"));
- ejabberd_xmlrpc_command('create_muc_room', $param);
-
- // persistency
-
- $room = new EjabberdMucRoom($group);
- $room->setOption("persistent", true);
- $room->setOption("title", $group->name);
- // open to public?
- if ($group->isPublicMembership()) {
- $room->setOption("members_only", false);
- }
- else
- $room->setOption("members_only", true);
-
- if ($group->access_id === ACCESS_PUBLIC) {
- $room->setOption("public_list", true);
- $room->setOption("public", true);
- }
- else {
- $room->setOption("public_list", false);
- $room->setOption("public", false);
- }
- $members = $group->getMembers(0);
- foreach($members as $member) {
- $room->addMember($member);
- }
- $room->addMember(get_entity($group->owner_guid));
-}
-
-function ejabberd_destroy_group($group)
-{
- $param=array("name"=>elgg_get_friendly_title($group->name),
- "service"=>elgg_get_plugin_setting("groupdomain", "beechat"),
- "server"=>elgg_get_plugin_setting("domain", "beechat"));
- ejabberd_xmlrpc_command('delete_muc_room', $param);
-}
-
-function ejabberd_getjid($user, $do_external=false)
-{
- if ($user->foreign || ($do_external && $user->alias && get_plugin_usersetting("usealias", $user->guid,"openid_client"))) {
- if ($user->foreign)
- $webid = $user->webid;
- else
- $webid = $user->alias;
- if (strpos($webid, 'http') === 0) {
- // http or https addresses
- $hostparts = parse_url($webid);
- $urlparts = explode('/', $webid);
- $host = $hostparts['host'];
- $username = $urlparts[count($urlparts)-1];
- } else {
- if (strpos($webid, ':') > 0) {
- $webidparts = explode(':', $webid);
- $hostparts = explode('@',$webidparts[1]);
- } else {
- $hostparts = explode('@',$webid);
- }
- $username = $hostparts[0];
- $host = $hostparts[1];
- }
- }
- else {
- $username = $user->username;
- $host = elgg_get_plugin_setting("domain", "beechat");
- }
- return xmpp_escape($username) . '@' . $host;
-}
-
-function ejabberd_friend_command($user, $friend, $command, $is_out) // $user adds $friend
-{
- error_log(" * ".$friend->username."->".ejabberd_getjid($user)." ".$command);
- if ($friend->foreign) {
- error_log(" * beechat: friend is foreign!");
- return;
- }
- $param = array("user" => elgg_get_friendly_title($friend->username),
- "server" => elgg_get_plugin_setting("domain", "beechat"),
- "from" => ejabberd_getjid($user),
- "subs" => $command);
- if ($is_out) {
- error_log("out");
- ejabberd_xmlrpc_command('send_roster_request_out', $param);
- }
- else {
- $param['reason'] = 'unknown';
- ejabberd_xmlrpc_command('send_roster_request_in', $param);
- }
-}
-
-
-function ejabberd_friend_request($user, $friend) // $user adds $friend
-{
- error_log('ejabberd_friend_request');
- ejabberd_friend_command($friend, $user, 'subscribe', true); // out:$user : $friend
- error_log('ejabberd_friend_requested');
-}
-function ejabberd_friend_accept($user, $friend) // $user adds $friend
-{
- error_log('ejabberd_friend_accept');
- ejabberd_friend_command($friend, $user, 'subscribed', true);
- // following might be needed to have symmetry (and important for remote)
- if ($friend->foreign) {
- // following is needed for xmpp nodes
- ejabberd_friend_command($friend, $user, 'subscribe', true);
- }
- // ejabberd_friend_command($friend, $user, 'subscribed', false);
- // following can't be faked
- if (!$friend->foreign)
- ejabberd_friend_command($user, $friend, 'subscribed', true);
- error_log('ejabberd_friend_accepted');
-}
-function ejabberd_friend_deny($user, $friend) // $user adds $friend
-{
- error_log('ejabberd_friedeny');
- ejabberd_friend_command($friend, $user, 'unsubscribed', true);
-}
-function ejabberd_friend_remove($user, $friend) // $user adds $friend
-{
- error_log('ejabberd_friend_remove');
- if ($friend->foreign) {
- ejabberd_friend_command($friend, $user, 'unsubscribed', true);
- ejabberd_friend_command($friend, $user, 'unsubscribed', false);
- }
- else
- ejabberd_friend_command($friend, $user, 'unsubscribed', false);
- if (!$friend->foreign)
- ejabberd_friend_command($user, $friend, 'unsubscribed', false);
- error_log('ejabberd_friend_removed');
-}
-
-/*function ejabberd_send_chat($from, $to, $body) { // $user adds $friend
- $param = array("body"=>$body,
- "from"=>$from,
- "to"=>$to);
- ejabberd_xmlrpc_command('send_chat_message', $param);
-}*/
-
-
-?>