Use local mode of nsupdate, then we don't even need a keyfile
[dyn-nsupdate.git] / dyn-nsupdate.cpp
index 7c39136e37c1321795ccf7718eb59b4538e874ae..25381cff5d09219af2cf9c5a5209a83534907eb8 100644 (file)
@@ -50,7 +50,6 @@ int main(int argc, const char ** argv)
        property_tree::ptree config;
        property_tree::ini_parser::read_ini(CONFIG_FILE, config);
        std::string nsupdate = config.get<std::string>("nsupdate");
-       std::string keyfile = config.get<std::string>("key");
        
        /* Check username, password, domain */
        optional<std::string> correct_password = config.get_optional<std::string>(user+".password");
@@ -64,8 +63,11 @@ int main(int argc, const char ** argv)
        }
        
        /* preapre the pipe */
-       int pipe_ends[] = {0,0};
-       pipe(pipe_ends);
+       int pipe_ends[2];
+       if (pipe(pipe_ends) < 0) {
+               std::cerr << "Error opening pipe." << std::endl;
+               exit(1);
+       }
 
        /* Launch nsupdate */
        pid_t child_pid = fork();
@@ -82,18 +84,16 @@ int main(int argc, const char ** argv)
                        exit(1);
                }
                /* exec nsupdate */
-               execl(nsupdate.c_str(), nsupdate.c_str(), "-k", keyfile.c_str(), (char *)NULL);
+               execl(nsupdate.c_str(), nsupdate.c_str(), "-l", (char *)NULL);
                /* There was an error */
                std::cerr << "There was an error executing nsupdate." << std::endl;
                exit(1);
        }
        
        /* Send it the command */
-       write(pipe_ends[1], "server localhost\n");
-       
        write(pipe_ends[1], "update delete ");
        write(pipe_ends[1], domain.c_str());
-       write(pipe_ends[1], ".\n");
+       write(pipe_ends[1], ". A\n");
        
        write(pipe_ends[1], "update add ");
        write(pipe_ends[1], domain.c_str());