aboutsummaryrefslogtreecommitdiffhomepage
path: root/main/app/sprinkles/core/assets
diff options
context:
space:
mode:
authorMarvin Borner2018-05-22 16:37:10 +0200
committerMarvin Borner2018-05-22 16:37:10 +0200
commit1d4ef435177a5f9b6d1a289800d933e49be0c550 (patch)
tree52cf669f276e2367327d383b7c1a6c805023ff6a /main/app/sprinkles/core/assets
parent160d0a87ac42e8aca254d8c3dec53179bff13a6a (diff)
Fixed many issues, added DB-saver, optimized chat processor
Diffstat (limited to 'main/app/sprinkles/core/assets')
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/chat.js6
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php111
2 files changed, 73 insertions, 44 deletions
diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
index 6dc67f0..ee30c04 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
+++ b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
@@ -45,10 +45,8 @@ function InitializeChatServer() {
ChatSocket.onmessage = function (e) {
// DECLARATIONS
var TypingIndicatorMessage = $(".TypingIndicatorMessage").parent();
- LastMessage = $(".MessageWrapper.Normal:last .ChatMessage");
var MessageObject = JSON.parse(e.data);
var Message = MessageObject.Message; // ENCRYPTED MESSAGE (NOT ENCRYPTED ON SERVER MESSAGES)
- Username = MessageObject.Username;
var Fullname = MessageObject.Fullname;
var Avatar = MessageObject.Avatar;
var GroupName = MessageObject.GroupName;
@@ -59,6 +57,10 @@ function InitializeChatServer() {
var Granted = MessageObject.Granted;
var Success = MessageObject.Success;
+ // GLOBAL OVERWRITES
+ LastMessage = $(".MessageWrapper.Normal:last .ChatMessage");
+ Username = MessageObject.Username;
+
// GET OWN PUBLIC KEY FIRST
if (!(current_username in PublicKey)) {
diff --git a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php
index 62ec9a2..5463aec 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php
+++ b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php
@@ -53,7 +53,6 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject = new \stdClass();
$MessageObject->ServerMessage = TRUE;
- if (isset($this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name)) $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
$MessageObject->ServerMessageType = "Verify";
if (isset($this->userInfo[$conn->resourceId]->id)) { // USER FOUND
$MessageObject->Granted = TRUE;
@@ -69,7 +68,6 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject->ServerMessage = TRUE;
$MessageObject->ServerMessageType = "Verify";
$MessageObject->Granted = FALSE;
- if (isset($this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name)) $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
$this->verifiedUsers[$conn->resourceId] = FALSE;
$this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE));
$this->onClose($conn);
@@ -101,35 +99,68 @@ class ChatProcessor implements MessageComponentInterface
}
break;*/
case "SetReceiver": // USER CLICKED ON NEW CHAT
- foreach ($this->userInfo[$conn->resourceId]->friends as $friend) {
- if ($data->ReceiversId === $friend->id) {
- $this->ReceiversId[$conn->resourceId] = $data->ReceiversId;
- }
- }
$MessageObject = new \stdClass();
$MessageObject->ServerMessage = TRUE;
$MessageObject->ServerMessageType = "SetReceiver";
- $this->ReceiversId[$conn->resourceId] !== $data->ReceiversId ? $MessageObject->Success = FALSE : $MessageObject->Success = TRUE;
+ $MessageObject->Success = FALSE; // WILL BE PROBABLY OVERRIDDEN
+ foreach ($this->userInfo[$conn->resourceId]->friends as $friend) { // CHECK IF USERS ARE FRIENDS
+ if ($data->ReceiversId == $friend->id) {
+ $this->ReceiversId[$conn->resourceId] = $data->ReceiversId;
+ $MessageObject->Success = TRUE; // ARE FRIENDS
+ }
+ }
$this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE));
break;
case "ChatMessage": // MESSAGE RECEIVED
$ReceiversId = $this->ReceiversId[$conn->resourceId];
- $ReceiversResourceId = $this->ResourceId[$ReceiversId];
- $MessageObject = new \stdClass();
- $MessageObject->ServerMessage = FALSE;
- $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name;
- $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->full_name;
- $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar;
- $MessageObject->Message = htmlspecialchars($data->Message);
+ if (isset($this->ResourceId[$ReceiversId])) {
+ $ReceiversResourceId = $this->ResourceId[$ReceiversId];
+ $MessageObject = new \stdClass();
+ $MessageObject->ServerMessage = FALSE;
+ $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name;
+ $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->full_name;
+ $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar;
+ $MessageObject->Message = htmlspecialchars($data->Message);
- if ($data->EncryptedWithKeyOfUsername === $this->userInfo[$ReceiversResourceId]->user_name) {
- $MessageObject->WasHimself = FALSE;
- $MessageJson = json_encode($MessageObject, TRUE);
- $this->users[$ReceiversResourceId]->send($MessageJson); // SEND TO RECEIVER
- } else if ($data->EncryptedWithKeyOfUsername === $MessageObject->Username) {
- $MessageObject->WasHimself = TRUE;
- $MessageJson = json_encode($MessageObject, TRUE);
- $this->users[$conn->resourceId]->send($MessageJson); // SEND TO SENDER (FOR VERIFICATION)
+ if ($data->EncryptedWithKeyOfUsername === $this->userInfo[$ReceiversResourceId]->user_name) {
+ $MessageObject->WasHimself = FALSE;
+ $MessageJson = json_encode($MessageObject, TRUE);
+ $this->users[$ReceiversResourceId]->send($MessageJson); // SEND TO RECEIVER
+
+ // SAVE IN DATABASE
+ $url = "https://beam-messenger.de/wormhole/" . file("/AccessToken.txt", FILE_IGNORE_NEW_LINES)["0"] . "/new/message/" . $this->userInfo[$conn->resourceId]->id . "/" . $this->userInfo[$ReceiversResourceId]->id . "/";
+ $data = array('message' => $data->Message);
+ $options = array(
+ 'http' => array(
+ 'header' => "Content-type: application/x-www-form-urlencoded\r\n",
+ 'method' => 'POST',
+ 'content' => http_build_query($data)
+ )
+ );
+ $context = stream_context_create($options);
+ $result = file_get_contents($url, FALSE, $context);
+ if ($result === FALSE) { /* Handle error */
+ }
+
+ } else if ($data->EncryptedWithKeyOfUsername === $MessageObject->Username) {
+ $MessageObject->WasHimself = TRUE;
+ $MessageJson = json_encode($MessageObject, TRUE);
+ $this->users[$conn->resourceId]->send($MessageJson); // SEND TO SENDER (FOR VERIFICATION)
+ }
+ } else { // USER ISN'T ONLINE -> ONLY STORE IN DATABASE
+ $url = "https://beam-messenger.de/wormhole/" . file("/AccessToken.txt", FILE_IGNORE_NEW_LINES)["0"] . "/new/message/" . $this->userInfo[$conn->resourceId]->id . "/" . $this->ReceiversId[$conn->resourceId] . "/";
+ $data = array('message' => $data->Message);
+ $options = array(
+ 'http' => array(
+ 'header' => "Content-type: application/x-www-form-urlencoded\r\n",
+ 'method' => 'POST',
+ 'content' => http_build_query($data)
+ )
+ );
+ $context = stream_context_create($options);
+ $result = file_get_contents($url, FALSE, $context);
+ if ($result === FALSE) { /* Handle error */
+ }
}
break;
case "GroupMessage": // GROUP MESSAGE RECEIVED -- RESERVED FOR LATER USE (CHANNEL BASED RIGHT NOW)
@@ -140,7 +171,6 @@ class ChatProcessor implements MessageComponentInterface
$MessageObject = new \stdClass();
$MessageObject->ServerMessage = FALSE;
$MessageObject->GroupName = $channel;
- if (isset($this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name)) $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
$MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name;
$MessageObject->Fullname = $this->userInfo[$conn->resourceId]->full_name;
$MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar;
@@ -154,24 +184,21 @@ class ChatProcessor implements MessageComponentInterface
}
break;
case "TypingState": // USER STARTED TYPING
- if (isset($this->channels[$conn->resourceId])) {
- $target = $this->channels[$conn->resourceId];
- foreach ($this->channels as $id => $channel) {
- if ($channel == $target) {
- $MessageObject = new \stdClass();
- $MessageObject->ServerMessage = TRUE;
- $MessageObject->ServerMessageType = "TypingState";
- $MessageObject->GroupName = $channel;
- if (isset($this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name)) $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name;
- $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name;
- $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->full_name;
- $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar;
- $MessageObject->State = $data->State;
- $id === $conn->resourceId ? $MessageObject->WasHimself = TRUE : $MessageObject->WasHimself = FALSE;
- $MessageJson = json_encode($MessageObject, TRUE);
- $this->users[$id]->send($MessageJson);
- }
- }
+ // GET RECEIVERS DATA
+ $ReceiversId = $this->ReceiversId[$conn->resourceId];
+ if (isset($this->ResourceId[$ReceiversId])) { // ONLY SEND IF OTHER USER EXISTS
+ $ReceiversResourceId = $this->ResourceId[$ReceiversId];
+ $MessageObject = new \stdClass();
+ $MessageObject->ServerMessage = TRUE;
+ $MessageObject->ServerMessageType = "TypingState";
+ $MessageObject->Receiver = $this->userInfo[$ReceiversResourceId]->user_name;
+ $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name;
+ $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->full_name;
+ $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar;
+ $MessageObject->State = $data->State;
+ $ReceiversResourceId === $conn->resourceId ? $MessageObject->WasHimself = TRUE : $MessageObject->WasHimself = FALSE;
+ $MessageJson = json_encode($MessageObject, TRUE);
+ $this->users[$ReceiversResourceId]->send($MessageJson);
}
break;
}