* 26.11.2023 -> open_conversation eingebaut
This commit is contained in:
@@ -1,67 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
Nenninger N-Tools.de
|
Nenninger N-Tools.de
|
||||||
Version 1.12
|
Version 1.13
|
||||||
|
|
||||||
*20.06.2023 -> neue Parameter und devid darf keine Zeichen sondern nur Buchstaben und Zahlen enthalten
|
|
||||||
*13.09.2023 -> cookie Datei und Login.dat umbenannt
|
|
||||||
*19.09.2023 -> $_SERVER['SERVER_NAME'] wird wenn nicht da auf Hostname gesetzt
|
|
||||||
*20.09.2023 -> get_channel_messages korrigiert (limit, offset)
|
|
||||||
*26.09.2023 -> löschen von Dateien eingebaut;
|
|
||||||
*31.10.2023 -> Fehler beim speichern der Logins gefixt
|
|
||||||
|
|
||||||
hermine@THW PHPConnector
|
|
||||||
inspiriert von https://gitlab.com/aeberhardt/stashcat-api-client
|
|
||||||
|
|
||||||
curl und php >= 7.4
|
|
||||||
|
|
||||||
Funktionen:
|
|
||||||
|
|
||||||
get_last_error();
|
|
||||||
|
|
||||||
|
|
||||||
login(soll der Login gespeichert werden);
|
|
||||||
|
|
||||||
get_companies_list(); -> List der Firmen (wird beim Login erstellt)
|
|
||||||
get_conversations_list(); -> List der Konversationen (wird beim Login erstellt)
|
|
||||||
get_channels_list(); -> List der Kanäle (1. Firma) (wird beim Login erstellt)
|
|
||||||
|
|
||||||
send_message_to_conversation(id,Nachricht,optional URLs als array, optional Standort als Array);
|
|
||||||
send_message_to_channel(id,Nachricht,optional URLs als array, optional Standort als Array);
|
|
||||||
|
|
||||||
send_message_with_file_to_conversation(id,Nachricht,Dateiinhalt (max 5MB),Dateiname in Hermine,Type Bsp:'image/jpeg',Breite Standard 0,Höhe Standard 0);
|
|
||||||
send_message_with_file_to_channel(id,Nachricht,Dateiinhalt (max 5MB),Dateiname in Hermine,Type Bsp:'image/jpeg',Breite Standard 0,Höhe Standard 0);
|
|
||||||
|
|
||||||
get_channel_messages(id, $_limit=50, $_offset=0); -< array
|
|
||||||
get_conversation_messages(id,limit=50,offset=0); -< array
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Beispiele:
|
|
||||||
|
|
||||||
$hermine = new hermineConnect('mailadresse','Accountpassword','Verschlüsselungskennwort');
|
|
||||||
if($hermine->login(true) !== false){
|
|
||||||
$array = $hermine->get_companies_list();
|
|
||||||
print_r($array);
|
|
||||||
$array = $hermine->get_conversations_list();
|
|
||||||
print_r($array);
|
|
||||||
$array = $hermine->get_channels_list();
|
|
||||||
print_r($array);
|
|
||||||
|
|
||||||
$file = file_get_contents('./test.jpg');
|
|
||||||
$hermine->send_message_with_file_to_channel(165562,'jpg per php',$file,'test.jpg','image/jpeg',1080,2068);
|
|
||||||
|
|
||||||
$array = $hermine->get_channel_messages(165562);
|
|
||||||
foreach($array as $msg){
|
|
||||||
echo $msg->text."\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$array = $hermine->search_user('Nennin');
|
|
||||||
|
|
||||||
}else{
|
|
||||||
//login fehlgeschlagen
|
|
||||||
print_r($hermine->get_last_error);
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -176,7 +116,7 @@ class UUID {
|
|||||||
|
|
||||||
|
|
||||||
class hermineConnect{
|
class hermineConnect{
|
||||||
private $VERSION = '1.12';
|
private $VERSION = '1.13';
|
||||||
private $MACHINENAME = 'default';
|
private $MACHINENAME = 'default';
|
||||||
private $hermineServer = 'https://api.thw-messenger.de';
|
private $hermineServer = 'https://api.thw-messenger.de';
|
||||||
private $connectorID = "";
|
private $connectorID = "";
|
||||||
@@ -202,9 +142,6 @@ class hermineConnect{
|
|||||||
$delimiter = '-------------' . $boundary;
|
$delimiter = '-------------' . $boundary;
|
||||||
|
|
||||||
foreach ($fields as $name => $content) {
|
foreach ($fields as $name => $content) {
|
||||||
/*echo "@@\n";
|
|
||||||
print_r($content);
|
|
||||||
echo "@@\n";*/
|
|
||||||
$data .= "--" . $delimiter . $eol
|
$data .= "--" . $delimiter . $eol
|
||||||
. 'Content-Disposition: form-data; name="' . $name . "\"".$eol.$eol
|
. 'Content-Disposition: form-data; name="' . $name . "\"".$eol.$eol
|
||||||
. $content . $eol
|
. $content . $eol
|
||||||
@@ -579,8 +516,7 @@ class hermineConnect{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function _delete_files($_ids=[]){
|
function _delete_files($_ids=[]){
|
||||||
/*file_ids=%5B8826184%5D ([8826184])*/
|
|
||||||
$data = [
|
$data = [
|
||||||
"file_ids" => json_encode($_ids)
|
"file_ids" => json_encode($_ids)
|
||||||
];
|
];
|
||||||
@@ -588,14 +524,47 @@ class hermineConnect{
|
|||||||
$response = $this->request($this->hermineServer."/file/delete",$data);
|
$response = $this->request($this->hermineServer."/file/delete",$data);
|
||||||
|
|
||||||
if($response !== false){
|
if($response !== false){
|
||||||
//print_r($response);
|
|
||||||
return $response->success;
|
return $response->success;
|
||||||
}else{
|
}else{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
function _open_conversation($_members){
|
||||||
|
$conversation_key = openssl_random_pseudo_bytes(32);
|
||||||
|
$receivers = [];
|
||||||
|
//selbst immer Mitglied
|
||||||
|
$key = '';
|
||||||
|
if(openssl_private_encrypt($conversation_key,$key,$this->private_key,OPENSSL_PKCS1_PADDING) === false)
|
||||||
|
return false;
|
||||||
|
$receivers[] = ['id' => (int)$this->user_id, 'key' => base64_encode($key)];
|
||||||
|
|
||||||
|
foreach($_members as $member){
|
||||||
|
if(isset($member['id']) && isset($member['public_key'])){
|
||||||
|
if(openssl_public_encrypt($conversation_key,$key,$member['public_key'],OPENSSL_PKCS1_OAEP_PADDING ) === false)
|
||||||
|
return false;
|
||||||
|
//throw new Exception(openssl_error_string());
|
||||||
|
$receivers[] = ['id' => (int)$member['id'], 'key' => base64_encode($key)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
"members" => json_encode($receivers)
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = $this->request($this->hermineServer."/message/createEncryptedConversation",$data);
|
||||||
|
|
||||||
|
if($response !== false){
|
||||||
|
//wenn neu angelgt, muss der Key angefragt werden
|
||||||
|
if($response->conversation->unique_identifier == '' && $response->conversation->key_requested == '')
|
||||||
|
$this->request($this->hermineServer."/security/reset_content_key",["conversation_id" => $response->conversation->id]);
|
||||||
|
return $response->conversation;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
Öffentliche Funktionen
|
Öffentliche Funktionen
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -652,7 +621,6 @@ class hermineConnect{
|
|||||||
$this->channels = $this->get_channels($this->companies->companies[0]->id);
|
$this->channels = $this->get_channels($this->companies->companies[0]->id);
|
||||||
$this->conversations = $this->get_conversations();
|
$this->conversations = $this->get_conversations();
|
||||||
if($_saveLogin){
|
if($_saveLogin){
|
||||||
print_r($savelogin);
|
|
||||||
$savelogin->ClientKey = $this->client_key;
|
$savelogin->ClientKey = $this->client_key;
|
||||||
$savelogin->DeviceId = $this->connectorID;
|
$savelogin->DeviceId = $this->connectorID;
|
||||||
$savelogin->UserID = $this->user_id;
|
$savelogin->UserID = $this->user_id;
|
||||||
@@ -744,5 +712,9 @@ class hermineConnect{
|
|||||||
public function delete_files($_ids=[]){
|
public function delete_files($_ids=[]){
|
||||||
return $this->_delete_files($_ids);
|
return $this->_delete_files($_ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function open_conversation($_members){
|
||||||
|
return $this->_open_conversation($_members);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
71
readme.txt
71
readme.txt
@@ -2,12 +2,13 @@
|
|||||||
Nenninger N-Tools.de
|
Nenninger N-Tools.de
|
||||||
Version 1.12
|
Version 1.12
|
||||||
|
|
||||||
*20.06.2023 -> neue Parameter und devid darf keine Zeichen sondern nur Buchstaben und Zahlen enthalten
|
* 20.06.2023 -> neue Parameter und devid darf keine Zeichen sondern nur Buchstaben und Zahlen enthalten
|
||||||
*13.09.2023 -> cookie Datei und Login.dat umbenannt
|
* 13.09.2023 -> cookie Datei und Login.dat umbenannt
|
||||||
*19.09.2023 -> $_SERVER['SERVER_NAME'] wird wenn nicht da auf Hostname gesetzt
|
* 19.09.2023 -> $_SERVER['SERVER_NAME'] wird wenn nicht da auf Hostname gesetzt
|
||||||
*20.09.2023 -> get_channel_messages korrigiert (limit, offset)
|
* 20.09.2023 -> get_channel_messages korrigiert (limit, offset)
|
||||||
*26.09.2023 -> löschen von Dateien eingebaut;
|
* 26.09.2023 -> löschen von Dateien eingebaut;
|
||||||
*31.10.2023 -> Fehler beim speichern der Logins gefixt
|
* 31.10.2023 -> Fehler beim speichern der Logins gefixt
|
||||||
|
* 26.11.2023 -> open_conversation eingebaut
|
||||||
|
|
||||||
hermine@THW PHPConnector
|
hermine@THW PHPConnector
|
||||||
inspiriert von https://gitlab.com/aeberhardt/stashcat-api-client
|
inspiriert von https://gitlab.com/aeberhardt/stashcat-api-client
|
||||||
@@ -18,7 +19,6 @@
|
|||||||
|
|
||||||
get_last_error();
|
get_last_error();
|
||||||
|
|
||||||
|
|
||||||
login(soll der Login gespeichert werden);
|
login(soll der Login gespeichert werden);
|
||||||
|
|
||||||
get_companies_list(); -> List der Firmen (wird beim Login erstellt)
|
get_companies_list(); -> List der Firmen (wird beim Login erstellt)
|
||||||
@@ -34,35 +34,17 @@
|
|||||||
get_channel_messages(id, $_limit=50, $_offset=0); -< array
|
get_channel_messages(id, $_limit=50, $_offset=0); -< array
|
||||||
get_conversation_messages(id,limit=50,offset=0); -< array
|
get_conversation_messages(id,limit=50,offset=0); -< array
|
||||||
|
|
||||||
|
get_channel_infos($_channel_id); -< array
|
||||||
|
|
||||||
|
search_user($_searchby, $_limit=50, $_offset=0); -< array
|
||||||
|
|
||||||
Beispiele:
|
list_uploaded_chat_files($_search); -< array
|
||||||
|
|
||||||
$hermine = new hermineConnect('mailadresse','Accountpassword','Verschlüsselungskennwort');
|
delete_files($_ids=[]) -< boolean
|
||||||
if($hermine->login(true) !== false){
|
|
||||||
$array = $hermine->get_companies_list();
|
|
||||||
print_r($array);
|
|
||||||
$array = $hermine->get_conversations_list();
|
|
||||||
print_r($array);
|
|
||||||
$array = $hermine->get_channels_list();
|
|
||||||
print_r($array);
|
|
||||||
|
|
||||||
$file = file_get_contents('./test.jpg');
|
open_conversation($_members) -< array
|
||||||
$hermine->send_message_with_file_to_channel(165562,'jpg per php',$file,'test.jpg','image/jpeg',1080,2068);
|
|
||||||
|
|
||||||
$array = $hermine->get_channel_messages(165562);
|
Beispiel "Login, Chats holen, Nachricht mit Datei senden":
|
||||||
foreach($array as $msg){
|
|
||||||
echo $msg->text."\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$array = $hermine->search_user('Nennin');
|
|
||||||
|
|
||||||
}else{
|
|
||||||
//login fehlgeschlagen
|
|
||||||
print_r($hermine->get_last_error);
|
|
||||||
}
|
|
||||||
|
|
||||||
Beispiele 1:
|
|
||||||
|
|
||||||
$hermine = new hermineConnect('mailadresse','Accountpassword','Verschlüsselungskennwort');
|
$hermine = new hermineConnect('mailadresse','Accountpassword','Verschlüsselungskennwort');
|
||||||
if($hermine->login(true) !== false){
|
if($hermine->login(true) !== false){
|
||||||
@@ -76,26 +58,23 @@
|
|||||||
$file = file_get_contents('./ich.jpg');
|
$file = file_get_contents('./ich.jpg');
|
||||||
$hermine->send_message_with_file_to_channel(165562,'jpg per php',$file,'test.jpg','image/jpeg',1080,2068);
|
$hermine->send_message_with_file_to_channel(165562,'jpg per php',$file,'test.jpg','image/jpeg',1080,2068);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
//login fehlgeschlagen
|
//login fehlgeschlagen
|
||||||
print_r($hermine->get_last_error);
|
print_r($hermine->get_last_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
Beispiel 2:
|
Beispiel "Login und Prüfen ob Mitglieder in Channels vorhanden sind":
|
||||||
$hermine = new hermineConnect('mailadresse','Accountpassword','Verschlüsselungskennwort');
|
$hermine = new hermineConnect('mailadresse','Accountpassword','Verschlüsselungskennwort');
|
||||||
if($hermine->login(true) !== false){
|
if($hermine->login(true) !== false){
|
||||||
$quasselgruppe = $hermine->get_channel_infos(110266);
|
$quasselgruppe = $hermine->get_channel_infos(110266);
|
||||||
$content .= 'die Quasselgruppe hat '.count($quasselgruppe->members).' Mitglieder<br>Achtung Karin ist RSt!!!<br><br>';
|
$content .= 'die Quasselgruppe hat '.count($quasselgruppe->members).' Mitglieder';
|
||||||
//print_r($quasselgruppe->members);
|
|
||||||
//AnkündigungsCHannel 209674
|
//AnkündigungsCHannel 209674
|
||||||
$gruppe = $hermine->get_channel_infos(209674);
|
$gruppe = $hermine->get_channel_infos(209674);
|
||||||
$content .= 'der Ankündigungschannel hat '.count($gruppe->members).' Mitglieder<br>Achtung Karin ist RSt!!!<br><br>';
|
$content .= 'der Ankündigungschannel hat '.count($gruppe->members).' Mitglieder';
|
||||||
|
|
||||||
$array = $hermine->search_user('(OV Alzenau)',200,0);
|
$array = $hermine->search_user('(OV Alzenau)',200,0);
|
||||||
//print_r($array);
|
|
||||||
$content .= '(OV Alzenau) haben '.count($array).' Mitglieder im Nachnamen<br>Achtung Karin ist RSt!!!<br><table >';
|
$content .= '(OV Alzenau) haben '.count($array).' Mitglieder im Nachnamen<table >';
|
||||||
$content .= '<tr><th>Helfende</th><th>Quasselgruppe</th><th>Ankündigungs Gruppe</th></tr>';
|
$content .= '<tr><th>Helfende</th><th>Quasselgruppe</th><th>Ankündigungs Gruppe</th></tr>';
|
||||||
foreach($array as $user){
|
foreach($array as $user){
|
||||||
$content .= '<tr style="border-bottom: solid 1px;"><td>'.$user->first_name.' '.$user->last_name;
|
$content .= '<tr style="border-bottom: solid 1px;"><td>'.$user->first_name.' '.$user->last_name;
|
||||||
@@ -109,10 +88,22 @@
|
|||||||
if($uAG !== false){
|
if($uAG !== false){
|
||||||
$content .= 'X';
|
$content .= 'X';
|
||||||
}
|
}
|
||||||
//$content .= print_r($uQG,true);
|
|
||||||
$content .= "</td></tr>\n";
|
$content .= "</td></tr>\n";
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
//login fehlgeschlagen
|
//login fehlgeschlagen
|
||||||
print_r($hermine->get_last_error);
|
print_r($hermine->get_last_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Beispiel "Login und Konversation erstellen" *wenn diese schon vorhanden ist, wird die schon vorhandene zurück gegeben*:
|
||||||
|
$hermine = new hermineConnect('mailadresse','Accountpassword','Verschlüsselungskennwort');
|
||||||
|
if($hermine->login(true) !== false){
|
||||||
|
$ret = $hermine->open_conversation([
|
||||||
|
['id'=>xxxxxxx,'public_key'=>'-----BEGIN PUBLIC KEY-----hier muss der Publickey rein (kann mit search_user geholt werden )-----END PUBLIC KEY-----'],
|
||||||
|
['id'=>xxxxxxx,'public_key'=>'-----BEGIN PUBLIC KEY-----hier muss der Publickey rein (kann mit search_user geholt werden )-----END PUBLIC KEY-----'],
|
||||||
|
...
|
||||||
|
]);
|
||||||
|
print_r($ret);
|
||||||
|
}else{
|
||||||
|
print_r($hermine->get_last_error);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user