WvStreams
uniconfpamconn.cc
1/*
2 * Worldvisions Weaver Software:
3 * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4 *
5 * Manages a UniConf daemon session which is authenticated through PAM.
6 */
7#include "uniconfpamconn.h"
8#include "unisecuregen.h"
9#include "unipermgen.h"
10#include "uniunwrapgen.h"
11#include "uniconfdaemonconn.h"
12#include "uninullgen.h"
13#include "wvpam.h"
14#include "wvaddr.h"
15
16UniConfPamConn::UniConfPamConn(WvStream *_s, const UniConf &_root,
17 UniPermGen *perms)
18 : WvStreamClone(NULL)
19{
20 WvPam pam("uniconfd");
21 WvString rhost(*(WvIPAddr *)_s->src());
22 if (pam.authenticate(rhost, "", WvString::null))
23 {
24 UniSecureGen *sec = new UniSecureGen(new UniUnwrapGen(_root), perms);
25
26 // get the user and groups from PAM
27 WvString user = pam.getuser();
28 WvStringList groups;
29 pam.getgroups(groups);
30
31 sec->setcredentials(user, groups);
32 newroot.mountgen(sec, false);
33 setclone(new UniConfDaemonConn(_s, newroot));
34 }
35 else
36 {
37 _s->print("FAIL {Not Authorized}\n");
38 _s->flush_then_close(1000);
39 }
40}
Retains all state and behavior related to a single UniConf daemon connection.
UniConf instances function as handles to subtrees of a UniConf tree and expose a high-level interface...
UniPermGen wraps a tree encoding Unix-style permissions, and provides an API for setting and checking...
UniSecureGen wraps a given generator and checks permissions (using a Unix-style scheme) before respon...
Deprecated: a UniConfGen that delegates all requests to an inner UniConf.
An IP address is made up of a "dotted quad" – four decimal numbers in the form www....
WvStreamClone simply forwards all requests to the "cloned" stream.
Unified support for streams, that is, sequences of bytes that may or may not be ready for read/write ...
void flush_then_close(int msec_timeout)
flush the output buffer automatically as select() is called.
Definition wvstream.cc:827
virtual const WvAddr * src() const
get the remote address from which the last data block was received.
Definition wvstream.cc:1123
This is a WvList of WvStrings, and is a really handy way to parse strings.
WvString is an implementation of a simple and efficient printable-string class.