1 #include "wvautoconf.h"
11 #include <sys/types.h>
20 #include "uniconfdaemon.h"
21 #include "uniclientconn.h"
22 #include "unisecuregen.h"
23 #include "unipermgen.h"
24 #include "uniconfroot.h"
26 #include "wvfileutils.h"
27 #include "wvstreamsdaemon.h"
40 #pragma comment(linker, "/include:?UniRegistryGenMoniker@@3V?$WvMoniker@VIUniConfGen@@@@A")
41 #pragma comment(linker, "/include:?UniPStoreGenMoniker@@3V?$WvMoniker@VIUniConfGen@@@@A")
42 #pragma comment(linker, "/include:?UniIniGenMoniker@@3V?$WvMoniker@VIUniConfGen@@@@A")
45 #define DEFAULT_CONFIG_FILE "ini:uniconf.ini"
48 static map<WvString, shared_ptr<IUniConfGen> > namedgens;
53 map<WvString, shared_ptr<IUniConfGen> >::iterator it = namedgens.find(s);
54 shared_ptr<IUniConfGen> gen;
56 if (it != namedgens.end())
73 time_t commit_interval;
85 ptr = strchr(name.
edit(),
'=');
93 namedgens[
name] = shared_ptr<IUniConfGen>(
94 wvcreate<IUniConfGen>(moniker),
107 s->
alarm(commit_interval * 1000);
114 WvStringList::Iter i(_extra_args);
115 for (i.rewind(); i.next(); )
118 char *cptr = strchr(path.
edit(),
'=');
130 log(
"Mounting '%s' on '%s': ", moniker, path);
132 if (gen && gen->
isok())
141 permgen = !!permmon ? wvcreate<IUniConfGen>(permmon) : NULL;
146 if (lmonikers.isempty())
148 log(WvLog::Critical,
"Can't start: no listeners given!\n");
153 WvStringList::Iter i(lmonikers);
154 for (i.rewind(); i.next(); )
158 commit_stream->
setcallback(wv::bind(&UniConfd::commit_stream_cb,
this,
160 commit_stream->
alarm(commit_interval * 1000);
171 wv::bind(&UniConfd::startup,
this)),
173 commit_interval(5*60),
178 "Specify the .pid file to use (only applies with --daemonize)",
"filename",
181 "Require authentication on incoming connections", needauth);
183 "Check all accesses against perms moniker",
"moniker",
186 "Listen on the given socket (eg. tcp:4111, ssl:tcp:4112)",
187 "lmoniker", lmonikers);
189 "creates a \"named\" moniker 'name' from 'moniker'",
191 wv::bind(&UniConfd::namedgen_cb,
this, _1, _2), NULL);
199 int main(
int argc,
char **argv)
203 return uniconfd.
run(argc, argv);