Browse code

changed appinfo/info.xml appinfo/signature.json CHANGELOG.txt README.md js/launchphone.js lib/Service/SphoneService.php phone/scripts/app.js

DoubleBastionAdmin authored on 07/12/2024 17:32:47
Showing 7 changed files
... ...
@@ -71,3 +71,7 @@ Versions:
71 71
 
72 72
 == 1.1.6 - 2024-10-08 ==
73 73
 * Made minor CSS changes and marked the app as compatible with Nextcloud 30.
74
+
75
+== 1.1.7 - 2024-12-07 ==
76
+* Fixed bug related to reading contacts data.
77
+* Fixed start up issue in Chrome.
... ...
@@ -37,6 +37,8 @@ phone.
37 37
 
38 38
 * 📃 Once you open SIP Trip Phone, you can use it even if you are logged out of Nextcloud.
39 39
 
40
+* 📱 If Nextcloud is accessed in Firefox for mobile (version 123.0 or newer), it can be used directly on mobile devices.
41
+
40 42
 * 💻 If Asterisk is used, on the underlying Asterisk server you can implement an IVR (Interactive Voice Response or 'voice menu') and many advanced PBX features such as voicemail, queue management, music on hold, number blacklisting, call recording, audio conference calls, etc.
41 43
 
42 44
 * 💰 The only ongoing cost is about $1 per month (depending on the country) for a phone number. No contracts.
... ...
@@ -56,7 +56,7 @@ We have no affiliation with Telnyx, Localphone, Twilio, Flowroute or Vonage.
56 56
 * 🎁 [Donate](https://www.doublebastion.com/donations/)
57 57
 
58 58
     ]]></description>
59
-    <version>1.1.6</version>
59
+    <version>1.1.7</version>
60 60
     <licence>AGPL</licence>
61 61
     <author homepage="https://www.doublebastion.com">Double Bastion LLC</author>
62 62
     <namespace>SIPTripPhone</namespace>
