Browse Source

Merge pull request #39 from stakwork/history

History
feature/dockerfile-arm v0.9.6
Evan Feenstra 4 years ago
committed by GitHub
parent
commit
5275670b1d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 40
      api/controllers/chatTribes.ts
  2. 12
      api/controllers/chats.ts
  3. 2
      api/controllers/index.ts
  4. 3
      api/controllers/media.ts
  5. 4
      api/models/ts/mediaKey.ts
  6. 6
      api/network/index.ts
  7. 35
      api/network/modify.ts
  8. 21
      api/network/receive.ts
  9. 2
      api/utils/setup.ts
  10. 40
      dist/api/controllers/chatTribes.js
  11. 2
      dist/api/controllers/chatTribes.js.map
  12. 6
      dist/api/controllers/chats.js
  13. 2
      dist/api/controllers/chats.js.map
  14. 3
      dist/api/controllers/media.js
  15. 2
      dist/api/controllers/media.js.map
  16. 4
      dist/api/models/ts/mediaKey.js
  17. 2
      dist/api/models/ts/mediaKey.js.map
  18. 2
      dist/api/network/index.js
  19. 2
      dist/api/network/index.js.map
  20. 33
      dist/api/network/modify.js
  21. 2
      dist/api/network/modify.js.map
  22. 21
      dist/api/network/receive.js
  23. 2
      dist/api/network/receive.js.map
  24. 1
      dist/api/utils/setup.js
  25. 2
      dist/api/utils/setup.js.map
  26. 14
      package-lock.json
  27. 1
      package.json

40
api/controllers/chatTribes.ts

@ -16,12 +16,12 @@ async function joinTribe(req, res){
const existing = await models.Chat.findOne({where:{uuid}})
if(existing) {
console.log('[tribes] u are already in this tribe')
return
return failure(res, 'cant find tribe')
}
if(!owner_pubkey || !group_key || !uuid) {
console.log('[tribes] missing required params')
return
return failure(res, 'missing required params')
}
const ownerPubKey = owner_pubkey
@ -143,26 +143,48 @@ async function editTribe(req, res) {
} else {
failure(res, 'failed to update tribe')
}
}
async function replayChatHistory(chat, contact) {
const msgs = await models.Message.findAll({ order: [['id', 'asc']], limit:40 })
if(!(chat&&chat.id&&contact&&contact.id)){
return console.log('[tribes] cant replay history')
}
const msgs = await models.Message.findAll({
where:{chatId:chat.id},
order: [['id', 'asc']],
limit:40
})
const owner = await models.Contact.findOne({ where: { isOwner: true } })
asyncForEach(msgs, async m=>{
if(!network.typesToReplay.includes(m.type)) return // only for message for now
const sender = {
...owner.dataValues,
...m.senderAlias && {alias: m.senderAlias},
}
let content = ''
try {content = JSON.parse(m.remoteMessageContent)} catch(e) {}
let mediaKeyMap
let newMediaTerms
if(m.type===constants.message_types.attachment) {
if(m.mediaKey&&m.mediaToken) {
const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1]
const mediaKey = await models.MediaKey.findOne({where:{
muid, chatId: chat.id,
}})
console.log("FOUND MEDIA KEY!!",mediaKey.dataValues)
mediaKeyMap = {chat: mediaKey.key}
newMediaTerms = {muid: mediaKey.muid}
}
}
let msg = network.newmsg(m.type, chat, sender, {
content: m.remoteContent, // replace with the received content (u are owner)
mediaKey: m.mediaKey,
mediaType: m.mediaType,
mediaToken: m.mediaToken
content, // replaced with the remoteMessageContent (u are owner) {}
...mediaKeyMap && {mediaKey: mediaKeyMap},
...newMediaTerms && {mediaToken: newMediaTerms},
...m.mediaType && {mediaType: m.mediaType},
})
msg = await decryptMessage(msg, chat)
const data = await personalizeMessage(msg, contact, true)
const mqttTopic = `${contact.publicKey}/${chat.uuid}`
await network.signAndSend({data}, owner.publicKey, mqttTopic)
})

12
api/controllers/chats.ts

