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 
16 UniConfPamConn::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 }