Skip to content

Commit

Permalink
Network: Backend now working
Browse files Browse the repository at this point in the history
  • Loading branch information
stephendade committed Nov 1, 2019
1 parent 870adb2 commit 6debb26
Show file tree
Hide file tree
Showing 5 changed files with 508 additions and 59 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"dependencies": {
"bootstrap": "^4.3.1",
"deasync": "^0.1.15",
"express-validator": "^6.2.0",
"install": "^0.13.0",
"npm": "^6.10.1",
"prop-types": "^15.7.2",
Expand Down
18 changes: 8 additions & 10 deletions project.geany
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,14 @@ long_line_behaviour=1
long_line_column=72

[files]
current_page=7
FILE_NAME_0=163;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fsrc%2FAppRouter.js;0;4
FILE_NAME_1=197;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fsrc%2Fnetworkconfig.js;0;4
FILE_NAME_2=3047;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fsrc%2Fserialports.js;0;4
FILE_NAME_3=810;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fsrc%2Fanalog.js;0;4
FILE_NAME_4=896;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fserver%2Findex.js;0;4
FILE_NAME_5=565;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fserver%2FanalogPi.js;0;4
FILE_NAME_6=41;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fserver%2FnetworkManager.js;0;4
FILE_NAME_7=2548;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fserver%2FserialManager.js;0;4
FILE_NAME_8=1057;JSON;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fpackage.json;0;4
current_page=0
FILE_NAME_0=2648;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fserver%2Findex.js;0;4
FILE_NAME_1=14472;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fsrc%2Fnetworkconfig.js;0;4
FILE_NAME_2=1012;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fserver%2FnetworkManager.js;0;4
FILE_NAME_3=0;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fserver%2FanalogPi.js;0;4
FILE_NAME_4=191;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fsrc%2Fabout.js;0;4
FILE_NAME_5=338;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fsrc%2Findex.js;0;4
FILE_NAME_6=0;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fstephen%2FDocuments%2FUAV_code%2FRpanion-server%2Fsrc%2Fhome.js;0;4

[build-menu]
EX_00_LB=_Execute
Expand Down
144 changes: 134 additions & 10 deletions server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const app = express();
const http = require("http").Server(app)

var io = require('socket.io')(http);
const { check, validationResult } = require('express-validator');

const sManager = new serialManager();

Expand Down Expand Up @@ -65,13 +66,17 @@ app.get('/api/networkconnections', (req, res) => {
});

// Route that receives a POST request
app.post('/api/portmodify', function (req, res) {
console.log('Got post');
app.post('/api/portmodify', [], function (req, res) {
sManager.updateLinkSettings(req.body.user);
})

//Get details of a network connection by name
app.post('/api/networkIP', (req, res) => {
//Get details of a network connection by connection ID
app.post('/api/networkIP', [check('conName').isUUID()], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
networkManager.getConnectionDetails(req.body.conName, (err, conDetails) => {
res.setHeader('Content-Type', 'application/json');
var ret = {netConnectionDetails: conDetails};
Expand All @@ -80,12 +85,131 @@ app.post('/api/networkIP', (req, res) => {
});
});

//User wants to add/edit/delete network
app.post('/api/networkmodify', (req, res) => {
console.log('Editing network:');
console.log(req.body.conAction);
console.log(req.body.conName);
console.log(req.body.conSettings);
//user wants to activate network
app.post('/api/networkactivate', [check('conName').isUUID()], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req);
if (!errors.isEmpty()) {
res.setHeader('Content-Type', 'application/json');
var ret = {error: "Bad input - " + errors.array()[0].param};
res.send(JSON.stringify(ret));
}
else {
console.log('Activating network ' + req.body.conName);
networkManager.activateConnection(req.body.conName, (err) => {
if (err) {
res.setHeader('Content-Type', 'application/json');
var ret = {error: err};
res.send(JSON.stringify(ret));
}
else {
res.setHeader('Content-Type', 'application/json');
var ret = {error: null, action: "NetworkActivateOK"};
res.send(JSON.stringify(ret));
}
});
}
});

//user wants to delete network
app.post('/api/networkdelete', [check('conName').isUUID()], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req);
if (!errors.isEmpty()) {
res.setHeader('Content-Type', 'application/json');
var ret = {error: "Bad input - " + errors.array()[0].param};
res.send(JSON.stringify(ret));
}
else {
console.log('Deleting network ' + req.body.conName);
networkManager.deleteConnection(req.body.conName, (err) => {
if (err) {
res.setHeader('Content-Type', 'application/json');
var ret = {error: err};
res.send(JSON.stringify(ret));
}
else {
res.setHeader('Content-Type', 'application/json');
var ret = {error: null, action: "NetworkDeleteOK"};
res.send(JSON.stringify(ret));
}
});
}
});

//user wants to edit network
app.post('/api/networkedit', [check('conName').isUUID(),
check('conSettings.ipaddresstype.value').isIn(['auto', 'manual', 'shared']),
check('conSettings.ipaddress.value').optional().isIP(),
check('conSettings.subnet.value').optional().isIP(),
check('conSettings.wpaType.value').optional().isIn(['wpa-none', 'wpa-psk']),
check('conSettings.password.value').optional().escape(),
check('conSettings.ssid.value').optional().escape(),
check('conSettings.band.value').optional().isIn(['a', 'bg']),
check('conSettings.mode.value').optional().isIn(['infrastructure', 'ap']),
],
(req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req);
if (!errors.isEmpty()) {
res.setHeader('Content-Type', 'application/json');
var ret = {error: "Bad input - " + errors.array()[0].param};
res.send(JSON.stringify(ret));
}
else {
console.log('Editing network ' + req.body.conName);
networkManager.editConnection(req.body.conName, req.body.conSettings, (err) => {
if (err) {
res.setHeader('Content-Type', 'application/json');
var ret = {error: err};
res.send(JSON.stringify(ret));
}
else {
res.setHeader('Content-Type', 'application/json');
var ret = {error: null, action: "NetworkEditOK"};
res.send(JSON.stringify(ret));
}
});
}
});

//User wants to add network
app.post('/api/networkadd', [check('conSettings.ipaddresstype.value').isIn(['auto', 'manual', 'shared']),
check('conSettings.ipaddress.value').optional().isIP(),
check('conSettings.subnet.value').optional().isIP(),
check('conSettings.wpaType.value').optional().isIn(['wpa-none', 'wpa-psk']),
check('conSettings.password.value').optional().escape(),
check('conSettings.ssid.value').optional().escape(),
check('conSettings.band.value').optional().isIn(['a', 'bg']),
check('conSettings.mode.value').optional().isIn(['infrastructure', 'ap']),
check('conName').escape(),
check('conType').escape(),
check('conAdapter').escape()
],
(req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req);
if (!errors.isEmpty()) {
res.setHeader('Content-Type', 'application/json');
var ret = {error: "Bad input - " + errors.array()[0].param};
res.send(JSON.stringify(ret));
}
else {
console.log('Adding network ' + req.body.conName);
networkManager.addConnection(req.body.conName, req.body.conType, req.body.conAdapter, req.body.conSettings, (err) => {
if (err) {
res.setHeader('Content-Type', 'application/json');
var ret = {error: err};
res.send(JSON.stringify(ret));
}
else {
res.setHeader('Content-Type', 'application/json');
var ret = {error: null, action: "NetworkAddOK"};
res.send(JSON.stringify(ret));
}
});
}
console.log(req.body);
});

http.listen(3001, () =>
Expand Down
Loading

0 comments on commit 6debb26

Please sign in to comment.