1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-24 04:04:31 +00:00

First rev of WebRTC test migration

This commit is contained in:
Bryan Roe
2022-07-06 17:37:54 -07:00
parent 8a2a11cb97
commit a616d650d8

View File

@@ -141,6 +141,9 @@ var promises =
digest: null,
digest_auth: null,
digest_authint: null,
webrtc_test: null,
webrtc_offer: null,
webrtc_hash: null
};
function generateRandomNumber(lower, upper)
@@ -174,6 +177,12 @@ function resetPromises()
}
}
if (process.argv.getParameter('Debug') != null)
{
console.enableWebLog(parseInt(process.argv.getParameter('Debug')));
process.stdout.write('WebDebug Listening on port: ' + process.argv.getParameter('Debug') + '\n');
}
process.stdout.write('Generating Certificate...');
var cert = require('tls').generateCertificate('test', { certType: 2, noUsages: 1 });
var server = require('https').createServer({ pfx: cert, passphrase: 'test' });
@@ -796,6 +805,9 @@ server.on('upgrade', function (msg, sck, head)
{
process.stdout.write('\r => QOP = auth-int....................................[OK] \n');
}).then(function ()
{
return (WebRTC_Test());
}).then(function ()
{
process.stdout.write('\nTesting Complete\n\n');
endTest();
@@ -808,6 +820,60 @@ server.on('upgrade', function (msg, sck, head)
};
});
function WebRTC_Test()
{
process.stdout.write(' WebRTC Test\n');
process.stdout.write(' => Recieved Initial Offer............................[WAITING]');
sendEval("var clientConnection = require('ILibWebRTC').createConnection();")
sendEval("var hasher = require('SHA384Stream').create();");
sendEval("clientConnection.on('dataChannel', function (rtcchannel) { var b = Buffer.alloc(6665535); b.randomFill(); selfTestResponse('webrtc_hash', true, hasher.syncHash(b).toString('hex')); rtcchannel.write(b); });");
sendEval("var offer = clientConnection.generateOffer(); var ob = Buffer.from(offer); selfTestResponse('webrtc_offer', true, ob.toString('base64'));");
promises.webrtc_test.serverConnection = require('ILibWebRTC').createConnection();
promises.webrtc_offer.then(function (offer)
{
process.stdout.write('\r => Recieved Initial Offer............................[OK] \n');
//process.stdout.write(JSON.stringify(offer, null, 1));
process.stdout.write(' => Counter-Offer Set.................................[OK]\n');
process.stdout.write(' => Peer Connection Established.......................[WAITING]');
var offer = Buffer.from(offer.reason, 'base64').toString();
var counter = promises.webrtc_test.serverConnection.setOffer(offer);
var b = Buffer.from(counter).toString('base64');
sendEval("try{clientConnection.setOffer(Buffer.from('" + b + "', 'base64').toString());} catch(z) { sendConsoleText(JSON.stringify(z)); }");
});
promises.webrtc_test.serverConnection.on('connected', function ()
{
process.stdout.write('\r => Peer Connection Established.......................[OK] \n');
process.stdout.write(' => Data Channel Creation.............................[WAITING]');
this.dc = this.createDataChannel('Test Data Channel');
this.dc.on('data', function (b)
{
var h = require('SHA384Stream').create();
var dataHash = h.syncHash(b).toString('hex');
promises.webrtc_hash.then(function (j)
{
process.stdout.write('\r => Data Channel Creation.............................[OK] \n');
if (j.reason == dataHash)
{
process.stdout.write(' => Data Fragmentation Test...........................[OK]');
promises.webrtc_test.resolve();
}
else
{
promises.webrtc_test.reject('WebRTC Data Channel received corrupt data (' + b.length + ' bytes');
}
});
});
});
return (promises.webrtc_test);
}
function createTunnel(rights, consent)
{
var ret = new promise(promise.defaultInit);
@@ -1003,7 +1069,7 @@ if (process.argv.getParameter('NoInstall') == null)
[
{
newName: (process.platform == 'win32' ? 'MeshAgent.msh' : 'meshagent.msh'),
_buffer: 'logUpdate=1\nMeshID=0x43FEF862BF941B2BBE5964CC7CA02573BBFB94D5A717C5AA3FC103558347D0BE26840ACBD30FFF981F7F5A2083D0DABC\nMeshServer=wss://127.0.0.1:' + server.address().port + '/agent.ashx\nmeshServiceName=TestAgent\nServerID=' + loadedCert.getKeyHash().toString('hex')
_buffer: 'enableILibRemoteLogging=5556\nlogUpdate=1\nMeshID=0x43FEF862BF941B2BBE5964CC7CA02573BBFB94D5A717C5AA3FC103558347D0BE26840ACBD30FFF981F7F5A2083D0DABC\nMeshServer=wss://127.0.0.1:' + server.address().port + '/agent.ashx\nmeshServiceName=TestAgent\nServerID=' + loadedCert.getKeyHash().toString('hex')
}
],
binary: updateSource,