update to types

This commit is contained in:
Josh Burman 2019-03-11 14:35:33 -04:00
parent 8fa7f98493
commit cdd6179992
28 changed files with 518 additions and 39 deletions

View File

@ -1,6 +1,46 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const channelBase_1 = require("./channels/channelBase");
class ChannelManager {
constructor() {
this.channels = [];
// create default channel...
var channel = new channelBase_1.default('default');
this.channels.push(channel);
}
createChannel(data) {
var channel = this.channelExists(data.channel_id);
if (channel) {
console.log('channel already exists');
}
else {
var Channel = require(`./channels/${data.client_type}s/${data.client}channel`);
var channel = new channelBase_1.default(data.channel_id);
this.channels.push(channel);
console.log('added channel to channel manager');
}
console.log(data.channel_id);
}
channelExists(channel_id) {
for (let channel of this.channels) {
if (channel.id == channel_id) {
return channel;
}
}
return null;
}
addClientToChannel(client, channel_id) {
var channel = this.channelExists(channel_id);
if (channel) {
channel.addClient(client);
client.connectToChannel(channel);
}
else {
console.log(`channel with id ${channel_id} does not exist.`);
}
}
}
;
module.exports = ChannelManager;
exports.default = ChannelManager;
// { :client => 'mhs', :client_type => 'site', :user_id => 125, :user_type => 'user', :channel => 'mhs_1239' }
//# sourceMappingURL=channelManager.js.map

View File

@ -1 +1 @@
{"version":3,"file":"channelManager.js","sourceRoot":"","sources":["../../src/channelManager.ts"],"names":[],"mappings":";AAAA,MAAM,cAAc;CAEnB;AAAA,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC"}
{"version":3,"file":"channelManager.js","sourceRoot":"","sources":["../../src/channelManager.ts"],"names":[],"mappings":";;AAAA,wDAAiD;AAKjD,MAAM,cAAc;IAGlB;QAFA,aAAQ,GAA+B,EAAE,CAAC;QAGxC,4BAA4B;QAC5B,IAAI,OAAO,GAAgB,IAAI,qBAAW,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,OAAO,GAAgC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/E,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;YAC/E,IAAI,OAAO,GAAgC,IAAI,qBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;SACjD;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,UAAkB;QAC9B,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,OAAO,CAAC,EAAE,IAAI,UAAU,EAAE;gBAC5B,OAAO,OAAO,CAAC;aAChB;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,MAA4B,EAAE,UAAkB;QACjE,IAAI,OAAO,GAAgC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1B,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;SAClC;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,kBAAkB,CAAC,CAAA;SAC7D;IACH,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,cAAc,CAAC;AAE9B,8GAA8G"}

42
dist/server/channels/channelBase.js vendored Normal file
View File

@ -0,0 +1,42 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class ChannelBase {
constructor(id) {
this.clients = [];
this.id = id;
console.log('channel created');
}
addClient(client) {
console.log(client.data);
if (this.clientExists(client.id)) {
console.log('client already exits in channel');
}
else {
this.clients.push(client);
console.log('added client to channel');
}
}
clientExists(id) {
for (let client of this.clients) {
if (client.id == id) {
return client;
}
}
return null;
}
broadcastMessage(from, message) {
for (let client of this.clients) {
if (client != from) {
client.ws.send(message);
console.log(`sent to ${client.id}: %s`, message);
console.log(message);
}
else {
console.log('client is same as sender');
}
}
}
}
;
exports.default = ChannelBase;
//# sourceMappingURL=channelBase.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"channelBase.js","sourceRoot":"","sources":["../../../src/channels/channelBase.ts"],"names":[],"mappings":";;AAGA,MAAM,WAAW;IAIf,YAAY,EAAU;QAFtB,YAAO,GAA6B,EAAE,CAAC;QAGrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,MAA4B;QACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;SAChD;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;SACxC;IACH,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;gBACnB,OAAO,MAAM,CAAC;aACf;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,IAA+B,EAAE,OAAe;QAC/D,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aACtB;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;aACzC;SACF;IACH,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,WAAW,CAAC"}

View File

