根据我项目的性质,我想使用一些脚本(php)添加/更新名册信息。我想以同样的方式做到这一点,它是由ejabberd的web管理界面手动完成的。但我想自动化这个。有没有办法做到这一点?
对于如何实现这一目标的任何建议都非常感谢。提前谢谢!
答案 0 :(得分:0)
如果您使用的是Openfire,您可以使用Userservice插件,它允许您通过HTTP请求管理用户名单
答案 1 :(得分:0)
<?php
/**
* Created by JetBrains PhpStorm.
* User: Abel Espinosa Cañive
* Date: 8/5/15
* Time: 7:43 PM
* To change this template use File | Settings | File Templates.
*/
/*
ERROR CODE:
0 :Success
Other Number:Error
*/
define ( "MAX_SIZE", "5120" ); // 5MB MAX file size
define ( "DOMAIN", "my.domain.com" );
class eJabberedPlugin
{
var $display_debug_info;
//activa la opcion de debugueo del XMPP
function eJabberedPlugin($v_display_debug_info=false)
{
$this->display_debug_info = $v_display_debug_info;
}
//Crea un nuevo usuario
//$UserLogin : usuario que se creará
//$UserPass : contraseña para el usuario nuevo
function createNewUserREST($UserLogin,$UserPass)
{
$url = "http://DOMAIN:5280/rest/";
$request = "register $UserLogin DOMAIN $UserPass";
$response = $this->sendRESTRequest($url, $request);
return $response;
}
//Adiciona Amigo1 a Amigo2 y viceversa (forzado)
//$user1 : usuario que desea agregar a $user2
//$user2 : usuario que desea agregar a $user1
//$nick_user1 : nick que le dará el $user2 al $user1 en su roster
//$nick_user2 : nick que le dará el $user1 al $user2 en su roster
//$group1 : Grupo en el roster de $user1 que se agregará al $user2
//$group2 : Grupo en el roster de $user2 que se agregará al $user1
function addFriendREST($user1,$user2,$nick_user1="",$nick_user2="",$group1="Friends",$group2="Friends")
{
$url = "http://DOMAIN:5280/rest/";
$exist_user1 = $this->checkUser($user1);
$exist_user2 = $this->checkUser($user2);
if($exist_user1==0 && $exist_user2==0)
{
$request1 = "add_rosteritem $user1 DOMAIN $user2 DOMAIN $nick_user2 $group1 both";
$request2 = "add_rosteritem $user2 DOMAIN $user1 DOMAIN $nick_user1 $group2 both";
$response1 = $this->sendRESTRequest($url, $request1);
$response2 = $this->sendRESTRequest($url, $request2);
}
else
{
$response1 = $exist_user1;
$response2 = $exist_user2;
}
$response_array = [$response1,$response2];
return $response_array;
}
//Elimina un usuario del servidor
//$username : Usuario que se eliminará
function deleteUserREST($username)
{
$url = "http://DOMAIN:5280/rest/";
$request = "unregister $username DOMAIN";
$response = $this->sendRESTRequest($url, $request);
return $response;
}
//Agrega o cambia un avatar a un usuario dado
//$username : usuario que se modificará
//$photo_url : archivo de la imagen nueva
function addAvatarREST($username,$photo_url)
{
$url = "http://DOMAIN:5280/rest/";
$raw_file = file_get_contents($photo_url["tmp_name"]);
$photo = base64_encode($raw_file);
$request = "set_vcard2 $username DOMAIN PHOTO BINVAL $photo";
$response = $this->sendRESTRequest($url, $request);
return $response;
}
//Verifica si el usuario existe en el servidor
//$username : Usuario a verificar
function checkUser($username)
{
$url = "http://DOMAIN:5280/rest/";
$request = "check_account $username DOMAIN";
$response = $this->sendRESTRequest($url, $request);
return $response;
}
//Obtiene una lista de todos los usuarios registrados en el servidor
function allUsers()
{
$url = "http://DOMAIN:5280/rest/";
$request = "registered_users DOMAIN";
$response = $this->sendRESTRequest($url, $request);
$arr = str_split($response);
$collecting = "";
$result = [];
for ($i = 0; $i < count($arr); $i++) {
if (ctype_alnum($arr[$i])==true) {
$collecting.=$arr[$i];
if ($i==count($arr)-1) {
array_push($result,$collecting);
}
}
else
{
array_push($result,$collecting);
$collecting = "";
}
}
return $result;
}
//Ejecuta las consultas con el servidor
//$url : Direccion del servidor REST
//$xml : Consulta
function sendRESTRequest ($url, $xml) {
$context = stream_context_create(
array('http' =>
array(
'method' => "POST",
'header' => "Content-Length: ".strlen($xml),
'content' => $xml
)
)
);
$file = file_get_contents($url, false, $context);
return "$file";
}
//Obtiene la extension del archivo adjunto
//$str : Nombre del archivo que se verifica
function getExtension($str) {
$i = strrpos ( $str, "." );
if (! $i) {
return "";
}
$l = strlen ( $str ) - $i;
$ext = substr ( $str, $i + 1, $l );
return $ext;
}
}
//*****FIN DE LA CLASE*****//
// Crea una instancia de la clase eJabberedPlugin
$obj = new eJabberedPlugin();
// Ahora comenzamos a usar la clase de arriba :)
//Crear nuevo usuario
if(isset($_POST['action']) && $_POST['action']=='newUser')
{
if(isset($_POST['user']) && isset($_POST['pass']))
{
$result = $obj->createNewUserREST($_POST['user'],$_POST['pass']);
if($result==0)
{
echo "created ok";
}
else
{
echo "not created, error:$result";
}
}
}
//Eliminar usuario
elseif(isset($_POST['action']) && $_POST['action']=='delUser')
{
if(isset($_POST['user']))
{
$result = $obj->deleteUserREST($_POST['user']);
if($result==0)
{
echo "deleted ok";
}
else
{
echo "not deleted, error:$result";
}
}
}
//Agregar amigos
elseif(isset($_POST['action']) && $_POST['action']=='addFriend')
{
if(isset($_POST['userFriend1']) && isset($_POST['userFriend2']) && isset($_POST['nickUser1']) && isset($_POST['nickUser2']) && isset($_POST['groupUser1']) && isset($_POST['groupUser2']) )
{
$result = $obj->addFriendREST($_POST['userFriend1'],$_POST['userFriend2'],$_POST['nickUser1'],$_POST['nickUser2'],$_POST['groupUser1'],$_POST['groupUser2']);
if(count($result)==2 && $result[0]==0 && $result[1]==0)
{
echo "added ok";
}
else
{
echo "not added, error:<br>";
if($result[0]==1 && $result[1]==0)
{
echo "Usuario ".$_POST['userFriend1'].": Usuario no registrado.<br>";
echo "Usuario ".$_POST['userFriend2'].": ".$result[1]." errores<br>";
}
elseif($result[0]==0 && $result[1]==1)
{
echo "Usuario ".$_POST['userFriend1'].": ".$result[0]." errores<br>";
echo "Usuario ".$_POST['userFriend2'].": Usuario no registrado.<br>";
}
else
{
echo "Usuarios ".$_POST['userFriend1']." y ".$_POST['userFriend2']." no registrados.<br>";
}
}
}
}
//Agregar avatar
elseif(isset($_POST['action']) && $_POST['action']=='addAvatar')
{
if(isset($_POST['user']) && isset($_FILES['avatar']))
{
$filename = stripslashes ( $_FILES ["avatar"] ["name"] );
$size = filesize ( $_FILES ["avatar"] ["tmp_name"]);
// Convert extension into a lower case format
$ext = $obj->getExtension ( $filename );
$ext = strtolower ( $ext );
// File extension check
// Valid image formats
$valid_formats = array ("jpg","png","gif","bmp","jpeg");
if (in_array ( $ext, $valid_formats )) {
// File size check
if ($size < (MAX_SIZE * 1024)) {
$result = $obj->addAvatarREST($_POST['user'],$_FILES['avatar']);
if($result==0)
{
echo "added ok";
}
else
{
echo "not added, error:$result";
}
}
}
}
}
?>