Basic node management in admin panel.

This commit is contained in:
baldo 2016-06-07 00:21:26 +02:00
parent 6cab6371d1
commit d5c69fa78f
10 changed files with 180 additions and 38 deletions

View file

@ -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);
});
}
};
});

View file

@ -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);
}
};
});

View file

@ -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);
},

View file

@ -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;
}