@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const channelBase_1 = require("../channelBase");
class MHSChannel extends channelBase_1.default {
broadcastMessage(from, message) {
for (let client of this.clients) {
if (client != from) {
client.ws.send(message);
console.log(`sent to ${client.id}: %s`, message);
console.log(message);
}
else {
console.log('client is same as sender');
}
}
}
}
;
exports.default = MHSChannel;
//# sourceMappingURL=mhsChannel.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"mhsChannel.js","sourceRoot":"","sources":["../../../../src/channels/sites/mhsChannel.ts"],"names":[],"mappings":";;AAEA,gDAAyC;AAEzC,MAAM,UAAW,SAAQ,qBAAW;IAClC,gBAAgB,CAAC,IAA+B,EAAE,OAAe;QAC/D,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aACtB;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;aACzC;SACF;IACH,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,UAAU,CAAC"}

8
dist/server/client/sites/mhsClient.js vendored Normal file
View File

@ -0,0 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const base_1 = require("../base");
class MHSClient extends base_1.default {
}
;
module.exports = MHSClient;
//# sourceMappingURL=mhsClient.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"mhsClient.js","sourceRoot":"","sources":["../../../../src/client/sites/mhsClient.ts"],"names":[],"mappings":";;AAAA,kCAA2B;AAE3B,MAAM,SAAU,SAAQ,cAAI;CAE3B;AAAA,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC"}

View File

