]> granicus.if.org Git - pdns/commitdiff
fix up json escaping for domains
authorBert Hubert <bert.hubert@netherlabs.nl>
Mon, 19 Nov 2012 13:18:34 +0000 (13:18 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Mon, 19 Nov 2012 13:18:34 +0000 (13:18 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2905 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/ws.cc

index 87b61a38ba06178c21e2adfe7ae96f2ea8d541eb..9220e46bc3faa549989cd17cf4af4d935478db31 100644 (file)
@@ -329,7 +329,10 @@ string StatWebServer::jsonstat(const map<string,string> &varmap, void *ptr, bool
     UeberBackend B;
     SOAData sd;
     sd.db= (DNSBackend*)-1;
-    B.getSOA(ourvarmap["zone"], sd);
+    if(!B.getSOA(ourvarmap["zone"], sd) || !sd.db) {
+      cerr<<"Could not find domain '"<<ourvarmap["zone"]<<"'\n";
+      return "";
+    }
     sd.db->list(ourvarmap["zone"], sd.domain_id);
     DNSResourceRecord rr;
     
@@ -359,18 +362,18 @@ string StatWebServer::jsonstat(const map<string,string> &varmap, void *ptr, bool
     UeberBackend B;
     vector<DomainInfo> domains;
     B.getAllDomains(&domains);
-    ret += "{ domains: [ ";
+    ret += "{ \"domains\": [ ";
     bool first=true;
     BOOST_FOREACH(DomainInfo& di, domains) {
       if(!first) ret+=", ";
       first=false;
       
-      ret += "{ name: \"";
-      ret += di.zone +"\", kind: \""+ kinds[di.kind]+"\", masters: \"";
+      ret += "{ \"name\": \"";
+      ret += di.zone +"\", \"kind\": \""+ kinds[di.kind]+"\", \"masters\": \"";
       BOOST_FOREACH(const string& master, di.masters) {
         ret += master+ " ";
       }
-      ret+="\", serial: "+lexical_cast<string>(di.serial)+", notified_serial: "+lexical_cast<string>(di.notified_serial)+", last_check: "+lexical_cast<string>(di.last_check);
+      ret+="\", \"serial\": "+lexical_cast<string>(di.serial)+", \"notified_serial\": "+lexical_cast<string>(di.notified_serial)+", \"last_check\": "+lexical_cast<string>(di.last_check);
       ret+=" }";
     }
     ret+= "]}";