... ...
@@ -1,10 +1,10 @@
1 1
 {
2 2
     "hashes": {
3
-        "CHANGELOG.txt": "d2bbdbdd94982717133b55d27b223690c5fc43ebb151937fb41716930104bf9b4682e2a102695c0bfedd664e431f35f4188a387afd332da2706491159aaa5179",
3
+        "CHANGELOG.txt": "70819344890f1df70fcf3f3ffc3a5a8e6257947c043c9d3d26be4e170ebb5dc4e949ddfea29b16ce51ce19d1ebb3666c990a8f0701eed9e324dac9a04743c223",
4 4
         "COPYING.txt": "a0a86214ea153fb07ff35ceec0848dd1703eae22de036a825efc8394e50f65e3044832f3b49cf7e45a39edc470bdf738abc36a3a78ca7df3a6e73c14eaef94a8",
5 5
         "Contributors.txt": "8ab4ea9b8c38e4d115af6ca08e8e27592198b763982bd166b67f38ee0b9f2b7e093cd58ce0927ae38ee3bc015b129add2ffeb3967288c804da493241bc67ba9b",
6
-        "README.md": "b81ef62bc426d6dbc708f9d724e358428b68623780a298658c2d40be9ca4443d39420908259afdb5b388c1a636e8a55881dc7434d0405b867a8c3e8a0af8898b",
7
-        "appinfo\/info.xml": "612a9cc14e78ea6f57af6e11b23f3d2e5322f2e95597f42d2eb517a31fa6099aef424f4b3670de8bb5435a0c0a2f2b908390cfccec1808c9185efa2f2ed900f1",
6
+        "README.md": "1dd270a0335705e9e3682a9c6a1a6b989120a71e3738db875d9a16af1f399e0f9fa0078493c8e0bf4f2d614a268ee4e3e0b4d66fb36333fc91502f4c38d8aadd",
7
+        "appinfo\/info.xml": "7359cc28d48f4835014d16596a201895f8ea5ccc03d3679e9f3c3ea44c3faa5d2b4bc17476c227f582ddfe1bcd8ec0301e71e9e8878957a0867d6f7c8b98af90",
8 8
         "appinfo\/routes.php": "98f345f568eafe60667647000e29c6ead3d1762d42fe93a91e21724c986fe7ad160291efc1807c499446eab677f69c641e7fea91661921eaf97f09651910d99b",
9 9
         "css\/style.css": "790bf3c5eaf74d8663bfadd8996dc4b7d79b8e8e07e51150a86461e385563944dbab67771f176c20c612280fbed809ac3be4601b9c538760fecb6917234de48f",
10 10
         "fonts\/Apache_License_v2.0_Open_Sans.txt": "fdae7ed259455ca9fa45939e7f25cbb4de29831cda16d9151de25a5f6e9d9be43b053f4fd3b896026239fca77abce04f543d591c501ecf4ce18c854bc0a51660",
... ...
@@ -72,7 +72,7 @@
72 72
         "img\/sip_trip_phone_mobile_receiving_calls.png": "6daba96c534872e45fef6cecce49ec799eff19c5951a403ce8a73b3a87f584874ccea1dc44609c2b349ef2ffb9a84a76af3c5bcd9ed6406de4e7b2f6e0e8dad0",
73 73
         "js\/crypto-js-4.1.1.js": "60f2a01ad255c25e44bb07ed0221feb99c1d61debb7bc4f8a85c96e5aeb2b9705b89ae17218125b30e5a700cc5b9a0da9f94b5b9ec1732efe26ee46c6c953d4f",
74 74
         "js\/crypto-js-4.1.1.min.js": "13c412bd66747822c6938926de1c52b0d98659b2ed48249471ec0340f416645ea9114f06953f1ae5f177db03a5d62f1fb5d321b2c4eb17f3a1c865b0a274dc5c",
75
-        "js\/launchphone.js": "425c6a924b84b7f1aeab60d6e0b31d852677d56a78148d2b709351a8b824d014c724240c9807099eb74061d3ae7d2d8e220e3b775ebad332c0d481462e2a44d4",
75
+        "js\/launchphone.js": "0689fbd6ffc3dec78982bedd40a2c1fa9a557c9e1aff38cec33c5ff00e3f2921695ed17d7986b96b78ef635dd8c133afb3cc33b188cd8555f28d643db6f53b80",
76 76
         "js\/settings.js": "263f0b86f8170cb07b0439a9e5a21a562bab81c83cb31572bf92528c113771938aab06c063f5d12cd64105a998d06daa276220510a4a1d6f15ca9971e1f60fe7",
77 77
         "l10n\/en_GB.js": "3e93734bdf5873913caa37a855692d78d0e51aebfe00abacc2ebd22baee1a53645fa4f6d71fbd5dcc1c90a685556613ac61668a97fd1bd5b8395420110330c24",
78 78
         "l10n\/en_GB.json": "64b04f6fd98838588173aa8e53e1161ff9c7f6c05a342056a86838a369977ddec7bee8edcccbe457a8526560233483059e70c5c0917d1c6fa8dd07a49949003b",
... ...
@@ -86,7 +86,7 @@
86 86
         "lib\/Migration\/Version112Date20240108213517.php": "6a535855e4eeeaa63b62ec1b97d9484f727c0aa08f16a4eb65888f0d133d93498e20adc4d1942572924d553af425a8632a94bbde8d3101a28b07c9301d6b43ba",
87 87
         "lib\/Migration\/Version114Date20240520042641.php": "f6693866d02f6b1d23195e27a79ed3622928b468b48c6c43f4050370200d2cefcff53d6cf11a1ee110d40f59741ab5b780576db47e2df70ab11a4e872700bcd3",
88 88
         "lib\/Migration\/Version115Date20240521091835.php": "59dcd466195938b7503cd1c9ae319d88c8e344ee3da88271d680905ec719744bde3cd733aebe034415a81329cedd79a851f0b97cb77b6f4193232c643e727303",
89
-        "lib\/Service\/SphoneService.php": "cf393cc3bca07482c339db7fd6aff575782e93b3b630a142c9df8e0c3115cfd2a5ccde1f3000c77b947725c5da7300398ae1258fab702660e3327cd7db3deefb",
89
+        "lib\/Service\/SphoneService.php": "e7820ac27242bad31448503a2ab6a38324ac35cb56dc533972cd58e0b3aefd4f76c7f7111738d92d11bbbee75b642359a4f3fe159630e04675b6bbcb63f923d0",
90 90
         "lib\/Settings\/Personal.php": "d031350a9e5c1b0e78fff57b672304660485b9b307c28eb8a2dc7a3782c6329cb3fc659041d331b97711485a92d10bd99d739a17eaec088f7837d2be786500a6",
91 91
         "lib\/Settings\/PersonalSection.php": "b2104766a5df419eed6811630c2d2de6b817f4b0ca77b5ca018344901cb8db0cefc8c78d4f45b14f4b5129aa986ae583b69c78d50cd91f8502508dd8724d3edb",
92 92
         "phone\/css\/bootstrap.min.css": "b82d1fb15e8eec863133d7491103e86bb1cb67442509bd141f2c2730dc237c351d3a10bd4e9633ea208c39a98b6a508769c7c448aed809bee43a83e10361c402",
... ...
@@ -422,7 +422,7 @@
422 422
         "phone\/images\/sip_trip_phone_logo_large.svg": "b622744c5eff160b77ef7226d8f70eef15311db18d7dea9e334e92b20601a33d812cb0bbc3eef74d6294d1ab43ba3969a7ffde23d8ec2f7f9d1dbf6b6ec18e25",
423 423
         "phone\/index.php": "76fbcca0671da8ad534b99373ea85135e5ead02fd5c9187827cca643515629e06332f7711738150d45178baa4f1499ea9fed686b7a1941fc27eb7a9e8d36adf0",
424 424
         "phone\/scripts\/SIP.js": "372509f1c0e53f3ecbfa2db99b5f6484f2401ddaf3824e70ecd763a405e77f3456c1157ea6af6c9d716da4dfa9227a30995361267baf97541f531dbd6260ffe2",
425
-        "phone\/scripts\/app.js": "e66ca12f0bba74deb928816f151db50315a42b37a40b30e664170e90121929ef7a586ae6411dca04ba229a18cfa10dcfe3aa7a52a850e3c5ad3a8b7ee62e6d18",
425
+        "phone\/scripts\/app.js": "c7ea63551ed9c4f25dcf4b19d5eac7c00cdd016c2c592d165c4c3eb292e315a190c6ac64a040a7cf8b7f2bab05707fa62e332b21aedfc35fd03263214f08e13a",
426 426
         "phone\/scripts\/bootstrap.min.js": "de8d6bf69932b479dcfe470e893effa9f88d399314b2fa74c14a1465c7a6f1da78a3764fa35ee05ddd6a3f225588e601ed5978d5ef48e353e279c596f2471071",
427 427
         "phone\/scripts\/fix-webm-duration.js": "20b024a1264e2ee67a5a67d85cb57770bee8231bda1bdd1418690021b40984efa7b94aabe00fb750e3ee192c744b80730c2b6c34b55dea245a191e84cb7868d5",
428 428
         "phone\/scripts\/jquery-1.11.3.min.js": "25e4bc43cc350f38cab68b422101b528781bcd271a299cad39aaf64aa331ed0a35b9dfed3938ddccaa08c31161ee2c472acf297aabea334315758e128487b0fb",
... ...
@@ -436,6 +436,6 @@
436 436
         "templates\/index.php": "5db81d53604174b8e8907f693ae37eaed4eff3427ff8a02b50631b952ae468750cca8f010d64183fc6ef7869ea7447112d2678effb6571fae622e1fa0141c940",
437 437
         "templates\/settings.php": "58e6e4e638414842bfee0f087f5df2b6f3290e9eda3c0bb13ad8797c508d572291b434d1e1f171beb26a74233809bcd4cd9e483a77092498467149a2dff0a17c"
438 438
     },
439
-    "signature": "bSE67dZMFUPPLHxoFtkRkbciZY5c9BEjX\/OmzAHYerZPfZW3HbWGyN2hhVY3uwTWoa0dMhyJvDX2xq+mr2lHie3v+3LBW\/k2SYd\/5xu9SDyB9AVbjM3WHpgXfMK+Vd6v1ERftiV+\/8jTp76sX66xSFQ72f9tGMUtZXgGRXXuJXYJW+gPNS1u4WsNT6Z0guu3b9yZeR1nVzvqY\/b8ujJHYWkhOBxLcJY6d9Z6wSCgSW8xnYD+KvJYGACKo3u5vbfRTHZ2\/9b1GojbfelOtXd2ZwdgKeP3Kt\/f+ynbyAoRd6RGhb8SZqdNBiPTQ8uNvtrTPY+L9oqHs6xbOYBeUFNuc4fEXe08XUuzxx9hFSVjVpQKGAEveYyN\/CwK9t\/8xLv\/uhyWvLoM7+UtluMObykAK\/krJm\/E9+TWIG4gSYn8\/9NlyYJRDYT9GW6lU2oxjJRpOxd4Jt+3DbQ4lizRYlGGHoXCpvINn76sxYJ0v3i\/BrNpRuAnh0LSMuiXuS9lPpB2JytpJNyFhZ6jyzUwo78PJjD9Rexl89tphaq7sMdUZEvoThWRGwGfGbF7bdZKqytIWVqQar7LT+JeYnqkGsNXSfvx6Bgy\/0KNBC+ivw+AST61az5oDKDD0i0oMnWUgaW1U9WxHh1GKVyVIVHJVJczKp9XbF7uV1mhQzS30w\/\/NXw=",
439
+    "signature": "EJDEqAegzUX4FPKTtmU5qk\/J5B17hR9HhyMmuT7S1YpbhVW7qQ1R07JwlP5Pf77ad5jkOEGuvH02zMdw+KMVSfdxeWsTNW+ePeScZE0RryGeXrFjkHWeW4UC4BfthMixbXz7BMOJTEpsM7E3aJRdRIvrtrPcMqhYb\/3J02CyQSg6+HUoTkVH3ont5wrZl1RKbF06VO\/a4aJfTKV5JL\/IikGdNNd324vCiXIM9dG92qdZSlmx\/5lzVTEcl2CWG3pnY2JXIMrUot0BjPmtzDBT+dOBwt8BHKIBxgUS0WyQUbAPBSZlwb7\/rgHVq33yZt+45NtJHEtvYGZDK20aYFBjicRBi3h3qKpIE5wYlOqu\/eQYyeLt9Pj3FkU6qK50\/SDkxOZHFCkxP\/6hebKOoKeN9x6uvQbtIu4vyDfcqL+iurWoVmkpDcZIZW8LRudR++AfZbn9zqVkTfyTR9uNBQj0SgRApJPRoRn84Kesy4DpI2sqkDbCDA7SvMKeR9CwtOeVUBZDRjRVHIi6VVswUlahLsDIgbDd2mXDQZHpQmaxxOvB4R28CFQ65m+nldCS\/zAtPfCDw+kAHITXRbh+rgf7tMKTbrIygss93L1E6OpVBXON5cvBDh2dOILHxTnEYpV5T6ixfU3VULZEdvoayrywzGogtFTAE2Aa\/4d83hPGKpU=",
440 440
     "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIECTCCAvECAhG7MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD\r\nVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI\r\nMTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB\r\ndXRob3JpdHkwHhcNMjIwMjI1MTU1NzUxWhcNMzIwNjAyMTU1NzUxWjAZMRcwFQYD\r\nVQQDDA5zaXBfdHJpcF9waG9uZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\r\nggIBALGXGrkLJY9XsqMXKDMLD4+Ub5HVr9HebfC2593+Ed41HVqIca9z3CdeXg87\r\npTjyZQhqsCzVArIJsmnH5pT02NYZDsZeARWpRLYWOIQeOJwS0EdOtWP6\/VXjxfw+\r\nUaDthCcfcj8TC7y+15zqwx9ERSc8ujXadGPqZEZAfGuZSy6b9+oXo17tT9fCbVeJ\r\nYyXibMWutUhIt8FvUQ2PCUYUity1kvn9+G3sOlPYMWDqPG3tt70EJ2m1J9ZX6Pa8\r\npmI8LG8IvFWImbX1\/+8YrtQZ0RQcoP7yX\/H6S8NvsAux\/sgMYNSEVbXzapE2TeMD\r\n1w0aEH3101twV+2cuKf8U+bt0Vha9HFNC06Nmu2lQkXPV\/Cdvx+DIKXhb3AaApgB\r\nT4uzRE4Zfg\/BZkspJ7IFObi2NpTv2T4frH3tZudOR\/OWtsGTpZbH8p12RK7yE19d\r\nMCR3DdVMe\/OXh1GaIc30s4jd6apskC33xZJ3IamyzY6EYLL41E2vmd9Eg6VMTGXJ\r\nHuOdAtJYy4R6040aDXfeNAnTcCVZQYmPvfnalQfcfiQePaWMyMVsBFy\/utq\/R\/qU\r\nTgtp68+jhvRH2YOxUVvuyrWhxY8PqhNHWlp5OYGllBdes5GrKvGIqnO\/q1nC6V5A\r\nHd+1SZSQJE1kQxpXxiDJeYBUQZUyBOiqM+GNfnZi+kVJ75YtAgMBAAEwDQYJKoZI\r\nhvcNAQELBQADggEBAIOJ8yPdp3vsRaOzsQCg8NdQgIDn9PZRtF0GjOPqVCOo\/ytx\r\nwIgdAiTAl1qvQaUjRSZf+qpYFPs\/Ojqd3DHi+ySPcq6PkkTWxkEpRmoaoFNAt0XA\r\nyOjSQhsBxuqFDmK+U6YvB\/QupGOSZipaBjQnaP5xufoiitIdRqd1XFHyBiNEfRt1\r\nQhLzrz\/u4PLaC6653qrl\/Jpd\/tp7LUtglihr4ODkALNQFWgY0n58tawkvTBaOpf2\r\nE3BfgleQKRa73g\/H3pGtUWtdXeTSkNHlxqef7l\/icwEDWqZfV8MIPRgEymG1naYL\r\nFIBUptO7eT+NDScFHKe4rtPK7FHhUjS7x4OcIao=\r\n-----END CERTIFICATE-----"
441 441
 }