@ -1,20 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class ClientManager {
constructor(data, ws) {
this.ws = ws;
this.client(data);
constructor() {
this.clients = [];
//...maybe one day
}
client(data) {
if (data.site) {
console.log('legit: ' + data.site);
addClient(data, ws) {
if (data.client_type && !this.clientExists(data.user_id)) {
var Client = require(`./clients/${data.client_type}s/${data.client}client`);
var client = new Client(data, ws);
this.clients.push(client);
console.log('client added to client manager');
return client;
}
else {
console.log('no client type designated, socket disconnect.');
this.ws.close();
console.log('no client type designated or client already exists, socket disconnected.');
ws.close();
return null;
}
}
clientsOfType(client_type) {
var result = [];
for (let client of this.clients) {
if (client.type() == client_type) {
result.push(client);
}
}
return result;
}
clientExists(id) {
for (let client of this.clients) {
if (client.id == id) {
return client;
}
}
return null;
}
getClient(id) {
return this.clientExists(id);
}
removeClient(id) {
var index = 0;
for (let client of this.clients) {
if (client.id == id) {
client.ws.close();
this.clients.splice(index, 1);
console.log('client disconnected');
return true;
}
index++;
}
}
}
;
module.exports = ClientManager;
// user_type: 'user', user_id: 125, site: 'mhs' }
exports.default = ClientManager;
// { :client => 'mhs', :client_type => 'site', :user_id => 125, :user_type => 'user' }
// var exampleSocket = new WebSocket("wss://ysbraid.localhost:8443?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7ImNsaWVudCI6Im1ocyIsImNsaWVudF90eXBlIjoic2l0ZSIsInVzZXJfdHlwZSI6InVzZXIiLCJ1c2VyX2lkIjoxMjV9LCJleHAiOjE1NTI4MDExMDUsImF1ZCI6ImludGVybmFsIiwiaXNzIjoiWWFyZHN0aWNrIFNvZnR3YXJlIiwic3ViIjoiQnJhaWQgSldUIn0.fkfoqoWNjOeKfsXXJxh-9lBudhFsxhUt9fUIT1BXOLU");
//# sourceMappingURL=clientManager.js.map

View File

@ -1 +1 @@
{"version":3,"file":"clientManager.js","sourceRoot":"","sources":["../../src/clientManager.ts"],"names":[],"mappings":";AAAA,MAAM,aAAa;IAGjB,YAAY,IAAY,EAAE,EAAU;QAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,IAAS;QACd,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;SACnC;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAA;YAC5D,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;SACjB;IACH,CAAC;CACF;AAAA,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC;AAG9B,iDAAiD"}
{"version":3,"file":"clientManager.js","sourceRoot":"","sources":["../../src/clientManager.ts"],"names":[],"mappings":";;AAIA,MAAM,aAAa;IAGjB;QAFA,YAAO,GAA6B,EAAE,CAAC;QAGrC,kBAAkB;IACpB,CAAC;IAED,SAAS,CAAC,IAAS,EAAE,EAAa;QAChC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACxD,IAAI,MAAM,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;YAC5E,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,OAAO,MAAM,CAAC;SACf;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAA;YACvF,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,aAAa,CAAC,WAAmB;QAC/B,IAAI,MAAM,GAA6B,EAAE,CAAC;QAE1C,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,EAAE;gBAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrB;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;gBACnB,OAAO,MAAM,CAAC;aACf;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,IAAI,KAAK,GAAW,CAAC,CAAC;QAEtB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;gBACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO,IAAI,CAAC;aACb;YAED,KAAK,EAAE,CAAC;SACT;IACH,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,aAAa,CAAC;AAG7B,sFAAsF;AACtF,gXAAgX"}

22
dist/server/clients/base.js vendored Normal file
View File

@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class ClientBase {
constructor(data, ws) {
this.ws = ws;
this.data = data;
this.id = data.user_id;
this.channel = null;
}
getData() {
return this.data;
}
type() {
return this.data.client_type;
}
connectToChannel(channel) {
this.channel = channel;
}
}
;
exports.default = ClientBase;
//# sourceMappingURL=Base.js.map

1
dist/server/clients/base.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"Base.js","sourceRoot":"","sources":["../../../src/clients/Base.ts"],"names":[],"mappings":";;AAIA,MAAM,UAAU;IAMd,YAAY,IAAS,EAAE,EAAa;QAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,gBAAgB,CAAC,OAAoB;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,UAAU,CAAC"}

30
dist/server/clients/clientBase.js vendored Normal file
View File

@ -0,0 +1,30 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class ClientBase {
constructor(data, ws) {
this.ws = ws;
this.data = data;
this.id = data.user_id;
this.channel = null;
}
getData() {
return this.data;
}
type() {
return this.data.client_type;
}
connectToChannel(channel) {
this.channel = channel;
this.ws.on('message', (message) => {
channel.broadcastMessage(this, message);
console.log('broadcasted: %s', message);
});
}
replaceWebSocket(ws) {
this.ws.close();
this.ws = ws;
}
}
;
exports.default = ClientBase;
//# sourceMappingURL=clientBase.js.map

1
dist/server/clients/clientBase.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"clientBase.js","sourceRoot":"","sources":["../../../src/clients/clientBase.ts"],"names":[],"mappings":";;AAKA,MAAM,UAAU;IAMd,YAAY,IAAS,EAAE,EAAa;QAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,gBAAgB,CAAC,OAA+B;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAe,EAAE,EAAE;YACxC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,EAAa;QAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;CACF;AAAA,CAAC;AAEF,kBAAe,UAAU,CAAC"}

13
dist/server/clients/sites/mhsClient.js vendored Normal file
View File

@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const clientBase_1 = require("../clientBase");
class MHSClient extends clientBase_1.default {
constructor(data, ws) {
super(data, ws);
console.log('mhs client created');
}
}
;
module.exports = MHSClient;
exports.default = MHSClient;
//# sourceMappingURL=mhsClient.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"mhsClient.js","sourceRoot":"","sources":["../../../../src/clients/sites/mhsClient.ts"],"names":[],"mappings":";;AACA,8CAAuC;AAEvC,MAAM,SAAU,SAAQ,oBAAU;IAChC,YAAY,IAAS,EAAE,EAAa;QAClC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;CACF;AAAA,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;AAC3B,kBAAe,SAAS,CAAC"}

View File

@ -1,8 +1,8 @@
"use strict";
module.exports = {
version: '0.2.1',
version: '0.5.5',
whitelist: (process.env.WHITELIST || "http://admin.localhost").split(','),
secret: process.env.API_TOKEN || "test",
secret: process.env.SECRET || "test",
devToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoidGVzdCBkYXRhIiwiYXVkIjoiaW50ZXJuYWwiLCJpc3MiOiJZYXJkc3RpY2sgU29mdHdhcmUiLCJzdWIiOiJCcmFpZCBKV1QifQ.t6LFXWPEVz3aLXwtrucarggqTkGY_2NnZB8ZTMaJ2oI',
port: process.env.PORT || 8443,
hostname: process.env.HOSTNAME || 'ysbraid.localhost',

View File

@ -1 +1 @@
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/config/app.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,OAAO,EAAG,OAAO;IACjB,SAAS,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,wBAAwB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1E,MAAM,EAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;IACxC,QAAQ,EAAE,iMAAiM;IAC3M,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;IAC9B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,mBAAmB;IACrD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa;IACrD,WAAW,EAAG;QACZ,MAAM,EAAG,oBAAoB;QAC7B,OAAO,EAAG,WAAW;QACrB,QAAQ,EAAG,UAAU;QACrB,SAAS,EAAG,CAAC,OAAO,CAAC;KACtB;CACF,CAAA"}
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/config/app.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,OAAO,EAAG,OAAO;IACjB,SAAS,EAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,wBAAwB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1E,MAAM,EAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM;IACrC,QAAQ,EAAE,iMAAiM;IAC3M,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;IAC9B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,mBAAmB;IACrD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa;IACrD,WAAW,EAAG;QACZ,MAAM,EAAG,oBAAoB;QAC7B,OAAO,EAAG,WAAW;QACrB,QAAQ,EAAG,UAAU;QACrB,SAAS,EAAG,CAAC,OAAO,CAAC;KACtB;CACF,CAAA"}

23
dist/server/server.js vendored
View File

@ -18,6 +18,8 @@ const url = require("url");
//internal imports
var routes = require('./routes');
var app = require('./config/app');
const clientManager_1 = require("./clientManager");
const channelManager_1 = require("./channelManager");
var privateKey = fs.readFileSync('certs/key.pem', 'utf8');
var certificate = fs.readFileSync('certs/cert.pem', 'utf8');
var options = { key: privateKey, cert: certificate, hostname: app.hostname };
@ -26,11 +28,26 @@ const server = https.createServer(options, application);
const wss = new WebSocket.Server({ noServer: true, maxPayload: 250000, host: app.hostname });
application.use(express.json());
application.use('', routes);
let clientManager = new clientManager_1.default();
let channelManager = new channelManager_1.default();
wss.on('connection', (ws, request, args) => {
console.log('client connected');
var data = JSON.parse(args).data;
var ClientManager = require('./clientManager');
let clientManager = new ClientManager(data, ws);
if (!channelManager.channelExists(data.channel)) {
channelManager.createChannel(data);
}
if (clientManager.clientExists(data.user_id)) {
var client = clientManager.getClient(data.user_id);
if (client != null) {
client.replaceWebSocket(ws);
}
}
else {
var client = clientManager.addClient(data, ws);
}
if (client != null) {
channelManager.addClientToChannel(client, data.channel);
}
// ws.on('message', (message: string) => {
// console.log('received: %s', message);
// const broadcastRegex = /^broadcast\:/;
@ -63,7 +80,7 @@ server.on('upgrade', function upgrade(request, socket, head) {
function verifyConnection() {
return new Promise((resolve, reject) => {
var data = url.parse(request.url, true).query;
var token = data["token"] || (app.environment == 'development' ? app.devToken : '');
var token = data.token || (app.environment == 'development' ? app.devToken : '');
var accepted = true;
var result;
jwt.verify(token, app.secret, app.signOptions, function (err, decoded) {

View File

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

View File

@ -1,5 +1,54 @@
class ChannelManager {
import ChannelBase from './channels/channelBase';
import ClientBase from './clients/clientBase';
import MHSClient from './clients/sites/mhsClient';
import MHSChannel from './channels/sites/mhsChannel';
class ChannelManager {
channels: ChannelBase[]|MHSChannel[] = [];
constructor() {
// create default channel...
var channel: ChannelBase = new ChannelBase('default');
this.channels.push(channel);
}
createChannel(data: any) {
var channel: ChannelBase|MHSChannel|null = this.channelExists(data.channel_id);
if (channel) {
console.log('channel already exists');
} else {
var Channel = require(`./channels/${data.client_type}s/${data.client}channel`);
var channel: ChannelBase|MHSChannel|null = new ChannelBase(data.channel_id);
this.channels.push(channel);
console.log('added channel to channel manager');
}
console.log(data.channel_id);
}
channelExists(channel_id: string) {
for (let channel of this.channels) {
if (channel.id == channel_id) {
return channel;
}
}
return null;
}
addClientToChannel(client: ClientBase|MHSClient, channel_id: string) {
var channel: ChannelBase|MHSChannel|null = this.channelExists(channel_id);
if (channel) {
channel.addClient(client);
client.connectToChannel(channel);
} else {
console.log(`channel with id ${channel_id} does not exist.`)
}
}
};
module.exports = ChannelManager;
export default ChannelManager;
// { :client => 'mhs', :client_type => 'site', :user_id => 125, :user_type => 'user', :channel => 'mhs_1239' }

View File

@ -0,0 +1,46 @@
import ClientBase from '../clients/clientBase';
import MHSClient from '../clients/sites/mhsClient';
class ChannelBase {
id: string;
clients: MHSClient[]|ClientBase[] = [];
constructor(id: string) {
this.id = id;
console.log('channel created');
}
addClient(client: MHSClient|ClientBase) {
console.log(client.data)
if (this.clientExists(client.id)) {
console.log('client already exits in channel');
} else {
this.clients.push(client);
console.log('added client to channel');
}
}
clientExists(id: number) {
for (let client of this.clients) {
if (client.id == id) {
return client;
}
}
return null;
}
broadcastMessage(from: ClientBase|MHSClient|null, message: string) {
for (let client of this.clients) {
if (client != from) {
client.ws.send(message);
console.log(`sent to ${client.id}: %s`, message);
console.log(message);
} else {
console.log('client is same as sender');
}
}
}
};
export default ChannelBase;

View File

@ -0,0 +1,19 @@
import ClientBase from '../../clients/clientBase';
import MHSClient from '../../clients/sites/mhsClient';
import ChannelBase from '../channelBase';
class MHSChannel extends ChannelBase {
broadcastMessage(from: ClientBase|MHSClient|null, message: string) {
for (let client of this.clients) {
if (client != from) {
client.ws.send(message);
console.log(`sent to ${client.id}: %s`, message);
console.log(message);
} else {
console.log('client is same as sender');
}
}
}
};
export default MHSChannel;

View File

@ -1,22 +1,72 @@
class ClientManager {
ws: any;
import * as WebSocket from 'ws';
import ClientBase from './clients/clientBase';
import MHSClient from './clients/sites/mhsClient';
constructor(data: object, ws: object) {
this.ws = ws;
this.client(data);
class ClientManager {
clients: ClientBase[]|MHSClient[] = [];
constructor() {
//...maybe one day
}
client(data: any) {
if (data.site) {
console.log('legit: ' + data.site)
addClient(data: any, ws: WebSocket) {
if (data.client_type && !this.clientExists(data.user_id)) {
var Client = require(`./clients/${data.client_type}s/${data.client}client`);
var client = new Client(data, ws);
this.clients.push(client);
console.log('client added to client manager');
return client;
} else {
console.log('no client type designated, socket disconnect.')
this.ws.close();
console.log('no client type designated or client already exists, socket disconnected.')
ws.close();
return null;
}
}
clientsOfType(client_type: string) {
var result: ClientBase[]|MHSClient[] = [];
for (let client of this.clients) {
if (client.type() == client_type) {
result.push(client);
}
}
return result;
}
clientExists(id: number) {
for (let client of this.clients) {
if (client.id == id) {
return client;
}
}
return null;
}
getClient(id: number) {
return this.clientExists(id);
}
removeClient(id: number) {
var index: number = 0;
for (let client of this.clients) {
if (client.id == id) {
client.ws.close();
this.clients.splice(index, 1);
console.log('client disconnected');
return true;
}
index++;
}
}
};
module.exports = ClientManager;
export default ClientManager;
// user_type: 'user', user_id: 125, site: 'mhs' }
// { :client => 'mhs', :client_type => 'site', :user_id => 125, :user_type => 'user' }
// var exampleSocket = new WebSocket("wss://ysbraid.localhost:8443?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7ImNsaWVudCI6Im1ocyIsImNsaWVudF90eXBlIjoic2l0ZSIsInVzZXJfdHlwZSI6InVzZXIiLCJ1c2VyX2lkIjoxMjV9LCJleHAiOjE1NTI4MDExMDUsImF1ZCI6ImludGVybmFsIiwiaXNzIjoiWWFyZHN0aWNrIFNvZnR3YXJlIiwic3ViIjoiQnJhaWQgSldUIn0.fkfoqoWNjOeKfsXXJxh-9lBudhFsxhUt9fUIT1BXOLU");

42
src/clients/clientBase.ts Normal file
View File

@ -0,0 +1,42 @@
import * as WebSocket from 'ws';
import * as ChannelManager from '../channelManager';
import ChannelBase from '../channels/channelBase';
import MHSChannel from '../channels/sites/mhsChannel';
class ClientBase {
ws: WebSocket;
data: any;
id: number;
channel: ChannelBase|MHSChannel|null;
constructor(data: any, ws: WebSocket) {
this.ws = ws;
this.data = data;
this.id = data.user_id;
this.channel = null;
}
getData() {
return this.data;
}
type() {
return this.data.client_type;
}
connectToChannel(channel: ChannelBase|MHSChannel) {
this.channel = channel;
this.ws.on('message', (message: string) => {
channel.broadcastMessage(this, message);
console.log('broadcasted: %s', message);
});
}
replaceWebSocket(ws: WebSocket) {
this.ws.close();
this.ws = ws;
}
};
export default ClientBase;

View File

@ -0,0 +1,13 @@
import * as WebSocket from 'ws';
import ClientBase from '../clientBase';
class MHSClient extends ClientBase {
constructor(data: any, ws: WebSocket) {
super(data, ws);
console.log('mhs client created');
}
};
module.exports = MHSClient;
export default MHSClient;

View File

@ -1,7 +1,7 @@
module.exports = {
version : '0.5.1',
version : '0.5.5',
whitelist : (process.env.WHITELIST || "http://admin.localhost").split(','),
secret : (process.env.API_TOKENS || "test").split(','),
secret : process.env.SECRET || "test",
devToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoidGVzdCBkYXRhIiwiYXVkIjoiaW50ZXJuYWwiLCJpc3MiOiJZYXJkc3RpY2sgU29mdHdhcmUiLCJzdWIiOiJCcmFpZCBKV1QifQ.t6LFXWPEVz3aLXwtrucarggqTkGY_2NnZB8ZTMaJ2oI',
port: process.env.PORT || 8443,
hostname: process.env.HOSTNAME || 'ysbraid.localhost',

View File

@ -9,6 +9,10 @@ import * as url from 'url';
//internal imports
var routes = require('./routes');
var app = require('./config/app');
import ClientManager from './clientManager';
import ChannelManager from './channelManager';
import ClientBase from './clients/clientBase';
import MHSClient from './clients/sites/mhsClient';
var privateKey = fs.readFileSync('certs/key.pem', 'utf8');
var certificate = fs.readFileSync('certs/cert.pem', 'utf8');
@ -21,11 +25,30 @@ const wss = new WebSocket.Server({ noServer: true, maxPayload:250000, host: app.
application.use(express.json());
application.use('', routes);
let clientManager = new ClientManager();
let channelManager = new ChannelManager();
wss.on('connection', (ws: WebSocket, request: object, args: string) => {
console.log('client connected');
var data = JSON.parse(args).data
var ClientManager = require('./clientManager');
let clientManager = new ClientManager(data, ws);
if (!channelManager.channelExists(data.channel)) {
channelManager.createChannel(data);
}
if (clientManager.clientExists(data.user_id)) {
var client: ClientBase|MHSClient|null = clientManager.getClient(data.user_id);
if (client != null) {
client.replaceWebSocket(ws);
}
} else {
var client: ClientBase|MHSClient|null = clientManager.addClient(data, ws);
}
if (client != null) {
channelManager.addClientToChannel(client, data.channel);
}
// ws.on('message', (message: string) => {
@ -66,7 +89,7 @@ server.on('upgrade', async function upgrade(request, socket, head) {
function verifyConnection() {
return new Promise((resolve, reject) => {
var data = url.parse(request.url, true).query;
var token = data["token"] || (app.environment == 'development' ? app.devToken : '');
var token = data.token || (app.environment == 'development' ? app.devToken : '');
var accepted = true;
var result: string;