mirror of
https://github.com/RetroShare/RSNewWebUI.git
synced 2026-09-14 11:05:47 +05:00
network modes
This commit is contained in:
parent
994e6c4f52
commit
ba7d2ffa0f
@ -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)]),
|
||||
]),
|
||||
};
|
||||
};
|
||||
|
||||
@ -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
|
||||
};
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user