mirror of
https://github.com/karl0ss/orvibo-b25-server-kex.git
synced 2025-04-29 12:53:40 +01:00
Updates PacketBuilder to accept key from user settings and general code cleanup
This commit is contained in:
parent
2092ead277
commit
7f9b58216c
@ -6,7 +6,8 @@ const httpPort = 3000;
|
|||||||
|
|
||||||
// Create a settings object to pass PK key and map sockets to names
|
// Create a settings object to pass PK key and map sockets to names
|
||||||
const settings = {
|
const settings = {
|
||||||
ORVIBO_KEY: '', // put your PK key here as plain text
|
LOG_PACKET: false, //Show incoming packet data from the socket
|
||||||
|
ORVIBO_KEY: '', // put your PK key here as plain text (See Readme)
|
||||||
plugInfo : [
|
plugInfo : [
|
||||||
// Add uid and a name so you can easily identify the connected sockets
|
// Add uid and a name so you can easily identify the connected sockets
|
||||||
{
|
{
|
||||||
@ -29,7 +30,7 @@ orvbio.on('plugStateUpdated', ({uid, state , name}) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// The plug sends a hearbeat to let the server know it's still alive
|
// The plug sends a hearbeat to let the server know it's still alive
|
||||||
orvbio.on('gotHeartbeat', ({uid, state , name}) => {
|
orvbio.on('gotHeartbeat', ({uid, name}) => {
|
||||||
console.log(`Plug ${name} ${uid} sent heartbeat`);
|
console.log(`Plug ${name} ${uid} sent heartbeat`);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -66,7 +67,7 @@ const requestHandler = (request, response) => {
|
|||||||
response.end(JSON.stringify(sockets));
|
response.end(JSON.stringify(sockets));
|
||||||
};
|
};
|
||||||
|
|
||||||
const httpServer = http.createServer(requestHandler)
|
const httpServer = http.createServer(requestHandler);
|
||||||
|
|
||||||
httpServer.listen(httpPort, (err) => {
|
httpServer.listen(httpPort, (err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
15
Orvibo.js
15
Orvibo.js
@ -1,24 +1,20 @@
|
|||||||
const net = require('net');
|
const net = require('net');
|
||||||
const util = require('util');
|
|
||||||
const Packet = require('./OrviboPacket');
|
const Packet = require('./OrviboPacket');
|
||||||
const PacketBuilder = require('./PacketBuilder');
|
const PacketBuilder = require('./PacketBuilder');
|
||||||
const Utils = require('./Utils');
|
const Utils = require('./Utils');
|
||||||
const Settings = require('./OrviboSettings');
|
const Settings = require('./OrviboSettings');
|
||||||
const EventEmitter = require('events').EventEmitter;
|
const EventEmitter = require('events').EventEmitter;
|
||||||
|
|
||||||
let socketSettings = Settings;
|
let ORVIBO_KEY = Settings.ORVIBO_KEY;
|
||||||
|
let LOG_PACKET = Settings.LOG_PACKET;
|
||||||
let ORVIBO_KEY = socketSettings.ORVIBO_KEY;
|
|
||||||
let LOG_PACKET = socketSettings.LOG_PACKET;
|
|
||||||
|
|
||||||
let PLUG_INFO = Settings.plugInfo;
|
let PLUG_INFO = Settings.plugInfo;
|
||||||
|
|
||||||
const Orvibo = function(userSettings) {
|
const Orvibo = function(userSettings) {
|
||||||
// Allow user to pass in settings
|
// Allow user to pass in settings
|
||||||
if (userSettings != null) {
|
if (userSettings != null) {
|
||||||
socketSettings = userSettings;
|
ORVIBO_KEY = userSettings.ORVIBO_KEY;
|
||||||
ORVIBO_KEY = socketSettings.ORVIBO_KEY;
|
LOG_PACKET = userSettings.LOG_PACKET;
|
||||||
LOG_PACKET = socketSettings.LOG_PACKET;
|
PLUG_INFO = userSettings.plugInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ORVIBO_KEY === '') {
|
if (ORVIBO_KEY === '') {
|
||||||
@ -66,6 +62,7 @@ let helloHandler = (plugPacket, socket) => {
|
|||||||
encryptionKey: Utils.generateRandomTextValue(16),
|
encryptionKey: Utils.generateRandomTextValue(16),
|
||||||
id: Utils.generateRandomHexValue(32),
|
id: Utils.generateRandomHexValue(32),
|
||||||
modelId: plugPacket.getModelId(),
|
modelId: plugPacket.getModelId(),
|
||||||
|
orviboKey: plugPacket.getOrviboKey()
|
||||||
};
|
};
|
||||||
respondAndSetData(pkData, socket, PacketBuilder.helloPacket);
|
respondAndSetData(pkData, socket, PacketBuilder.helloPacket);
|
||||||
};
|
};
|
||||||
|
@ -11,10 +11,6 @@ let pkt = function(packetBuffer) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
pkt.prototype.logPacket = function(type) {
|
pkt.prototype.logPacket = function(type) {
|
||||||
let output = {
|
|
||||||
PacketId : this.packetIdText(),
|
|
||||||
Payload : this.payloadJSON
|
|
||||||
};
|
|
||||||
console.log(type, JSON.stringify(this.payloadJSON));
|
console.log(type, JSON.stringify(this.payloadJSON));
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -40,10 +36,11 @@ pkt.prototype.getModelId = function() {
|
|||||||
|
|
||||||
pkt.prototype.processPacket = function(key) {
|
pkt.prototype.processPacket = function(key) {
|
||||||
this.payloadJSON = this.decodeJSON(key);
|
this.payloadJSON = this.decodeJSON(key);
|
||||||
|
this.orviboKey = key;
|
||||||
};
|
};
|
||||||
|
|
||||||
pkt.prototype.getKeyValue = function() {
|
pkt.prototype.getOrviboKey = function() {
|
||||||
return this.payloadJSON.key;
|
return this.orviboKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
pkt.prototype.validCRC = function() {
|
pkt.prototype.validCRC = function() {
|
||||||
@ -54,10 +51,6 @@ pkt.prototype.packetTypeText = function() {
|
|||||||
return this.packetType.toString('ascii');
|
return this.packetType.toString('ascii');
|
||||||
};
|
};
|
||||||
|
|
||||||
pkt.prototype.packetIdText = function() {
|
|
||||||
return this.packetId.toString('ascii');
|
|
||||||
};
|
|
||||||
|
|
||||||
pkt.prototype.decodeJSON = function(key) {
|
pkt.prototype.decodeJSON = function(key) {
|
||||||
let decipher = crypto.createDecipheriv('aes-128-ecb', key, '');
|
let decipher = crypto.createDecipheriv('aes-128-ecb', key, '');
|
||||||
decipher.setAutoPadding(true);
|
decipher.setAutoPadding(true);
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
const crc32 = require('buffer-crc32');
|
const crc32 = require('buffer-crc32');
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
const Settings = require('./OrviboSettings');
|
|
||||||
|
|
||||||
const ORVIBO_KEY = Settings.ORVIBO_KEY;
|
|
||||||
|
|
||||||
let Packet = {
|
let Packet = {
|
||||||
encryptionKey : ORVIBO_KEY,
|
encryptionKey : '',
|
||||||
magic: new Buffer("6864", 'hex'),
|
magic: new Buffer("6864", 'hex'),
|
||||||
build: function () {
|
build: function () {
|
||||||
let packetId = new Buffer(this.id, 'ascii');
|
let packetId = new Buffer(this.id, 'ascii');
|
||||||
@ -24,7 +21,7 @@ let DKPacket = Object.assign({}, Packet, {
|
|||||||
packetType: new Buffer('dk', 'ascii'),
|
packetType: new Buffer('dk', 'ascii'),
|
||||||
});
|
});
|
||||||
|
|
||||||
let helloPacket = function({ serial, encryptionKey, id }) {
|
let helloPacket = function({ serial, encryptionKey, id, orviboKey }) {
|
||||||
let json = {
|
let json = {
|
||||||
cmd: 0,
|
cmd: 0,
|
||||||
status: 0,
|
status: 0,
|
||||||
@ -34,7 +31,8 @@ let helloPacket = function({ serial, encryptionKey, id }) {
|
|||||||
|
|
||||||
let pkt = Object.assign(Object.create(PKPacket), {
|
let pkt = Object.assign(Object.create(PKPacket), {
|
||||||
json: json,
|
json: json,
|
||||||
id: id
|
id: id,
|
||||||
|
encryptionKey: orviboKey,
|
||||||
});
|
});
|
||||||
|
|
||||||
return pkt.build();
|
return pkt.build();
|
||||||
@ -51,7 +49,7 @@ let handshakePacket = function({ serial, encryptionKey, id }) {
|
|||||||
let pkt = Object.assign(Object.create(DKPacket), {
|
let pkt = Object.assign(Object.create(DKPacket), {
|
||||||
json: json,
|
json: json,
|
||||||
id: id,
|
id: id,
|
||||||
encryptionKey, encryptionKey
|
encryptionKey: encryptionKey
|
||||||
});
|
});
|
||||||
|
|
||||||
return pkt.build();
|
return pkt.build();
|
||||||
@ -69,7 +67,7 @@ let heartbeatPacket = function({serial, uid, encryptionKey, id}) {
|
|||||||
let pkt = Object.assign(Object.create(DKPacket), {
|
let pkt = Object.assign(Object.create(DKPacket), {
|
||||||
json: json,
|
json: json,
|
||||||
id: id,
|
id: id,
|
||||||
encryptionKey, encryptionKey
|
encryptionKey,
|
||||||
});
|
});
|
||||||
|
|
||||||
return pkt.build();
|
return pkt.build();
|
||||||
@ -77,7 +75,7 @@ let heartbeatPacket = function({serial, uid, encryptionKey, id}) {
|
|||||||
|
|
||||||
let comfirmStatePacket = function({serial, uid, state, encryptionKey, id}) {
|
let comfirmStatePacket = function({serial, uid, state, encryptionKey, id}) {
|
||||||
|
|
||||||
var json = {
|
let json = {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
cmd: 42,
|
cmd: 42,
|
||||||
statusType: 0,
|
statusType: 0,
|
||||||
@ -95,7 +93,7 @@ let comfirmStatePacket = function({serial, uid, state, encryptionKey, id}) {
|
|||||||
let pkt = Object.assign(Object.create(DKPacket), {
|
let pkt = Object.assign(Object.create(DKPacket), {
|
||||||
json: json,
|
json: json,
|
||||||
id: id,
|
id: id,
|
||||||
encryptionKey, encryptionKey
|
encryptionKey,
|
||||||
});
|
});
|
||||||
|
|
||||||
return pkt.build();
|
return pkt.build();
|
||||||
@ -113,7 +111,7 @@ let defaultPacket = function({serial, uid, cmd, id, encryptionKey}) {
|
|||||||
let pkt = Object.assign(Object.create(DKPacket), {
|
let pkt = Object.assign(Object.create(DKPacket), {
|
||||||
json: json,
|
json: json,
|
||||||
id: id,
|
id: id,
|
||||||
encryptionKey, encryptionKey
|
encryptionKey,
|
||||||
});
|
});
|
||||||
|
|
||||||
return pkt.build();
|
return pkt.build();
|
||||||
@ -140,7 +138,7 @@ let updatePacket = function({ uid, state, serial, id, clientSessionId , deviceId
|
|||||||
let pkt = Object.assign(Object.create(DKPacket), {
|
let pkt = Object.assign(Object.create(DKPacket), {
|
||||||
json: json,
|
json: json,
|
||||||
id: id,
|
id: id,
|
||||||
encryptionKey, encryptionKey
|
encryptionKey,
|
||||||
});
|
});
|
||||||
|
|
||||||
return pkt.build();
|
return pkt.build();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user