if (name.find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_/.-") != std::string::npos)
throw ApiException("Name '"+name+"' contains unsupported characters");
}
+
+void apiCheckQNameAllowedCharacters(const string& qname) {
+ if (qname.compare(0, 2, "*.") == 0) apiCheckNameAllowedCharacters(qname.substr(2));
+ else apiCheckNameAllowedCharacters(qname);
+}
DNSName apiZoneIdToName(const string& id);
string apiZoneNameToId(const DNSName& name);
void apiCheckNameAllowedCharacters(const string& name);
+void apiCheckQNameAllowedCharacters(const string& name);
DNSName apiNameToDNSName(const string& name);
// To be provided by product code.
for(auto& rr : new_records) {
if (!rr.qname.isPartOf(zonename) && rr.qname != zonename)
throw ApiException("RRset "+rr.qname.toString()+" IN "+rr.qtype.getName()+": Name is out of zone");
- apiCheckNameAllowedCharacters(rr.qname.toString());
+ apiCheckQNameAllowedCharacters(rr.qname.toString());
if (rr.qtype.getCode() == QType::SOA && rr.qname==zonename) {
have_soa = true;
string changetype;
QType qtype;
DNSName qname = apiNameToDNSName(stringFromJson(rrset, "name"));
- apiCheckNameAllowedCharacters(qname.toString());
+ apiCheckQNameAllowedCharacters(qname.toString());
qtype = stringFromJson(rrset, "type");
changetype = toUpper(stringFromJson(rrset, "changetype"));