pimatic
Version:
A home automation server and framework for the Raspberry PI running on node.js
35 lines (28 loc) • 1.06 kB
JavaScript
// ******************************************************************
// Format keyword
// ******************************************************************
var Errors = require('../../../../errors.js')
, core = require('../../core.js')
;
module.exports = function(config) {
var errors = [];
var valid = config.inst.match(core.FORMAT_REGEXPS.hostname);
if (valid) {
// per RFC 1035 “Preferred name syntax” each label must be no
// more than 63 characters.
var labels = config.inst.split('.');
for (var index = 0, len = labels.length; valid && index !== len; ++index) {
if (labels[index].length > 63) { valid = false; }
}
// the final label must not start with a digit
if (labels[labels.length - 1].match(/^[0-9]/)) {
valid = false;
}
}
if (!valid) {
var desc = 'not a valid hostname per RFC 1034 Preferred Name Syntax';
errors.push(new Errors.FormatValidationError(config.resolutionScope,
config.instanceContext, 'format', 'hostname', config.inst, desc));
}
return errors;
};