1 #include "wvdbusserver.h"
2 #include "wvstreamsdaemon.h"
3 #include "wvautoconf.h"
5 #include "wvsslstream.h"
7 #include "uniconfroot.h"
10 static WvX509Mgr
*cert
= NULL
;
13 class WvDBusDaemon
: public WvStreamsDaemon
17 WvStreamsDaemon("WvDBusDaemon", WVPACKAGE_VERSION
,
18 wv::bind(&WvDBusDaemon::cb
, this)),
19 log("WvDBusDaemon", WvLog::Debug
), configfile("wvdbus.ini")
21 args
.add_option('c', "config", "Specify path to configuration file",
22 "FILENAME", configfile
);
23 args
.add_required_arg("MONIKER", true);
26 virtual ~WvDBusDaemon()
33 log("WvDBusDaemon starting.\n");
34 conf
.mount(WvString("ini:%s", configfile
));
36 if (!cert
&& conf
["cert"].exists() && conf
["privrsa"].exists())
39 cert
->decode(WvX509::CertPEM
, *conf
["cert"]);
40 cert
->decode(WvRSAKey::RsaPEM
, *conf
["privrsa"]);
44 log("Certificate found in ini file, but failed to load!\n");
48 log("Certificate found in ini file, and loaded!\n");
51 WvDBusServer
*s
= new WvDBusServer
;
52 WvStringList::Iter
i(extra_args());
53 for (i
.rewind(); i
.next(); )
55 add_die_stream(s
, true, "DBus Server");
65 static IWvStream
*dbus_serv_creator(WvStringParm s
, IObject
*obj
)
67 return new WvSSLStream(IWvStream::create(s
, obj
), cert
, 0, true);
70 static WvMoniker
<IWvStream
> sreg("sslserv", dbus_serv_creator
, true);
73 int main(int argc
, char *argv
[])
75 return WvDBusDaemon().run(argc
, argv
);