projects
/
dyn-nsupdate.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
56695ce
)
Use local mode of nsupdate, then we don't even need a keyfile
author
Ralf Jung
<post@ralfj.de>
Sat, 10 Aug 2013 09:31:11 +0000
(11:31 +0200)
committer
Ralf Jung
<post@ralfj.de>
Sat, 10 Aug 2013 09:31:11 +0000
(11:31 +0200)
dyn-nsupdate.cpp
patch
|
blob
|
history
update.py
patch
|
blob
|
history
diff --git
a/dyn-nsupdate.cpp
b/dyn-nsupdate.cpp
index 7c39136e37c1321795ccf7718eb59b4538e874ae..25381cff5d09219af2cf9c5a5209a83534907eb8 100644
(file)
--- a/
dyn-nsupdate.cpp
+++ b/
dyn-nsupdate.cpp
@@
-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");
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");
/* 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 */
}
/* 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();
/* Launch nsupdate */
pid_t child_pid = fork();
@@
-82,18
+84,16
@@
int main(int argc, const char ** argv)
exit(1);
}
/* exec nsupdate */
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 */
/* 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], "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());
write(pipe_ends[1], "update add ");
write(pipe_ends[1], domain.c_str());
diff --git
a/update.py
b/update.py
index 8c87e3ad1acfad34d6e8e265cdcfcfc31af0eaf2..0642c40927e188fd439c7669fc5b05c48c8d6bbb 100644
(file)
--- a/
update.py
+++ b/
update.py
@@
-14,10
+14,10
@@
if "user" not in form or "password" not in form or "domain" not in form or "ip"
print "Mandatory argument missing: You must supply all of 'user', 'password', 'domain', 'ip'"
sys.exit()
print "Mandatory argument missing: You must supply all of 'user', 'password', 'domain', 'ip'"
sys.exit()
-ip = form["ip"].value
-domain = form["domain"].value
user = form["user"].value
password = form["password"].value
user = form["user"].value
password = form["password"].value
+domain = form["domain"].value
+ip = form["ip"].value
# run update program
p = subprocess.Popen(["/var/lib/named/dyn-nsupdate", user, password, domain, ip], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# run update program
p = subprocess.Popen(["/var/lib/named/dyn-nsupdate", user, password, domain, ip], stdout=subprocess.PIPE, stderr=subprocess.PIPE)