V1.16 -> 240820 neue Funktion "download_file($_id)"
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
Nenninger N-Tools.de
|
Nenninger N-Tools.de
|
||||||
Version 1.15
|
Version 1.16
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -116,7 +116,7 @@ class UUID {
|
|||||||
|
|
||||||
|
|
||||||
class hermineConnect{
|
class hermineConnect{
|
||||||
private $VERSION = '1.15';
|
private $VERSION = '1.16';
|
||||||
private $MACHINENAME = 'default';
|
private $MACHINENAME = 'default';
|
||||||
private $hermineServer = 'https://api.thw-messenger.de';
|
private $hermineServer = 'https://api.thw-messenger.de';
|
||||||
private $connectorID = "";
|
private $connectorID = "";
|
||||||
@@ -188,7 +188,7 @@ class hermineConnect{
|
|||||||
curl_close($this->cURL);
|
curl_close($this->cURL);
|
||||||
}
|
}
|
||||||
|
|
||||||
function request($_url,$_data,$_files=[]){
|
function request($_url,$_data,$_files=[],$_rowData=false){
|
||||||
$_data['device_id'] = $this->connectorID;
|
$_data['device_id'] = $this->connectorID;
|
||||||
if($this->client_key != '')
|
if($this->client_key != '')
|
||||||
$_data['client_key'] = $this->client_key;
|
$_data['client_key'] = $this->client_key;
|
||||||
@@ -224,13 +224,17 @@ class hermineConnect{
|
|||||||
echo "\n\nSendheader->:\n".print_r(curl_getinfo($this->cURL, CURLINFO_HEADER_OUT),true);
|
echo "\n\nSendheader->:\n".print_r(curl_getinfo($this->cURL, CURLINFO_HEADER_OUT),true);
|
||||||
echo "\n\nretdata->:\n".print_r($data,true);
|
echo "\n\nretdata->:\n".print_r($data,true);
|
||||||
}
|
}
|
||||||
$data = json_decode($data);
|
if(!$_rowData){
|
||||||
if($data->status->value === "OK"){
|
$data = json_decode($data);
|
||||||
$this->lasterror = '';
|
if($data->status->value === "OK"){
|
||||||
return $data->payload;
|
$this->lasterror = '';
|
||||||
|
return $data->payload;
|
||||||
|
}else{
|
||||||
|
$this->lasterror = $data;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
$this->lasterror = $data;
|
return $data;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->lasterror = 'Curl error: ' . curl_error($this->cURL);
|
$this->lasterror = 'Curl error: ' . curl_error($this->cURL);
|
||||||
@@ -278,31 +282,38 @@ class hermineConnect{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _get_conversation_key($_target){
|
function _get_conversation_key($_target,$_key=''){
|
||||||
if($_target[0]=='conversation'){
|
if($_key == ''){
|
||||||
if(!isset($this->key_cache_conversations[$_target[1]])){
|
if($_target[0]=='conversation'){
|
||||||
$data = [ "conversation_id" => $_target[1]
|
if(!isset($this->key_cache_conversations[$_target[1]])){
|
||||||
];
|
$data = [ "conversation_id" => $_target[1]
|
||||||
$response = $this->request($this->hermineServer."/message/conversation",$data);
|
];
|
||||||
$this->key_cache_conversations[$_target[1]] = $response->conversation->key;
|
$response = $this->request($this->hermineServer."/message/conversation",$data);
|
||||||
}
|
$this->key_cache_conversations[$_target[1]] = $response->conversation->key;
|
||||||
if(openssl_private_decrypt(base64_decode($this->key_cache_conversations[$_target[1]]),$ret,$this->private_key,OPENSSL_PKCS1_OAEP_PADDING))
|
}
|
||||||
return $ret;
|
if(openssl_private_decrypt(base64_decode($this->key_cache_conversations[$_target[1]]),$ret,$this->private_key,OPENSSL_PKCS1_OAEP_PADDING))
|
||||||
else
|
return $ret;
|
||||||
return false;
|
else
|
||||||
}else if($_target[0]=='channel'){
|
return false;
|
||||||
if(!isset($this->key_cache_channels[$_target[1]])){
|
}else if($_target[0]=='channel'){
|
||||||
$data = [ "channel_id" => $_target[1],
|
if(!isset($this->key_cache_channels[$_target[1]])){
|
||||||
"without_members" => true
|
$data = [ "channel_id" => $_target[1],
|
||||||
];
|
"without_members" => true
|
||||||
$response = $this->request($this->hermineServer."/channels/info",$data);
|
];
|
||||||
$this->key_cache_channels[$_target[1]] = $response->channels->key;
|
$response = $this->request($this->hermineServer."/channels/info",$data);
|
||||||
|
$this->key_cache_channels[$_target[1]] = $response->channels->key;
|
||||||
|
|
||||||
|
}
|
||||||
|
if(openssl_private_decrypt(base64_decode($this->key_cache_channels[$_target[1]]),$ret,$this->private_key,OPENSSL_PKCS1_OAEP_PADDING))
|
||||||
|
return $ret;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
if(openssl_private_decrypt(base64_decode($this->key_cache_channels[$_target[1]]),$ret,$this->private_key,OPENSSL_PKCS1_OAEP_PADDING))
|
}else{
|
||||||
return $ret;
|
if(openssl_private_decrypt(base64_decode($_key),$ret,$this->private_key,OPENSSL_PKCS1_OAEP_PADDING))
|
||||||
else
|
return $ret;
|
||||||
return false;
|
else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -516,6 +527,48 @@ class hermineConnect{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _file_info($_id){
|
||||||
|
$data = [
|
||||||
|
"file_id" => $_id
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = $this->request($this->hermineServer."/file/info",$data);
|
||||||
|
|
||||||
|
if($response !== false){
|
||||||
|
return $response;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _download_file($_id){
|
||||||
|
$fileInfo = $this->_file_info($_id);
|
||||||
|
//print_r($fileInfo);
|
||||||
|
$response = $this->request($this->hermineServer."/file/download?id=".$_id,[],[],true);
|
||||||
|
|
||||||
|
$ret = [];
|
||||||
|
|
||||||
|
if($response !== false){
|
||||||
|
$ret[0]['name'] = $fileInfo->file->name;
|
||||||
|
$ret[0]['mime'] = $fileInfo->file->mime;
|
||||||
|
if($fileInfo->file->encrypted){
|
||||||
|
$key = $fileInfo->file->keys[0];
|
||||||
|
$conversation_key = $this->_get_conversation_key([$key->type,$key->chat_id],$key->chat_key);
|
||||||
|
$decryptedkey = $this->_decrypt_aes(base64_encode(hex2bin($key->key)), $conversation_key, hex2bin($key->iv));
|
||||||
|
$decrypted = $this->_decrypt_aes(base64_encode($response), $decryptedkey, hex2bin($fileInfo->file->e2e_iv));
|
||||||
|
if($decrypted !== false)
|
||||||
|
$ret[1] = $decrypted;
|
||||||
|
else
|
||||||
|
return '[!!decrypterror!!]';
|
||||||
|
}else{
|
||||||
|
$ret[1] = $response;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$ret = false;
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
function _delete_files($_ids=[]){
|
function _delete_files($_ids=[]){
|
||||||
$data = [
|
$data = [
|
||||||
@@ -714,6 +767,10 @@ class hermineConnect{
|
|||||||
return $this->_delete_files($_ids);
|
return $this->_delete_files($_ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function download_file($_id){
|
||||||
|
return $this->_download_file($_id);
|
||||||
|
}
|
||||||
|
|
||||||
public function open_conversation($_members){
|
public function open_conversation($_members){
|
||||||
return $this->_open_conversation($_members);
|
return $this->_open_conversation($_members);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ Das Speichern von Zugangsdaten auf öffentlichen Servern stellt ein hohes Risiko
|
|||||||
* V1.13 26.11.2023 -> open_conversation eingebaut
|
* V1.13 26.11.2023 -> open_conversation eingebaut
|
||||||
* V1.14 -> 231220 sendmsg: Text wird jetzt als Markdown formatiert markiert (Parameter "metainfo")
|
* 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.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)"
|
||||||
|
|
||||||
|
|
||||||
Formatierungen Markdown:
|
Formatierungen Markdown:
|
||||||
@@ -51,6 +52,8 @@ Das Speichern von Zugangsdaten auf öffentlichen Servern stellt ein hohes Risiko
|
|||||||
|
|
||||||
list_uploaded_chat_files($_search); -< array
|
list_uploaded_chat_files($_search); -< array
|
||||||
|
|
||||||
|
download_file($_id) -< array
|
||||||
|
|
||||||
delete_files($_ids=[]) -< boolean
|
delete_files($_ids=[]) -< boolean
|
||||||
|
|
||||||
open_conversation($_members) -< array
|
open_conversation($_members) -< array
|
||||||
|
|||||||
Reference in New Issue
Block a user