Files
hermineConnectPHP/readme.txt

126 lines
5.6 KiB
Plaintext

!!! DAS SCRIPT IST NUR IN EINER GESICHERTEN UMGEBUNG ZU NUTZEN !!!
Das Speichern von Zugangsdaten auf öffentlichen Servern stellt ein hohes Risiko da!
Nenninger N-Tools.de
* 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
* V1.13 26.11.2023 -> open_conversation eingebaut
* V1.14 -> 231220 sendmsg: Text wird jetzt als Markdown formatiert markiert (Parameter "metainfo")
* V1.15 -> 240208 Die Logindaten und der Keks werden jetzt von der php Datei aus im Unterverzeichnis /data gespeichert (muss von Hand erstellt werden)
* V1.16 -> 240820 neue Funktion "download_file($_id)"
* V1.17 -> 241021 nach Update auf 6.8.0 gibt es bei der Message Location kein "encryptet" mehr (if(isset($message->location->encrypted)) eingebaut)
* V1.18 -> 241030 nach Update auf 6.8.0 sind bei der ChannelInfo keine Mitglieder mehr dabei. Abfrage geändert;
Formatierungen Markdown:
*fett*
~durchgestrichen~
`monospace`
geschützte Leerzeichen (0x00A0) alt+0160
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
get_channel_infos($_channel_id); -< array
search_user($_searchby, $_limit=50, $_offset=0); -< array
list_uploaded_chat_files($_search); -< array
download_file($_id) -< array
delete_files($_ids=[]) -< boolean
open_conversation($_members) -< array
Beispiel "Login, Chats holen, Nachricht mit Datei senden":
$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('./ich.jpg');
$hermine->send_message_with_file_to_channel(165562,'jpg per php',$file,'test.jpg','image/jpeg',1080,2068);
}else{
//login fehlgeschlagen
print_r($hermine->get_last_error);
}
Beispiel "Login und Prüfen ob Mitglieder in Channels vorhanden sind":
$hermine = new hermineConnect('mailadresse','Accountpassword','Verschlüsselungskennwort');
if($hermine->login(true) !== false){
$quasselgruppe = $hermine->get_channel_infos(110266);
$content .= 'die Quasselgruppe hat '.count($quasselgruppe->members).' Mitglieder';
//AnkündigungsCHannel 209674
$gruppe = $hermine->get_channel_infos(209674);
$content .= 'der Ankündigungschannel hat '.count($gruppe->members).' Mitglieder';
$array = $hermine->search_user('(OV Alzenau)',200,0);
$content .= '(OV Alzenau) haben '.count($array).' Mitglieder im Nachnamen<table >';
$content .= '<tr><th>Helfende</th><th>Quasselgruppe</th><th>Ankündigungs Gruppe</th></tr>';
foreach($array as $user){
$content .= '<tr style="border-bottom: solid 1px;"><td>'.$user->first_name.' '.$user->last_name;
$content .= "</td><td>";
$uQG = array_column($quasselgruppe->members, null, 'id')[$user->id] ?? false;
if($uQG !== false){
$content .= 'X';
}
$content .= "</td><td>";
$uAG = array_column($gruppe->members, null, 'id')[$user->id] ?? false;
if($uAG !== false){
$content .= 'X';
}
$content .= "</td></tr>\n";
}
}else{
//login fehlgeschlagen
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);
}