summaryrefslogtreecommitdiffstats
path: root/cuserman.h
blob: 15b0fd0604add0568c34a440e442cd48e822a625 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*  Copyright 2008,2009,2010 Edwin Eefting (edwin@datux.nl) 

    This file is part of Synapse.

    Synapse is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Synapse is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Synapse.  If not, see <http://www.gnu.org/licenses/>. */













#ifndef CUSERMAN_H
#define CUSERMAN_H

#include "cuser.h"
#include "cgroup.h"
#include "csession.h"

#include <boost/shared_ptr.hpp>
#include <list>

namespace synapse
{

using namespace std;
using namespace boost;

#define MAX_SESSIONS 1000

/**
	@author 
*/
class CuserMan{
public:
	CuserMan();
	
	~CuserMan();
	CuserPtr getUser(const string & userName);
	bool addUser(const CuserPtr & user);
	CgroupPtr getGroup(const string & groupName);
	bool addGroup(const CgroupPtr &group);
	int addSession( CsessionPtr session);
	CsessionPtr getSession(const int & sessionId);
	bool delSession(const int id);
	list<int> delCookieSessions(int cookie, CmodulePtr module);
    void getStatus(Cvar & var);
	void doShutdown();
	string login(const int & sessionId, const string & userName, const string & password);

private:
	bool shutdown;
	list<CuserPtr> users;
	list<CgroupPtr> groups;
	//performance: we use an oldskool array, so session lookups are quick
	int sessionCounter;
	CsessionPtr sessions[MAX_SESSIONS+1];
	int sessionMaxPerUser;
	int statMaxSessions; //maximum sessions ever used, for statistics
	
};
}

#endif