diff --git a/src/dns/namecheap.js b/src/dns/namecheap.js index d8c30d29e..650f9ac20 100644 --- a/src/dns/namecheap.js +++ b/src/dns/namecheap.js @@ -71,7 +71,12 @@ function getInternal(dnsConfig, zoneName, subdomain, type, callback) { if (error) return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, error)); var tmp = result.ApiResponse; - if (tmp['$'].Status !== 'OK') return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, safe.query(tmp, 'Errors[0].Error[0]._', 'Invalid response'))); + if (tmp['$'].Status !== 'OK') { + var errorMessage = safe.query(tmp, 'Errors[0].Error[0]._', 'Invalid response'); + if (errorMessage === 'API Key is invalid or API access has not been enabled') return callback(new DomainsError(DomainsError.ACCESS_DENIED, errorMessage)); + + return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, errorMessage)); + } if (!tmp.CommandResponse[0]) return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, 'Invalid response')); if (!tmp.CommandResponse[0].DomainDNSGetHostsResult[0]) return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, 'Invalid response')); @@ -120,7 +125,12 @@ function setInternal(dnsConfig, zoneName, hosts, callback) { if (error) return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, error)); var tmp = result.ApiResponse; - if (tmp['$'].Status !== 'OK') return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, safe.query(tmp, 'Errors[0].Error[0]._', 'Invalid response'))); + if (tmp['$'].Status !== 'OK') { + var errorMessage = safe.query(tmp, 'Errors[0].Error[0]._', 'Invalid response'); + if (errorMessage === 'API Key is invalid or API access has not been enabled') return callback(new DomainsError(DomainsError.ACCESS_DENIED, errorMessage)); + + return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, errorMessage)); + } if (!tmp.CommandResponse[0]) return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, 'Invalid response')); if (!tmp.CommandResponse[0].DomainDNSSetHostsResult[0]) return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, 'Invalid response')); if (tmp.CommandResponse[0].DomainDNSSetHostsResult[0]['$'].IsSuccess !== 'true') return callback(new DomainsError(DomainsError.EXTERNAL_ERROR, 'Invalid response'));