network modes

This commit is contained in:
Sukhamjot Singh 2022-09-17 02:01:17 +05:30
parent 994e6c4f52
commit ba7d2ffa0f
4 changed files with 152 additions and 16 deletions

View File

@ -5,21 +5,148 @@ const util = require('config/config_util'); // for future use
/* eslint-disable no-unused-vars */
const networkModes = [
'Public: DHT & Discovery',
'Private: Discovery only',
'Inverted: DHT only',
'Dark Net: None',
];
const SetNwMode = () => {
let vs_disc = 0;
let vs_dht = 0;
let selectedMode;
let sslId;
let details;
return {
oninit: async () => {
// const res = await rs.rsJsonApiRequest('/rsPeers/getOwnId');
console.log(util.getSslId());
const res = await rs.rsJsonApiRequest('/rsaccounts/getCurrentAccountId');
if (res.body.retval) {
sslId = res.body.id;
}
if (sslId) {
const res2 = await rs.rsJsonApiRequest('/rsPeers/getPeerDetails', {
sslId: sslId,
});
if (res2.body.retval) {
details = res2.body.det;
}
}
if (details) {
if (
details.vs_dht === util.RS_VS_DHT_FULL &&
details.vs_disc === util.RS_VS_DISC_FULL
) {
selectedMode = networkModes[0];
}
else if (
details.vs_dht === util.RS_VS_DHT_OFF &&
details.vs_disc === util.RS_VS_DISC_FULL
) {
selectedMode = networkModes[1];
}
else if (
details.vs_dht === util.RS_VS_DHT_FULL &&
details.vs_disc === util.RS_VS_DISC_OFF
) {
selectedMode = networkModes[2];
}
else if (
details.vs_dht === util.RS_VS_DHT_OFF &&
details.vs_disc === util.RS_VS_DISC_OFF
) {
selectedMode = networkModes[3];
}
}
},
view: () => [
view: (vnode) => [
m('p', 'Network mode:'),
m(
'select',
{
value: selectedMode,
onchange: async (e) => {
selectedMode = networkModes[e.target.selectedIndex];
if (e.target.selectedIndex === 0) {
vs_disc = util.RS_VS_DISC_FULL;
vs_dht = util.RS_VS_DHT_FULL;
// Public: DHT & Discovery
} else if (e.target.selectedIndex === 1) {
vs_disc = util.RS_VS_DISC_FULL;
vs_dht = util.RS_VS_DHT_OFF;
// Private: Discovery only
} else if (e.target.selectedIndex === 2) {
vs_disc = util.RS_VS_DISC_OFF;
vs_dht = util.RS_VS_DHT_FULL;
// Inverted: DHT only
} else if (e.target.selectedIndex === 3) {
vs_disc = util.RS_VS_DISC_OFF;
vs_dht = util.RS_VS_DHT_OFF;
// Dark Net: None
}
if (sslId) {
const res2 = await rs.rsJsonApiRequest('/rsPeers/getPeerDetails', {
sslId: sslId,
});
if (res2.body.retval) {
details = res2.body.det;
}
}
if (
details &&
(vs_dht != details.vs_dht || vs_disc != details.vs_disc) &&
sslId !== undefined
) {
const res = await rs.rsJsonApiRequest('/rsPeers/setVisState', {
sslId: sslId,
vsDisc: vs_disc,
vsDht: vs_dht,
});
}
},
},
[networkModes.map((o) => m('option', { value: o }, o))]
),
],
};
};
const NATmodes = ['Automatic (UPnP)', 'FireWalled', 'Manually Forwarded Port'];
const SetNAT = () => {
let sslId;
let selectedMode = NATmodes[0];
return {
oninit: async () => {
const res = await rs.rsJsonApiRequest('/rsIdentity/GetOwnSignedIds');
if (res.body.retval) {
sslId = res.body.ids[0];
}
},
view: () => [
m('p', 'NAT:'),
m(
'select',
{
value: selectedMode,
onchange: (e) => {
selectedMode = NATmodes[e.target.selectedIndex];
// console.log(selectedMode, e.target.selectedIndex);
if (e.target.selectedIndex === 0) {
// Automatic (UPnP)
} else if (e.target.selectedIndex === 1) {
// FireWalled
} else if (e.target.selectedIndex === 2) {
// Manually Forwarded Port
}
},
},
[NATmodes.map((o) => m('option', { value: o }, o))]
),
],
};
};
const SetLimits = () => {
let dlim = undefined;
let ulim = undefined;
@ -109,17 +236,15 @@ Low traffic: 10% standard traffic and TODO: pause all file transfers\n`
};
const Component = () => {
let details;
let sslId;
return {
view: () =>
m('.widget.widget-half', [
m('h3', 'Network Configuration'),
m('hr'),
m('.grid-2col', [
m(SetLimits),
m(SetOpMode),
m(SetNwMode),
]),
m('.grid-2col', [m(SetLimits), m(SetOpMode), m(SetNwMode), m(SetNAT)]),
]),
};
};

View File

@ -1,17 +1,25 @@
const m = require('mithril');
const rs = require('rswebui');
/* Visibility parameter for discovery */
const RS_VS_DISC_OFF = 0x0000;
const RS_VS_DISC_MINIMAL = 0x0001;
const RS_VS_DISC_FULL = 0x0002;
const RS_VS_DHT_OFF = 0x0000;
const RS_VS_DHT_PASSIVE = 0x0001;
const RS_VS_DHT_FULL = 0x0002;
function tooltip(text) {
return m('.tooltip', [m('i.fas.fa-info-circle'), m('.tooltiptext', text)]);
}
async function getSslId() {
let id = '';
await rs.rsJsonApiRequest('/rsIdentity/GetOwnSignedIds', {}, (data) => (id = data.ids[0]));
return id;
}
module.exports = {
tooltip,
getSslId,
RS_VS_DHT_FULL,
RS_VS_DHT_OFF,
RS_VS_DISC_FULL,
RS_VS_DHT_PASSIVE,
RS_VS_DISC_OFF,
RS_VS_DISC_MINIMAL
};

View File

@ -17,6 +17,7 @@ const FT_STATE_CHECKING_HASH = 0x0007;
const RS_FILE_REQ_ANONYMOUS_ROUTING = 0x00000040;
const RS_FILE_HINTS_REMOTE = 0x00000008;
const RS_FILE_HINTS_LOCAL = 0x00000004;
function makeFriendlyUnit(bytes) {
let cnt = bytes;
@ -329,6 +330,7 @@ module.exports = {
FT_STATE_CHECKING_HASH,
RS_FILE_REQ_ANONYMOUS_ROUTING,
RS_FILE_HINTS_REMOTE,
RS_FILE_HINTS_LOCAL,
makeFriendlyUnit,
File,
SearchBar,

View File

@ -25,6 +25,7 @@ function displayfiles() {
parStruct.details.children.map(async (child) => {
const res = await rs.rsJsonApiRequest('/rsfiles/requestDirDetails', {
handle: child.handle.xint64,
flags: util.RS_FILE_HINTS_LOCAL,
});
childrenList.push(res.body.details);
loaded = true;