Basic node management in admin panel.
This commit is contained in:
parent
6cab6371d1
commit
d5c69fa78f
10 changed files with 180 additions and 38 deletions
server
|
@ -92,6 +92,18 @@ angular.module('ffffng').factory('NodeResource', function (
|
|||
}
|
||||
return Resources.success(res, node);
|
||||
});
|
||||
},
|
||||
|
||||
getAll: function (req, res) {
|
||||
// TODO: Paging + Sort + Filter
|
||||
|
||||
return NodeService.getAllNodes(function (err, nodes) {
|
||||
if (err) {
|
||||
return Resources.error(res, err);
|
||||
}
|
||||
|
||||
return Resources.success(res, nodes);
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
|
@ -20,6 +20,11 @@ angular.module('ffffng').factory('Router', function (
|
|||
app.put('/internal/api/tasks/run/:id', TaskResource.run);
|
||||
app.put('/internal/api/tasks/enable/:id', TaskResource.enable);
|
||||
app.put('/internal/api/tasks/disable/:id', TaskResource.disable);
|
||||
|
||||
app.put('/internal/api/nodes/:token', NodeResource.update);
|
||||
app.delete('/internal/api/nodes/:token', NodeResource.delete);
|
||||
app.get('/internal/api/nodes', NodeResource.getAll);
|
||||
app.get('/internal/api/nodes/:token', NodeResource.get);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
|
@ -4,6 +4,7 @@ angular.module('ffffng')
|
|||
.service('NodeService', function (
|
||||
config,
|
||||
_,
|
||||
async,
|
||||
crypto,
|
||||
fs,
|
||||
glob,
|
||||
|
@ -13,6 +14,8 @@ angular.module('ffffng')
|
|||
ErrorTypes,
|
||||
UrlBuilder
|
||||
) {
|
||||
var MAX_PARALLEL_NODES_PARSING = 10;
|
||||
|
||||
var linePrefixes = {
|
||||
hostname: '# Knotenname: ',
|
||||
nickname: '# Ansprechpartner: ',
|
||||
|
@ -366,6 +369,24 @@ angular.module('ffffng')
|
|||
deleteNodeFile(token, callback);
|
||||
},
|
||||
|
||||
getAllNodes: function (callback) {
|
||||
var files = findNodeFiles({});
|
||||
|
||||
async.mapLimit(
|
||||
files,
|
||||
MAX_PARALLEL_NODES_PARSING,
|
||||
parseNodeFile,
|
||||
function (err, nodes) {
|
||||
if (err) {
|
||||
Logger.tag('nodes').error('Error getting all nodes:', error);
|
||||
return callback({data: 'Internal error.', type: ErrorTypes.internalError});
|
||||
}
|
||||
|
||||
return callback(null, nodes);
|
||||
}
|
||||
);
|
||||
},
|
||||
|
||||
findNodeDataByMac: function (mac, callback) {
|
||||
return findNodeDataByFilePattern({ mac: mac }, callback);
|
||||
},
|
||||
|
|
|
@ -6,6 +6,10 @@ angular.module('ffffng').factory('Validator', function (_) {
|
|||
return acceptUndefined || constraint.optional;
|
||||
}
|
||||
|
||||
if (constraint.type === 'boolean') {
|
||||
return _.isBoolean(value);
|
||||
}
|
||||
|
||||
if (!_.isString(value)) {
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue