@@ -10,6 +10,7 @@ var channels = [];
1010var isInCall = false ;
1111var muted = false ;
1212var callThread = null ;
13+ var keyHash = null ;
1314const fs = require ( 'fs' ) ;
1415const crypto = require ( 'crypto' ) ;
1516window . $ = window . jQuery = require ( './3rdparty/jquery.js' ) ;
@@ -58,6 +59,7 @@ $(document).on("click", ".disconnect-button", function () {
5859 socket = null ;
5960} ) ;
6061$ ( document ) . on ( "submit" , ".sendMessage" , function ( e ) {
62+ e . preventDefault ( ) ;
6163 currentChannel . messages . push ( { author : username , content : $ ( ".message-send" ) . val ( ) , signature : sign ( $ ( ".message-send" ) . val ( ) , keyPair . privateKey , passSentence ) , isMain : currentChannel . name == "main" , checked : verify ( $ ( ".message-send" ) . val ( ) , sign ( $ ( ".message-send" ) . val ( ) , keyPair . privateKey , passSentence ) , keyPair . publicKey ) } ) ;
6264 $ ( ".messages" ) . empty ( ) ;
6365 currentChannel . messages . forEach ( ( message ) => {
@@ -67,7 +69,13 @@ $(document).on("submit", ".sendMessage", function (e) {
6769 var messageHTML = '<li class="message"><h5 class="title">' + message . author + '</h5><div class="message-content"><p class="text-normal">' + message . content + '</p><div class="signature-check"><i style="color: ' + color + ';" class="fas fa-' + icon + '"></i><p class="hover"><strong>Signature:</strong> ' + message . signature + ' (' + checkResult + ')</p></div></li>' ;
6870 $ ( ".messages" ) . append ( $ ( messageHTML ) ) ;
6971 } ) ;
70- e . preventDefault ( ) ;
72+ var messageData = JSON . parse ( decrypt ( fs . readFileSync ( "data.bin" ) . toString ( ) , keyHash ) ) ;
73+ if ( messageData [ currentServer ] . findIndex ( p => p . name == currentChannel . name ) != - 1 ) {
74+ messageData [ currentServer ] [ messageData [ currentServer ] . findIndex ( p => p . name == currentChannel . name ) ] . messages . push ( { author : username , content : $ ( ".message-send" ) . val ( ) , signature : sign ( $ ( ".message-send" ) . val ( ) , keyPair . privateKey , passSentence ) , isMain : currentChannel . name == "main" , checked : verify ( $ ( ".message-send" ) . val ( ) , sign ( $ ( ".message-send" ) . val ( ) , keyPair . privateKey , passSentence ) , keyPair . publicKey ) } ) ;
75+ } else {
76+ messageData [ currentServer ] . push ( currentChannel ) ;
77+ }
78+ fs . writeFileSync ( "data.bin" , encrypt ( JSON . stringify ( messageData ) , crypto . createHash ( 'sha256' ) . update ( passSentence ) . digest ( "hex" ) ) ) ;
7179 secureKey = randomString ( 16 ) ;
7280 if ( currentChannel . name == "main" ) {
7381 socket . emit ( "message" , encrypt ( JSON . stringify ( { message : encrypt ( $ ( ".message-send" ) . val ( ) , currentChannel . clientKey ) , signature : sign ( $ ( ".message-send" ) . val ( ) , keyPair . privateKey , passSentence ) , receiver : currentChannel . socketId , publicKey : keyPair . publicKey } ) , secureKey ) , secureKey ) ;
@@ -103,6 +111,8 @@ $(document).on("click", ".call-btn", function () {
103111 } ) ;
104112 var enc = new TextEncoder ( ) ;
105113 if ( ! muted && isInCall ) {
114+ console . log ( "transmiting" ) ;
115+ console . log ( blob ) ;
106116 blob . arrayBuffer ( ) . then ( array => socket . emit ( 'radio' , Crypto . encrypt_aes_cbc ( Crypto . pkcs_pad ( array ) , enc . encode ( mainKey ) . buffer , enc . encode ( mainKey ) . buffer ) ) ) ;
107117 }
108118 } ;
@@ -131,6 +141,7 @@ $(document).on("click", ".connectToServer-btn", function () {
131141 keyPair = createKeyPair ( passSentence ) ;
132142 username = $ ( ".username-input" ) . val ( ) ;
133143 currentServer = $ ( ".host-input" ) . val ( ) ;
144+ keyHash = crypto . createHash ( 'sha256' ) . update ( passSentence ) . digest ( "hex" ) ;
134145 var config = JSON . parse ( fs . readFileSync ( "config.json" ) ) ;
135146 config . username = username ;
136147 config . servers . push ( currentServer ) ;
@@ -144,7 +155,7 @@ $(document).on("click", ".connectToServer-btn", function () {
144155 $ ( ".serverConnected" ) . css ( "display" , "block" ) ;
145156 $ ( ".host-title" ) . text ( currentServer ) ;
146157 var secureKey = randomString ( 16 ) ;
147- socket . emit ( "connection" , encrypt ( JSON . stringify ( { username : username , keyHash : crypto . createHash ( 'sha256' ) . update ( passSentence ) . digest ( "hex" ) , publicKey : keyPair . publicKey , clientKey : clientKey } ) , secureKey ) , secureKey ) ;
158+ socket . emit ( "connection" , encrypt ( JSON . stringify ( { username : username , keyHash : keyHash , publicKey : keyPair . publicKey , clientKey : clientKey } ) , secureKey ) , secureKey ) ;
148159 socket . on ( "infos" , function ( infos , secureKey ) {
149160 var infosDecrypt = JSON . parse ( decrypt ( infos , secureKey ) ) ;
150161 $ ( ".motd" ) . text ( infosDecrypt . motd ) ;
@@ -170,9 +181,10 @@ $(document).on("click", ".connectToServer-btn", function () {
170181 }
171182 } ) ;
172183 switchChannel ( "main" ) ;
173- //var messagesData = decrypt(fs.readFileSync("data.bin"), crypto.createHash('sha256').update(passSentence).digest("hex"));
174- console . log ( "clientlist" ) ;
175- var messageData = JSON . parse ( fs . readFileSync ( "data.bin" ) ) ;
184+ if ( ! fs . existsSync ( "data.bin" ) || fs . readFileSync ( "data.bin" ) == null || fs . readFileSync ( "data.bin" ) == undefined || fs . readFileSync ( "data.bin" ) . toString ( ) == "" ) {
185+ fs . writeFileSync ( "data.bin" , encrypt ( JSON . stringify ( { } ) , keyHash ) ) ;
186+ }
187+ var messageData = JSON . parse ( decrypt ( fs . readFileSync ( "data.bin" ) . toString ( ) , keyHash ) ) ;
176188 if ( messageData [ currentServer ] != undefined && messageData [ currentServer ] != null ) {
177189 for ( var i = 0 ; i < channels . length ; i ++ ) {
178190 if ( messageData [ currentServer ] . findIndex ( p => p . name == channels [ i ] . name ) != - 1 ) {
@@ -181,8 +193,15 @@ $(document).on("click", ".connectToServer-btn", function () {
181193 }
182194 } else {
183195 messageData [ currentServer ] = [ ] ;
184- fs . writeFileSync ( "data.bin" , JSON . stringify ( messageData ) ) ;
196+ fs . writeFileSync ( "data.bin" , encrypt ( JSON . stringify ( messageData ) , keyHash ) ) ;
185197 }
198+ currentChannel . messages . forEach ( ( message ) => {
199+ var color = message . checked ? '#19b019' : '#b02819' ;
200+ var icon = message . checked ? 'check-square' : 'times' ;
201+ var checkResult = message . checked ? 'valid' : 'invalid' ;
202+ var messageHTML = '<li class="message"><h5 class="title">' + message . author + '</h5><div class="message-content"><p class="text-normal">' + message . content + '</p><div class="signature-check"><i style="color: ' + color + ';" class="fas fa-' + icon + '"></i><p class="hover"><strong>Signature:</strong> ' + message . signature + ' (' + checkResult + ')</p></div></li>' ;
203+ $ ( ".messages" ) . append ( $ ( messageHTML ) ) ;
204+ } ) ;
186205 } ) ;
187206 socket . on ( "kick" , function ( reason , secureKey ) {
188207 socket . disconnect ( ) ;
@@ -196,25 +215,25 @@ $(document).on("click", ".connectToServer-btn", function () {
196215 console . log ( messageDataDecrypt ) ;
197216 if ( messageDataDecrypt . isMain ) {
198217 currentChannel . messages . push ( { author : messageDataDecrypt . author , content : decrypt ( messageDataDecrypt . message , currentChannel . clientKey ) , signature : messageDataDecrypt . signature , isMain : messageDataDecrypt . isMain , checked : verify ( decrypt ( messageDataDecrypt . message , currentChannel . clientKey ) , messageDataDecrypt . signature , messageDataDecrypt . publicKey ) } ) ;
199- var messageData = JSON . parse ( fs . readFileSync ( "data.bin" ) ) ;
218+ var messageData = JSON . parse ( decrypt ( fs . readFileSync ( "data.bin" ) . toString ( ) , keyHash ) ) ;
200219 if ( messageData [ currentServer ] . findIndex ( p => p . name == messageDataDecrypt . author ) != - 1 ) {
201220 messageData [ currentServer ] [ messageData [ currentServer ] . findIndex ( p => p . name == messageDataDecrypt . author ) ] . messages . push ( { author : messageDataDecrypt . author , content : decrypt ( messageDataDecrypt . message , currentChannel . clientKey ) , signature : messageDataDecrypt . signature , isMain : messageDataDecrypt . isMain , checked : verify ( decrypt ( messageDataDecrypt . message , currentChannel . clientKey ) , messageDataDecrypt . signature , messageDataDecrypt . publicKey ) } ) ;
202221 } else {
203222 messageData [ currentServer ] . push ( channels [ 0 ] ) ;
204223 }
205- fs . writeFileSync ( "data.bin" , JSON . stringify ( messageData ) ) ;
224+ fs . writeFileSync ( "data.bin" , encrypt ( JSON . stringify ( messageData ) , keyHash ) ) ;
206225 } else {
207226 for ( var i = 0 ; i < channels . length ; i ++ ) {
208227 if ( channels [ i ] . name == messageDataDecrypt . author ) {
209228 console . log ( channels [ i ] ) ;
210229 channels [ i ] . messages . push ( { author : messageDataDecrypt . author , content : decrypt ( messageDataDecrypt . message , channels [ i ] . clientKey ) , signature : messageDataDecrypt . signature , isMain : messageDataDecrypt . isMain , checked : verify ( decrypt ( messageDataDecrypt . message , channels [ i ] . clientKey ) , messageDataDecrypt . signature , channels [ i ] . publicKey ) } ) ;
211- var messageData = JSON . parse ( fs . readFileSync ( "data.bin" ) ) ;
212- if ( messageData [ currentServer ] . findIndex ( p => p . name == channels [ i ] ) != - 1 ) {
213- messageData [ currentServer ] [ messageData [ currentServer ] . findIndex ( p => p . name == channels [ i ] ) ] . messages . push ( { author : messageDataDecrypt . author , content : decrypt ( messageDataDecrypt . message , channels [ i ] . clientKey ) , signature : messageDataDecrypt . signature , isMain : messageDataDecrypt . isMain , checked : verify ( decrypt ( messageDataDecrypt . message , channels [ i ] . clientKey ) , messageDataDecrypt . signature , channels [ i ] . publicKey ) } ) ;
230+ var messageData = JSON . parse ( decrypt ( fs . readFileSync ( "data.bin" ) . toString ( ) , keyHash ) ) ;
231+ if ( messageData [ currentServer ] . findIndex ( p => p . name == channels [ i ] . name ) != - 1 ) {
232+ messageData [ currentServer ] [ messageData [ currentServer ] . findIndex ( p => p . name == channels [ i ] . name ) ] . messages . push ( { author : messageDataDecrypt . author , content : decrypt ( messageDataDecrypt . message , channels [ i ] . clientKey ) , signature : messageDataDecrypt . signature , isMain : messageDataDecrypt . isMain , checked : verify ( decrypt ( messageDataDecrypt . message , channels [ i ] . clientKey ) , messageDataDecrypt . signature , channels [ i ] . publicKey ) } ) ;
214233 } else {
215234 messageData [ currentServer ] . push ( channels [ i ] ) ;
216235 }
217- fs . writeFileSync ( "data.bin" , JSON . stringify ( messageData ) ) ;
236+ fs . writeFileSync ( "data.bin" , encrypt ( JSON . stringify ( messageData ) , keyHash ) ) ;
218237 }
219238 }
220239 }
0 commit comments