@ -8,7 +8,7 @@ import { sendNotification } from '../hub'
import * as md5 from 'md5'
import * as path from 'path'
import * as tribes from '../utils/tribes'
import {createTribeChatParams} from './chatTribes'
import {replayChatHistory,createTribeChatParams} from './chatTribes'
const constants = require(path.join(__dirname,'../../config/constants.json'))
@ -250,7 +250,7 @@ async function receiveGroupJoin(payload) {
role: constants.chat_roles.reader,
lastActive: date,
})
// replayChatHistory(chat, theSender)
replayChatHistory(chat, theSender)
}
}
@ -259,8 +259,8 @@ async function receiveGroupJoin(payload) {
type: constants.message_types.group_join,
sender: (theSender && theSender.id) || 0,
date: date,
messageContent: `${senderAlias} has joined the group`,
remoteMessageContent: '',
messageContent:'',//`${senderAlias} has joined the group`,
remoteMessageContent:'',
status: constants.statuses.confirmed,
createdAt: date,
updatedAt: date
@ -314,8 +314,8 @@ async function receiveGroupLeave(payload) {
type: constants.message_types.group_leave,
sender: (sender && sender.id) || 0,
date: date,
messageContent: `${sender_alias} has left the group`,
remoteMessageContent: '',
messageContent:'', //`${sender_alias} has left the group`,
remoteMessageContent:'',
status: constants.statuses.confirmed,
createdAt: date,
updatedAt: date

2
api/controllers/index.ts

@ -19,7 +19,7 @@ console.log("=> env:",env)
const constants = require(path.join(__dirname,'../../config/constants.json'))
async function set(app) {
if(models && models.Subscription){
subcriptions.initializeCronJobs()
}

3
api/controllers/media.ts

@ -139,9 +139,10 @@ function saveMediaKeys(muid, mediaKeyMap, chatId, messageId){
date.setMilliseconds(0)
for (let [contactId, key] of Object.entries(mediaKeyMap)) {
if(parseInt(contactId)!==1) {
const receiverID = parseInt(contactId) || 0 // 0 is for a tribe
models.MediaKey.create({
muid, chatId, key, messageId,
receiver: parseInt(contactId),
receiver: receiverID,
createdAt: date,
})
}

4
api/models/ts/mediaKey.ts

@ -36,4 +36,8 @@ export default class MediaKey extends Model<MediaKey> {
@Column
createdAt: Date
@Column(DataType.BIGINT)
sender: number // for tribe, remember the sender
}

6
api/network/index.ts

@ -1,5 +1,8 @@
import {sendMessage,signAndSend,newmsg} from './send'
import {initGrpcSubscriptions,initTribesSubscriptions,parseKeysendInvoice} from './receive'
import {
initGrpcSubscriptions,initTribesSubscriptions,parseKeysendInvoice,
typesToReplay,typesToForward,
} from './receive'
/*
Abstracts between lightning network and MQTT depending on Chat type and sender
@ -10,5 +13,6 @@ export {
initGrpcSubscriptions,
initTribesSubscriptions,
parseKeysendInvoice,
typesToReplay,typesToForward,
}

35
api/network/modify.ts

@ -6,11 +6,12 @@ import * as rsa from '../crypto/rsa'
import * as crypto from 'crypto'
import * as meme from '../utils/meme'
import * as FormData from 'form-data'
// import { models } from '../models'
const constants = require(path.join(__dirname,'../../config/constants.json'))
const msgtypes = constants.message_types
export async function modifyPayload(payload, chat) {
export async function modifyPayloadAndSaveMediaKey(payload, chat, sender) {
if(payload.type===msgtypes.attachment) {
const mt = payload.message && payload.message.mediaToken
@ -60,12 +61,34 @@ export async function modifyPayload(payload, chat) {
const amt = terms.meta&&terms.meta.amt
const ttl = terms.meta&&terms.meta.ttl
const mediaTerms: {[k:string]:any} = {
muid:json.muid, ttl:ttl||31536000,
muid:json.muid, ttl:ttl||31536000, host:'',
meta:{...amt && {amt}},
skipSigning: amt ? true : false // only sign if its free
}
const encKey = rsa.encrypt(chat.groupKey, newKey)
const encKey = rsa.encrypt(chat.groupKey, newKey.slice())
var date = new Date();
date.setMilliseconds(0)
console.log('[modify] save media key!',{
muid:json.muid,
chatId:chat.id,
key: encKey,
messageId: (payload.message&&payload.message.id)||0,
receiver: 0,
sender: sender.id, // the og sender
createdAt: date,
})
// await sleep(1)
// await models.MediaKey.create({
// muid:json.muid,
// chatId:chat.id,
// key:encKey,
// messageId: (payload.message&&payload.message.id)||0,
// receiver: 0,
// sender: sender.id, // the og sender
// createdAt: date,
// })
return fillmsg(payload, {mediaTerms,mediaKey:encKey}) // key is re-encrypted later
} catch(e) {
@ -85,4 +108,8 @@ function fillmsg(full, props){
...props,
}
}
}
}
// async function sleep(ms) {
// return new Promise(resolve => setTimeout(resolve, ms))
// }

21
api/network/receive.ts

@ -6,13 +6,13 @@ import * as tribes from '../utils/tribes'
import {SPHINX_CUSTOM_RECORD_KEY, verifyAscii} from '../utils/lightning'
import { models } from '../models'
import {sendMessage} from './send'
import {modifyPayload} from './modify'
import {modifyPayloadAndSaveMediaKey} from './modify'
import {decryptMessage,encryptTribeBroadcast} from '../utils/msg'
const constants = require(path.join(__dirname,'../../config/constants.json'))
const msgtypes = constants.message_types
const typesToForward=[
export const typesToForward=[
msgtypes.message, msgtypes.group_join, msgtypes.group_leave, msgtypes.attachment
]
const typesToModify=[
@ -21,6 +21,9 @@ const typesToModify=[
const typesThatNeedPricePerMessage = [
msgtypes.message, msgtypes.attachment
]
export const typesToReplay=[ // should match typesToForward
msgtypes.message, msgtypes.group_join, msgtypes.group_leave
]
async function onReceive(payload){
// if tribe, owner must forward to MQTT
let doAction = true
@ -34,8 +37,8 @@ async function onReceive(payload){
if(owner.publicKey===tribeOwnerPubKey){
toAddIn.isTribeOwner = true
// CHECK THEY ARE IN THE GROUP if message
const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
if(needsPricePerJoin) {
const senderContact = await models.Contact.findOne({where:{publicKey:payload.sender.pub_key}})
const senderMember = senderContact && await models.ChatMember.findOne({where:{contactId:senderContact.id, chatId:chat.id}})
if(!senderMember) doAction=false
}
@ -47,7 +50,7 @@ async function onReceive(payload){
if(payload.type===msgtypes.group_join) {
if(payload.message.amount<chat.priceToJoin) doAction=false
}
if(doAction) forwardMessageToTribe(payload)
if(doAction) forwardMessageToTribe(payload, senderContact)
else console.log('=> insufficient payment for this action')
}
}
@ -58,12 +61,14 @@ async function doTheAction(data){
let payload = data
if(payload.isTribeOwner) {
const ogContent = data.message && data.message.content
// decrypt and re-encrypt with phone's pubkey for storage
// const ogMediaKey = data.message && data.message.mediaKey
/* decrypt and re-encrypt with phone's pubkey for storage */
const chat = await models.Chat.findOne({where:{uuid:payload.chat.uuid}})
const pld = await decryptMessage(data, chat)
const me = await models.Contact.findOne({where:{isOwner:true}})
payload = await encryptTribeBroadcast(pld, me, true) // true=isTribeOwner
if(ogContent) payload.message.remoteContent = ogContent
if(ogContent) payload.message.remoteContent = JSON.stringify({'chat':ogContent}) // this is the key
//if(ogMediaKey) payload.message.remoteMediaKey = JSON.stringify({'chat':ogMediaKey})
}
if(ACTIONS[payload.type]) {
ACTIONS[payload.type](payload)
@ -72,12 +77,12 @@ async function doTheAction(data){
}
}
async function forwardMessageToTribe(ogpayload){
async function forwardMessageToTribe(ogpayload, sender){
const chat = await models.Chat.findOne({where:{uuid:ogpayload.chat.uuid}})
let payload
if(typesToModify.includes(ogpayload.type)){
payload = await modifyPayload(ogpayload, chat)
payload = await modifyPayloadAndSaveMediaKey(ogpayload, chat, sender)
} else {
payload = ogpayload
}

2
api/utils/setup.ts

@ -31,6 +31,8 @@ async function setVersion(){
}
async function migrate(){
addTableColumn('sphinx_media_keys', 'sender', 'BIGINT')
addTableColumn('sphinx_chats', 'group_key')
addTableColumn('sphinx_chats', 'group_private_key')
addTableColumn('sphinx_chats', 'host')

40
dist/api/controllers/chatTribes.js

@ -25,11 +25,11 @@ function joinTribe(req, res) {
const existing = yield models_1.models.Chat.findOne({ where: { uuid } });
if (existing) {
console.log('[tribes] u are already in this tribe');
return;
return res_1.failure(res, 'cant find tribe');
}
if (!owner_pubkey || !group_key || !uuid) {
console.log('[tribes] missing required params');
return;
return res_1.failure(res, 'missing required params');
}
const ownerPubKey = owner_pubkey;
// verify signature here?
@ -144,16 +144,38 @@ function editTribe(req, res) {
exports.editTribe = editTribe;
function replayChatHistory(chat, contact) {
return __awaiter(this, void 0, void 0, function* () {
const msgs = yield models_1.models.Message.findAll({ order: [['id', 'asc']], limit: 40 });
if (!(chat && chat.id && contact && contact.id)) {
return console.log('[tribes] cant replay history');
}
const msgs = yield models_1.models.Message.findAll({
where: { chatId: chat.id },
order: [['id', 'asc']],
limit: 40
});
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
asyncForEach(msgs, (m) => __awaiter(this, void 0, void 0, function* () {
if (!network.typesToReplay.includes(m.type))
return; // only for message for now
const sender = Object.assign(Object.assign({}, owner.dataValues), m.senderAlias && { alias: m.senderAlias });
let msg = network.newmsg(m.type, chat, sender, {
content: m.remoteContent,
mediaKey: m.mediaKey,
mediaType: m.mediaType,
mediaToken: m.mediaToken
});
let content = '';
try {
content = JSON.parse(m.remoteMessageContent);
}
catch (e) { }
let mediaKeyMap;
let newMediaTerms;
if (m.type === constants.message_types.attachment) {
if (m.mediaKey && m.mediaToken) {
const muid = m.mediaToken.split('.').length && m.mediaToken.split('.')[1];
const mediaKey = yield models_1.models.MediaKey.findOne({ where: {
muid, chatId: chat.id,
} });
console.log("FOUND MEDIA KEY!!", mediaKey.dataValues);
mediaKeyMap = { chat: mediaKey.key };
newMediaTerms = { muid: mediaKey.muid };
}
}
let msg = network.newmsg(m.type, chat, sender, Object.assign(Object.assign(Object.assign({ content }, mediaKeyMap && { mediaKey: mediaKeyMap }), newMediaTerms && { mediaToken: newMediaTerms }), m.mediaType && { mediaType: m.mediaType }));
msg = yield msg_1.decryptMessage(msg, chat);
const data = yield msg_1.personalizeMessage(msg, contact, true);
const mqttTopic = `${contact.publicKey}/${chat.uuid}`;

2
dist/api/controllers/chatTribes.js.map

File diff suppressed because one or more lines are too long

6
dist/api/controllers/chats.js

@ -239,7 +239,7 @@ function receiveGroupJoin(payload) {
role: constants.chat_roles.reader,
lastActive: date,
});
// replayChatHistory(chat, theSender)
chatTribes_1.replayChatHistory(chat, theSender);
}
}
const msg = {
@ -247,7 +247,7 @@ function receiveGroupJoin(payload) {
type: constants.message_types.group_join,
sender: (theSender && theSender.id) || 0,
date: date,
messageContent: `${senderAlias} has joined the group`,
messageContent: '',
remoteMessageContent: '',
status: constants.statuses.confirmed,
createdAt: date,
@ -300,7 +300,7 @@ function receiveGroupLeave(payload) {
type: constants.message_types.group_leave,
sender: (sender && sender.id) || 0,
date: date,
messageContent: `${sender_alias} has left the group`,
messageContent: '',
remoteMessageContent: '',
status: constants.statuses.confirmed,
createdAt: date,

2
dist/api/controllers/chats.js.map

File diff suppressed because one or more lines are too long

3
dist/api/controllers/media.js

@ -127,9 +127,10 @@ function saveMediaKeys(muid, mediaKeyMap, chatId, messageId) {
date.setMilliseconds(0);
for (let [contactId, key] of Object.entries(mediaKeyMap)) {
if (parseInt(contactId) !== 1) {
const receiverID = parseInt(contactId) || 0; // 0 is for a tribe
models_1.models.MediaKey.create({
muid, chatId, key, messageId,
receiver: parseInt(contactId),
receiver: receiverID,
createdAt: date,
});
}

2
dist/api/controllers/media.js.map

File diff suppressed because one or more lines are too long

4
dist/api/models/ts/mediaKey.js

@ -52,6 +52,10 @@ __decorate([
sequelize_typescript_1.Column,
__metadata("design:type", Date)
], MediaKey.prototype, "createdAt", void 0);
__decorate([
sequelize_typescript_1.Column(sequelize_typescript_1.DataType.BIGINT),
__metadata("design:type", Number)
], MediaKey.prototype, "sender", void 0);
MediaKey = __decorate([
sequelize_typescript_1.Table({ tableName: 'sphinx_media_keys', underscored: true })
], MediaKey);

2
dist/api/models/ts/mediaKey.js.map

@ -1 +1 @@
{"version":3,"file":"mediaKey.js","sourceRoot":"","sources":["../../../../api/models/ts/mediaKey.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;;;;;EAME;AAGF,IAAqB,QAAQ,GAA7B,MAAqB,QAAS,SAAQ,4BAAe;CA2BpD,CAAA;AAnBC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;oCACQ;AAGV;IADC,6BAAM;;sCACK;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;wCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACR;AAGhB;IADC,6BAAM;;qCACI;AAGX;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;2CACP;AAGjB;IADC,6BAAM;8BACI,IAAI;2CAAA;AA1BI,QAAQ;IAD5B,4BAAK,CAAC,EAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACtC,QAAQ,CA2B5B;kBA3BoB,QAAQ"}
{"version":3,"file":"mediaKey.js","sourceRoot":"","sources":["../../../../api/models/ts/mediaKey.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAsE;AAEtE;;;;;;EAME;AAGF,IAAqB,QAAQ,GAA7B,MAAqB,QAAS,SAAQ,4BAAe;CA+BpD,CAAA;AAvBC;IANC,6BAAM,CAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;KACpB,CAAC;;oCACQ;AAGV;IADC,6BAAM;;sCACK;AAGZ;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;wCACV;AAGd;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;0CACR;AAGhB;IADC,6BAAM;;qCACI;AAGX;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;2CACP;AAGjB;IADC,6BAAM;8BACI,IAAI;2CAAA;AAGf;IADC,6BAAM,CAAC,+BAAQ,CAAC,MAAM,CAAC;;wCACV;AA7BK,QAAQ;IAD5B,4BAAK,CAAC,EAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;GACtC,QAAQ,CA+B5B;kBA/BoB,QAAQ"}

2
dist/api/network/index.js

@ -8,4 +8,6 @@ const receive_1 = require("./receive");
exports.initGrpcSubscriptions = receive_1.initGrpcSubscriptions;
exports.initTribesSubscriptions = receive_1.initTribesSubscriptions;
exports.parseKeysendInvoice = receive_1.parseKeysendInvoice;
exports.typesToReplay = receive_1.typesToReplay;
exports.typesToForward = receive_1.typesToForward;
//# sourceMappingURL=index.js.map

2
dist/api/network/index.js.map

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/network/index.ts"],"names":[],"mappings":";;AAAA,iCAAqD;AAQjD,sBARI,kBAAW,CAQJ;AAAC,sBARI,kBAAW,CAQJ;AAAC,iBARI,aAAM,CAQJ;AAPlC,uCAA2F;AAQvF,gCARI,+BAAqB,CAQJ;AACrB,kCAT0B,iCAAuB,CAS1B;AACvB,8BAVkD,6BAAmB,CAUlD"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/network/index.ts"],"names":[],"mappings":";;AAAA,iCAAqD;AAWjD,sBAXI,kBAAW,CAWJ;AAAC,sBAXI,kBAAW,CAWJ;AAAC,iBAXI,aAAM,CAWJ;AAVlC,uCAGkB;AAQd,gCAVA,+BAAqB,CAUA;AACrB,kCAXsB,iCAAuB,CAWtB;AACvB,8BAZ8C,6BAAmB,CAY9C;AACnB,wBAZA,uBAAa,CAYA;AAAC,yBAZA,wBAAc,CAYA"}

33
dist/api/network/modify.js

@ -17,9 +17,10 @@ const rsa = require("../crypto/rsa");
const crypto = require("crypto");
const meme = require("../utils/meme");
const FormData = require("form-data");
// import { models } from '../models'
const constants = require(path.join(__dirname, '../../config/constants.json'));
const msgtypes = constants.message_types;
function modifyPayload(payload, chat) {
function modifyPayloadAndSaveMediaKey(payload, chat, sender) {
return __awaiter(this, void 0, void 0, function* () {
if (payload.type === msgtypes.attachment) {
const mt = payload.message && payload.message.mediaToken;
@ -59,11 +60,32 @@ function modifyPayload(payload, chat) {
const amt = terms.meta && terms.meta.amt;
const ttl = terms.meta && terms.meta.ttl;
const mediaTerms = {
muid: json.muid, ttl: ttl || 31536000,
muid: json.muid, ttl: ttl || 31536000, host: '',
meta: Object.assign({}, amt && { amt }),
skipSigning: amt ? true : false // only sign if its free
};
const encKey = rsa.encrypt(chat.groupKey, newKey);
const encKey = rsa.encrypt(chat.groupKey, newKey.slice());
var date = new Date();
date.setMilliseconds(0);
console.log('[modify] save media key!', {
muid: json.muid,
chatId: chat.id,
key: encKey,
messageId: (payload.message && payload.message.id) || 0,
receiver: 0,
sender: sender.id,
createdAt: date,
});
// await sleep(1)
// await models.MediaKey.create({
// muid:json.muid,
// chatId:chat.id,
// key:encKey,
// messageId: (payload.message&&payload.message.id)||0,
// receiver: 0,
// sender: sender.id, // the og sender
// createdAt: date,
// })
return fillmsg(payload, { mediaTerms, mediaKey: encKey }); // key is re-encrypted later
}
catch (e) {
@ -77,8 +99,11 @@ function modifyPayload(payload, chat) {
}
});
}
exports.modifyPayload = modifyPayload;
exports.modifyPayloadAndSaveMediaKey = modifyPayloadAndSaveMediaKey;
function fillmsg(full, props) {
return Object.assign(Object.assign({}, full), { message: Object.assign(Object.assign({}, full.message), props) });
}
// async function sleep(ms) {
// return new Promise(resolve => setTimeout(resolve, ms))
// }
//# sourceMappingURL=modify.js.map

2
dist/api/network/modify.js.map

@ -1 +1 @@
{"version":3,"file":"modify.js","sourceRoot":"","sources":["../../../api/network/modify.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"modify.js","sourceRoot":"","sources":["../../../api/network/modify.ts"],"names":[],"mappings":"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"}

21
dist/api/network/receive.js

@ -21,7 +21,7 @@ const modify_1 = require("./modify");
const msg_1 = require("../utils/msg");
const constants = require(path.join(__dirname, '../../config/constants.json'));
const msgtypes = constants.message_types;
const typesToForward = [
exports.typesToForward = [
msgtypes.message, msgtypes.group_join, msgtypes.group_leave, msgtypes.attachment
];
const typesToModify = [
@ -30,13 +30,16 @@ const typesToModify = [
const typesThatNeedPricePerMessage = [
msgtypes.message, msgtypes.attachment
];
exports.typesToReplay = [
msgtypes.message, msgtypes.group_join, msgtypes.group_leave
];
function onReceive(payload) {
return __awaiter(this, void 0, void 0, function* () {
// if tribe, owner must forward to MQTT
let doAction = true;
const toAddIn = {};
const isTribe = payload.chat && payload.chat.type === constants.chat_types.tribe;
if (isTribe && typesToForward.includes(payload.type)) {
if (isTribe && exports.typesToForward.includes(payload.type)) {
const needsPricePerJoin = typesThatNeedPricePerMessage.includes(payload.type);
const chat = yield models_1.models.Chat.findOne({ where: { uuid: payload.chat.uuid } });
const tribeOwnerPubKey = chat && chat.ownerPubkey;
@ -44,8 +47,8 @@ function onReceive(payload) {
if (owner.publicKey === tribeOwnerPubKey) {
toAddIn.isTribeOwner = true;
// CHECK THEY ARE IN THE GROUP if message
const senderContact = yield models_1.models.Contact.findOne({ where: { publicKey: payload.sender.pub_key } });
if (needsPricePerJoin) {
const senderContact = yield models_1.models.Contact.findOne({ where: { publicKey: payload.sender.pub_key } });
const senderMember = senderContact && (yield models_1.models.ChatMember.findOne({ where: { contactId: senderContact.id, chatId: chat.id } }));
if (!senderMember)
doAction = false;
@ -61,7 +64,7 @@ function onReceive(payload) {
doAction = false;
}
if (doAction)
forwardMessageToTribe(payload);
forwardMessageToTribe(payload, senderContact);
else
console.log('=> insufficient payment for this action');
}
@ -75,13 +78,15 @@ function doTheAction(data) {
let payload = data;
if (payload.isTribeOwner) {
const ogContent = data.message && data.message.content;
// decrypt and re-encrypt with phone's pubkey for storage
// const ogMediaKey = data.message && data.message.mediaKey
/* decrypt and re-encrypt with phone's pubkey for storage */
const chat = yield models_1.models.Chat.findOne({ where: { uuid: payload.chat.uuid } });
const pld = yield msg_1.decryptMessage(data, chat);
const me = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
payload = yield msg_1.encryptTribeBroadcast(pld, me, true); // true=isTribeOwner
if (ogContent)
payload.message.remoteContent = ogContent;
payload.message.remoteContent = JSON.stringify({ 'chat': ogContent }); // this is the key
//if(ogMediaKey) payload.message.remoteMediaKey = JSON.stringify({'chat':ogMediaKey})
}
if (controllers_1.ACTIONS[payload.type]) {
controllers_1.ACTIONS[payload.type](payload);
@ -91,12 +96,12 @@ function doTheAction(data) {
}
});
}
function forwardMessageToTribe(ogpayload) {
function forwardMessageToTribe(ogpayload, sender) {
return __awaiter(this, void 0, void 0, function* () {
const chat = yield models_1.models.Chat.findOne({ where: { uuid: ogpayload.chat.uuid } });
let payload;
if (typesToModify.includes(ogpayload.type)) {
payload = yield modify_1.modifyPayload(ogpayload, chat);
payload = yield modify_1.modifyPayloadAndSaveMediaKey(ogpayload, chat, sender);
}
else {
payload = ogpayload;

2
dist/api/network/receive.js.map

File diff suppressed because one or more lines are too long

1
dist/api/utils/setup.js

@ -44,6 +44,7 @@ function setVersion() {
}
function migrate() {
return __awaiter(this, void 0, void 0, function* () {
addTableColumn('sphinx_media_keys', 'sender', 'BIGINT');
addTableColumn('sphinx_chats', 'group_key');
addTableColumn('sphinx_chats', 'group_private_key');
addTableColumn('sphinx_chats', 'host');

2
dist/api/utils/setup.js.map

@ -1 +1 @@
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../api/utils/setup.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../api/utils/setup.ts"],"names":[],"mappings":"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"}

14
package-lock.json

@ -1321,6 +1321,11 @@
"color-convert": "^1.9.0"
}
},
"any-base": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
"integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
},
"any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@ -9860,6 +9865,15 @@
"resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
"integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="
},
"short-uuid": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/short-uuid/-/short-uuid-3.1.1.tgz",
"integrity": "sha512-7dI69xtJYpTIbg44R6JSgrbDtZFuZ9vAwwmnF/L0PinykbFrhQ7V8omKsQcVw1TP0nYJ7uQp1PN6/aVMkzQFGQ==",
"requires": {
"any-base": "^1.1.0",
"uuid": "^3.3.2"
}
},
"sigmund": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",

1
package.json

@ -72,6 +72,7 @@
"sequelize": "^5.19.3",
"sequelize-cli": "^5.5.1",
"sequelize-typescript": "^1.1.0",
"short-uuid": "^3.1.1",
"sjcl": "^1.0.8",
"tail": "^2.0.3",
"ts-node": "^8.5.4",

Loading…
Cancel
Save