442 442
\ No newline at end of file
... ...
@@ -68,6 +68,7 @@ $(document).ready(function() {
68 68
 
69 69
                                                  localStorage.setItem('NCContacts', JSON.stringify(contactspndb));
70 70
 
71
+
71 72
 						 var getspswdUrl = OC.generateUrl('/apps/sip_trip_phone/user/getsippass');
72 73
 
73 74
 						 $.ajax({
... ...
@@ -78,25 +79,11 @@ $(document).ready(function() {
78 79
 
79 80
 							 if (!localStorage.getItem('SipTripPhone')) {
80 81
 
81
-							     function generateAESKey(passphrase) {
82
-								    const salt = CryptoJS.lib.WordArray.random(128 / 8);
83
-								    const key256Bits = CryptoJS.PBKDF2(passphrase, salt, { keySize: 256 / 32, iterations: 100, });
84
-								    return key256Bits;
85
-							     }
86
-							     function encryptAES(token, key) {
87
-								    var token = CryptoJS.AES.encrypt(token, key);
88
-								    return token.toString();
89
-							     }
90
-	                                                     var genPassphr = Date.now() + Math.floor(Math.random()*10000).toString(6).toUpperCase();
91
-	                                                     var aesKey = String(generateAESKey(genPassphr));
92
-	                                                     var encryptedTkn = encryptAES(sippassword, aesKey);
93
-                                                             document.cookie = 'crsptknks='+ aesKey +'; max-age=30; path=/; samesite=strict; secure';
94
-							     localStorage.setItem('sipUserToken', encryptedTkn);
82
+							     localStorage.setItem('sipUserToken', sippassword);
95 83
 
96 84
 							     // Open the phone window
97 85
                                                              var url = OC.generateUrl('/'+ stpappdir +'/sip_trip_phone/phone/index.php');
98 86
 							     window.open(url, "SipTripPhone", "width=354,height=572,menubar=no,scrollbars=no,status=no,addressbar=no,resizable=no");
99
-                                                             if (localStorage.getItem('ctxPhone')) { localStorage.removeItem('sipUserToken'); }
100 87
 
101 88
 							 } else {
102 89
 							     window.alert('The phone is already open!');
... ...
@@ -105,7 +92,6 @@ $(document).ready(function() {
105 92
 						      error: function() {}
106 93
 						 });
107 94
 
108
-
109 95
 		              },
110 96
 		              error: function() { alert("An error occurred while getting the contacts. You can check the Nextcloud log to find more details about this issue."); }
111 97
 		         });
... ...
@@ -100,12 +100,13 @@ class SphoneService {
100 100
 		    FROM  `*PREFIX*activity`
101 101
 		    WHERE `user` = ? AND `subject` = ?');
102 102
         $rescntcts = $cntctsusr->execute([$userId, $cardadd]);
103
-        $cnctsforuser = [];
103
+        $cnctsforuserinit = [];
104 104
         while ($ctrow = $rescntcts->fetch()) {
105 105
                $ctsperuserarr = json_decode($ctrow['subjectparams'], true);
106
-               $cnctsforuser[] = $ctsperuserarr['card']['id'];
106
+               $cnctsforuserinit[] = $ctsperuserarr['card']['id'];
107 107
         }
108 108
         $rescntcts->closeCursor();
109
+        $cnctsforuser = array_unique($cnctsforuserinit);
109 110
 
110 111
         $contactData = [];
111 112
         if ($cnctsforuser) {
... ...
@@ -126,6 +127,9 @@ class SphoneService {
126 127
                           if (str_contains($cdata, "FN:")) {
127 128
                               $cdnamearr = explode("FN:", $cdata);
128 129
                               $contactName = $cdnamearr[1];
130
+                          } elseif (str_contains($cdata, "FN;")) {
131
+                              $cdnamearr = explode(":", $cdata);
132
+                              $contactName = $cdnamearr[1];
129 133
                           } elseif (str_contains($cdata, "TITLE:")) {
130 134
                               $cdtitlearr = explode("TITLE:", $cdata);
131 135
                               $contactRole = $cdtitlearr[1];
... ...
@@ -75,19 +75,9 @@ $(document).ready(function() {
75 75
         } else { setTimeout(changePageTitle, 460); }
76 76
     }
77 77
 
78
-    function decryptAES(token, key) {
79
-        var code = CryptoJS.AES.decrypt(token, key);
80
-        var dectoken = code.toString(CryptoJS.enc.Utf8);
81
-        return dectoken;
82
-    }
83
-
84 78
     var mediaRecorder = null;
85
-    var fetchedTkn = localStorage.getItem('sipUserToken') || null;
86
-    var kfcook = document.cookie.match('(^|;)\\s*crsptknks\\s*=\\s*([^;]+)')?.pop() || '';
87
-    var userSIPToken = decryptAES(fetchedTkn, kfcook);
88
-
79
+    var userSIPToken = localStorage.getItem('sipUserToken');
89 80
     localStorage.removeItem('sipUserToken');
90
-    document.cookie = 'crsptknks=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=strict; secure';
91 81
 
92 82
     var user = JSON.parse(localStorage.getItem('SIPCreds'));
93 83
     var traceornot = (user.Tracesipmsg == 1)? true : false;