added: winix function: rmuser

changed: UGContainer<> now uses std::list as a storage
         (previously it was using std::vector with pointers)
removed: now we don't have the operator[] for UGContainer<>



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@816 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
Tomasz Sowa 2012-03-09 02:36:25 +00:00
parent 6c2c12fe5e
commit 489310ba1c
51 changed files with 1146 additions and 602 deletions

View File

@ -30,16 +30,17 @@ app.o: ../functions/ln.h ../functions/ls.h ../functions/man.h
app.o: ../functions/meta.h ../functions/mkdir.h ../functions/mv.h
app.o: ../functions/nicedit.h ../functions/node.h ../functions/passwd.h
app.o: ../functions/priv.h ../functions/pw.h ../functions/reload.h
app.o: ../functions/rm.h ../functions/sort.h ../functions/specialdefault.h
app.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
app.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
app.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
app.o: ../core/htmlfilter.h ../templates/templates.h
app.o: ../templates/patterncacher.h ../templates/indexpatterns.h
app.o: ../templates/patterns.h ../templates/changepatterns.h
app.o: ../templates/htmltextstream.h ../core/sessionmanager.h compress.h
app.o: postparser.h httpsimpleparser.h cookieparser.h postmultiparser.h
app.o: acceptencodingparser.h acceptbaseparser.h plugin.h pluginmsg.h
app.o: ../functions/rm.h ../functions/rmuser.h ../functions/sort.h
app.o: ../functions/specialdefault.h ../functions/stat.h
app.o: ../functions/subject.h ../functions/template.h ../functions/tinymce.h
app.o: ../functions/uname.h ../functions/upload.h ../functions/uptime.h
app.o: ../functions/who.h ../functions/vim.h ../core/htmlfilter.h
app.o: ../templates/templates.h ../templates/patterncacher.h
app.o: ../templates/indexpatterns.h ../templates/patterns.h
app.o: ../templates/changepatterns.h ../templates/htmltextstream.h
app.o: ../core/sessionmanager.h compress.h postparser.h httpsimpleparser.h
app.o: cookieparser.h postmultiparser.h acceptencodingparser.h
app.o: acceptbaseparser.h plugin.h pluginmsg.h
basethread.o: basethread.h
bbcodeparser.o: bbcodeparser.h htmlfilter.h
compress.o: compress.h log.h textstream.h logmanipulators.h slog.h cur.h
@ -77,8 +78,9 @@ config.o: ../functions/ln.h ../functions/ls.h ../functions/man.h
config.o: ../functions/meta.h ../functions/mkdir.h ../functions/mv.h
config.o: ../functions/nicedit.h ../functions/node.h ../functions/passwd.h
config.o: ../functions/priv.h ../functions/pw.h ../functions/reload.h
config.o: ../functions/rm.h ../functions/sort.h ../functions/specialdefault.h
config.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
config.o: ../functions/rm.h ../functions/rmuser.h ../functions/sort.h
config.o: ../functions/specialdefault.h ../functions/stat.h
config.o: ../functions/subject.h ../functions/template.h
config.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
config.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
config.o: ../core/htmlfilter.h ../templates/templates.h
@ -148,9 +150,9 @@ image.o: ../functions/logout.h ../functions/ln.h ../functions/ls.h
image.o: ../functions/man.h ../functions/meta.h ../functions/mkdir.h
image.o: ../functions/mv.h ../functions/nicedit.h ../functions/node.h
image.o: ../functions/passwd.h ../functions/priv.h ../functions/pw.h
image.o: ../functions/reload.h ../functions/rm.h ../functions/sort.h
image.o: ../functions/specialdefault.h ../functions/stat.h
image.o: ../functions/subject.h ../functions/template.h
image.o: ../functions/reload.h ../functions/rm.h ../functions/rmuser.h
image.o: ../functions/sort.h ../functions/specialdefault.h
image.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
image.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
image.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
image.o: ../core/htmlfilter.h ../templates/templates.h
@ -236,9 +238,9 @@ mounts.o: ../functions/logout.h ../functions/ln.h ../functions/ls.h
mounts.o: ../functions/man.h ../functions/meta.h ../functions/mkdir.h
mounts.o: ../functions/mv.h ../functions/nicedit.h ../functions/node.h
mounts.o: ../functions/passwd.h ../functions/priv.h ../functions/pw.h
mounts.o: ../functions/reload.h ../functions/rm.h ../functions/sort.h
mounts.o: ../functions/specialdefault.h ../functions/stat.h
mounts.o: ../functions/subject.h ../functions/template.h
mounts.o: ../functions/reload.h ../functions/rm.h ../functions/rmuser.h
mounts.o: ../functions/sort.h ../functions/specialdefault.h
mounts.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
mounts.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
mounts.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
mounts.o: ../core/htmlfilter.h ../templates/templates.h
@ -274,9 +276,9 @@ plugin.o: ../functions/logout.h ../functions/ln.h ../functions/ls.h
plugin.o: ../functions/man.h ../functions/meta.h ../functions/mkdir.h
plugin.o: ../functions/mv.h ../functions/nicedit.h ../functions/node.h
plugin.o: ../functions/passwd.h ../functions/priv.h ../functions/pw.h
plugin.o: ../functions/reload.h ../functions/rm.h ../functions/sort.h
plugin.o: ../functions/specialdefault.h ../functions/stat.h
plugin.o: ../functions/subject.h ../functions/template.h
plugin.o: ../functions/reload.h ../functions/rm.h ../functions/rmuser.h
plugin.o: ../functions/sort.h ../functions/specialdefault.h
plugin.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
plugin.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
plugin.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
plugin.o: ../core/htmlfilter.h ../templates/templates.h
@ -315,15 +317,16 @@ plugindata.o: ../functions/ls.h ../functions/man.h ../functions/meta.h
plugindata.o: ../functions/mkdir.h ../functions/mv.h ../functions/nicedit.h
plugindata.o: ../functions/node.h ../functions/passwd.h ../functions/priv.h
plugindata.o: ../functions/pw.h ../functions/reload.h ../functions/rm.h
plugindata.o: ../functions/sort.h ../functions/specialdefault.h
plugindata.o: ../functions/stat.h ../functions/subject.h
plugindata.o: ../functions/template.h ../functions/tinymce.h
plugindata.o: ../functions/uname.h ../functions/upload.h
plugindata.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
plugindata.o: ../core/htmlfilter.h ../templates/templates.h
plugindata.o: ../templates/patterncacher.h ../templates/indexpatterns.h
plugindata.o: ../templates/patterns.h ../templates/changepatterns.h
plugindata.o: ../templates/htmltextstream.h ../core/sessionmanager.h
plugindata.o: ../functions/rmuser.h ../functions/sort.h
plugindata.o: ../functions/specialdefault.h ../functions/stat.h
plugindata.o: ../functions/subject.h ../functions/template.h
plugindata.o: ../functions/tinymce.h ../functions/uname.h
plugindata.o: ../functions/upload.h ../functions/uptime.h ../functions/who.h
plugindata.o: ../functions/vim.h ../core/htmlfilter.h
plugindata.o: ../templates/templates.h ../templates/patterncacher.h
plugindata.o: ../templates/indexpatterns.h ../templates/patterns.h
plugindata.o: ../templates/changepatterns.h ../templates/htmltextstream.h
plugindata.o: ../core/sessionmanager.h
postmultiparser.o: postmultiparser.h error.h requesttypes.h config.h
postmultiparser.o: htmlfilter.h misc.h item.h log.h textstream.h
postmultiparser.o: logmanipulators.h slog.h cur.h request.h
@ -364,7 +367,7 @@ request.o: ../functions/ln.h ../functions/ls.h ../functions/man.h
request.o: ../functions/meta.h ../functions/mkdir.h ../functions/mv.h
request.o: ../functions/nicedit.h ../functions/node.h ../functions/passwd.h
request.o: ../functions/priv.h ../functions/pw.h ../functions/reload.h
request.o: ../functions/rm.h ../functions/sort.h
request.o: ../functions/rm.h ../functions/rmuser.h ../functions/sort.h
request.o: ../functions/specialdefault.h ../functions/stat.h
request.o: ../functions/subject.h ../functions/template.h
request.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
@ -421,7 +424,7 @@ sessionmanager.o: ../functions/man.h ../functions/meta.h ../functions/mkdir.h
sessionmanager.o: ../functions/mv.h ../functions/nicedit.h
sessionmanager.o: ../functions/node.h ../functions/passwd.h
sessionmanager.o: ../functions/priv.h ../functions/pw.h ../functions/reload.h
sessionmanager.o: ../functions/rm.h ../functions/sort.h
sessionmanager.o: ../functions/rm.h ../functions/rmuser.h ../functions/sort.h
sessionmanager.o: ../functions/specialdefault.h ../functions/stat.h
sessionmanager.o: ../functions/subject.h ../functions/template.h
sessionmanager.o: ../functions/tinymce.h ../functions/uname.h
@ -475,8 +478,9 @@ system.o: ../functions/ln.h ../functions/ls.h ../functions/man.h
system.o: ../functions/meta.h ../functions/mkdir.h ../functions/mv.h
system.o: ../functions/nicedit.h ../functions/node.h ../functions/passwd.h
system.o: ../functions/priv.h ../functions/pw.h ../functions/reload.h
system.o: ../functions/rm.h ../functions/sort.h ../functions/specialdefault.h
system.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
system.o: ../functions/rm.h ../functions/rmuser.h ../functions/sort.h
system.o: ../functions/specialdefault.h ../functions/stat.h
system.o: ../functions/subject.h ../functions/template.h
system.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
system.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
system.o: plugin.h pluginmsg.h sessionmanager.h sessioncontainer.h
@ -487,4 +491,41 @@ threadmanager.o: item.h error.h config.h htmlfilter.h
threadmanager.o: ../templates/htmltextstream.h ../core/textstream.h misc.h
threadmanager.o: session.h user.h plugindata.h rebus.h mount.h
threadmanager.o: ../templates/locale.h
users.o: users.h
users.o: users.h sessionmanager.h sessioncontainer.h session.h item.h error.h
users.o: user.h plugindata.h rebus.h textstream.h cur.h request.h
users.o: requesttypes.h config.h htmlfilter.h ../templates/htmltextstream.h
users.o: ../core/textstream.h misc.h mount.h lastcontainer.h system.h dirs.h
users.o: dircontainer.h ../db/db.h ../db/dbbase.h ../db/dbconn.h
users.o: ../db/dbtextstream.h ../core/error.h ../db/dbitemquery.h
users.o: ../core/item.h ../db/dbitemcolumns.h ../core/user.h ../core/group.h
users.o: ../core/dircontainer.h ../core/ugcontainer.h log.h logmanipulators.h
users.o: slog.h ../templates/locale.h ../notify/notify.h
users.o: ../notify/notifypool.h ../templates/patterns.h ../templates/locale.h
users.o: ../templates/localefilter.h ../../ezc/src/ezc.h
users.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
users.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h
users.o: ../../ezc/src/stringconv.h ../notify/notifythread.h
users.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
users.o: ../core/config.h ../core/users.h ugcontainer.h mounts.h
users.o: mountparser.h crypt.h run.h groups.h group.h loadavg.h image.h
users.o: basethread.h threadmanager.h plugin.h pluginmsg.h
users.o: ../functions/functions.h ../functions/functionbase.h
users.o: ../core/request.h ../core/system.h ../core/synchro.h
users.o: ../functions/functionparser.h ../core/cur.h ../functions/adduser.h
users.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h
users.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h
users.o: ../functions/default.h ../functions/download.h ../functions/emacs.h
users.o: ../functions/env.h ../functions/last.h ../functions/login.h
users.o: ../functions/logout.h ../functions/ln.h ../functions/ls.h
users.o: ../functions/man.h ../functions/meta.h ../functions/mkdir.h
users.o: ../functions/mv.h ../functions/nicedit.h ../functions/node.h
users.o: ../functions/passwd.h ../functions/priv.h ../functions/pw.h
users.o: ../functions/reload.h ../functions/rm.h ../functions/rmuser.h
users.o: ../functions/sort.h ../functions/specialdefault.h
users.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
users.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
users.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
users.o: ../core/htmlfilter.h ../templates/templates.h
users.o: ../templates/patterncacher.h ../templates/indexpatterns.h
users.o: ../templates/patterns.h ../templates/changepatterns.h
users.o: ../templates/htmltextstream.h ../core/sessionmanager.h

View File

@ -61,6 +61,7 @@ App::App()
system.SetDb(&db);
system.SetSynchro(&synchro);
system.SetFunctions(&functions);
system.SetSessionManager(&session_manager);
templates.SetConfig(&config);
templates.SetCur(&cur);

View File

@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@ -39,7 +39,7 @@ Group * Groups::GetGroup(long group_id)
if( i == table.End() )
return 0;
return &(**i);
return &(*i);
}
@ -50,7 +50,7 @@ Group * Groups::GetGroup(const std::wstring & name)
if( i == table.End() )
return 0;
return &(**i);
return &(*i);
}
@ -86,9 +86,9 @@ Groups::SizeType Groups::Size()
}
Group & Groups::operator[](Groups::SizeType pos)
bool Groups::Remove(long group_id)
{
return table[pos];
return table.Remove(group_id);
}

View File

@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@ -38,7 +38,7 @@ public:
Iterator Begin();
Iterator End();
SizeType Size();
Group & operator[](SizeType pos);
bool Remove(long group_id);
};

View File

@ -165,21 +165,9 @@
// from the session file
#define WINIX_USER_LOGGED 30600
// preparing a current user to logout
// send from 'logout' winix function
// !! IMPROVE ME this message can be sent when winix is making the shutdown
// (for sessions which are not mark as 'remember me')
// and when the SessionManager deletes a session (from the special thread)
#define WINIX_PREPARE_USER_LOGGED_OUT 30610
// a user has been logged out
// send from 'logout' winix function
// in l1 you have the old user_id
// !! IMPROVE ME this message can be sent when winix is making the shutdown
// (for sessions which are not mark as 'remember me')
// and when the SessionManager deletes a session (from the special thread)
#define WINIX_USER_LOGGED_OUT 30620
// a user is going to logout
// in p1 you have a pointer to User struct
#define WINIX_PREPARE_USER_TO_LOGOUT 30610
// here you add your own html templates
// call TemplatesFunctions::patterns.Add(L"file_name.html")
@ -191,6 +179,16 @@
// in other cases after 'reload' function the indexes would be wrong
#define WINIX_ADD_TEMPLATE 31000
// a user will be removed
// in p1 you have a pointer to the User struct
// directly after this message a WINIX_USER_REMOVED will be sent
#define WINIX_PREPARE_TO_REMOVE_USER 31010
// a user has been removed
// in l1 you have the old user_id
#define WINIX_USER_REMOVED 31020
// values from 4000 - 4099 reserved for 'thread' plugin

View File

@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@ -44,6 +44,7 @@ void Session::Clear()
remember_me = false;
new_session = true;
spam_score = 0;
remove_me = false;
plugin_data.Resize(0);
}

View File

@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2011, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@ -61,6 +61,9 @@ struct Session
int spam_score;
// if true then this session will be removed by SessionManager
// without checking the time expiration
bool remove_me;
PluginData plugin_data;

View File

@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@ -153,7 +153,7 @@ bool SessionManager::SetSessionFromCookie(const std::string & cookie)
long id = Tol(cookie.c_str());
SessionContainer::Iterator s = session_tab.FindById(id);
if( s == session_tab.End() )
if( s == session_tab.End() || s->remove_me )
return false;
// that session is in the table
@ -220,6 +220,18 @@ SessionContainer::Iterator SessionManager::SessionEnd()
void SessionManager::DeleteSessions()
{
SessionContainer::Iterator i;
for(i=session_tab.Begin() ; i!=session_tab.End() ; ++i)
{
if( i->puser && !i->remember_me )
{
cur->session = &(*i); // for correctly setting a session data in plugins
plugin.Call(WINIX_PREPARE_USER_TO_LOGOUT, i->puser);
last_container->UserLogout(i->puser->id, i->id);
}
}
session_tab.Clear();
}
@ -300,7 +312,7 @@ void SessionManager::SaveSessions()
for( ; i!=session_tab.End() ; ++i )
{
if( i->id != 0 && i->puser )
if( i->id != 0 && i->puser && !i->remove_me )
{
file << i->id << ' ' << i->puser->id << ' ' << i->remember_me << ' ';
file << (long)i->time << ' ' << (long)i->last_time << std::endl;
@ -330,6 +342,30 @@ Session * SessionManager::GetCurSession()
}
// returns how many sessions was marked to remove
size_t SessionManager::MarkAllSessionsToRemove(long user_id)
{
size_t how_many = 0;
SessionContainer::Iterator i;
Session * old_session = cur->session;
for(i=session_tab.Begin() ; i!=session_tab.End() ; ++i)
{
if( i->puser && i->puser->id == user_id )
{
cur->session = &(*i); // for correctly setting a session data in plugins
plugin.Call(WINIX_PREPARE_USER_TO_LOGOUT, i->puser);
last_container->UserLogout(i->puser->id, i->id);
i->remove_me = true;
i->puser = 0;
how_many += 1;
}
}
cur->session = old_session;
return how_many;
}
@ -382,7 +418,7 @@ const int deleted_max_at_once = 10;
}
else
{
if( IsSessionOutdated(*i->second) )
if( i->second->remove_me || IsSessionOutdated(*i->second) )
{
DeleteSession(i++);
++deleted;

View File

@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@ -50,6 +50,7 @@ public:
SessionContainer::Iterator SessionEnd();
size_t Size();
size_t MarkAllSessionsToRemove(long user_id);
private:

View File

@ -45,6 +45,10 @@ void System::SetFunctions(Functions * pfunctions)
functions = pfunctions;
}
void System::SetSessionManager(SessionManager * sm)
{
session_manager = sm;
}
void System::Init()
@ -65,6 +69,7 @@ void System::Init()
mounts.ReadMounts();
users.SetCur(cur);
users.SetSessionManager(session_manager);
users.ReadUsers(db);
users.SetTimeZoneOffset(config->time_zone_offset);
groups.ReadGroups(db); // !! chwilowe przekazanie argumentu, db bedzie zmienione

View File

@ -28,6 +28,7 @@
class Functions;
class SessionManager;
// file system
@ -73,6 +74,7 @@ public:
void SetDb(Db * pdb);
void SetSynchro(Synchro * psynchro);
void SetFunctions(Functions * pfunctions);
void SetSessionManager(SessionManager * sm);
void Init();
void AddParams(const ParamTab & param_tab, std::wstring & str, bool clear_str = true);
@ -158,6 +160,7 @@ private:
Config * config;
Synchro * synchro;
Functions * functions;
SessionManager * session_manager;
Item item_temp;
std::wstring link_to_temp, name_temp;

View File

@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@ -10,11 +10,8 @@
#ifndef headerfile_winix_core_ugcontainer
#define headerfile_winix_core_ugcontainer
#include <vector>
#include <list>
#include <map>
#include <stdexcept>
#include "log.h"
@ -24,21 +21,17 @@ class UGContainer
{
public:
UGContainer();
~UGContainer();
// we have to use a pointer (Type*) here
// because we are remembering some pointers to the items elsewhere
// so the pointers should not be invalidated
typedef typename std::vector<Type*> Table;
typedef typename Table::iterator Iterator;
typedef typename Table::size_type SizeType;
typedef typename std::list<Type> Table;
typedef typename Table::iterator Iterator;
typedef typename Table::size_type SizeType;
typedef typename std::map<long, SizeType> TableId;
typedef typename std::map<std::wstring, SizeType> TableName;
typedef typename std::map<long, Iterator> TableId;
typedef typename std::map<std::wstring, Iterator> TableName;
UGContainer();
Iterator Begin();
Iterator End();
SizeType Size();
@ -52,17 +45,25 @@ public:
Iterator FindId(long id);
Iterator FindName(const std::wstring & name);
Type & operator[](SizeType pos);
bool Remove(long id);
private:
void AddIndexes(SizeType pos);
// don't copy these objects
UGContainer(const UGContainer<Type> &);
UGContainer<Type> & operator=(const UGContainer<Type> &);
void AddIndexes(Iterator iter);
void RebuildIndexes();
// main table
Table table;
// table.size() has O(n) complexity
size_t table_size;
// indexes
TableId table_id;
TableName table_name;
@ -80,6 +81,23 @@ UGContainer<Type>::~UGContainer()
template<class Type>
UGContainer<Type>::UGContainer()
{
Clear();
}
// is private
template<class Type>
UGContainer<Type>::UGContainer(const UGContainer<Type> &)
{
Clear();
}
// is private
template<class Type>
UGContainer<Type> & UGContainer<Type>::operator=(const UGContainer<Type> &)
{
Clear();
return *this;
}
@ -102,7 +120,7 @@ typename UGContainer<Type>::Iterator UGContainer<Type>::End()
template<class Type>
typename UGContainer<Type>::SizeType UGContainer<Type>::Size()
{
return table.size();
return table_size;
}
@ -121,12 +139,13 @@ typename UGContainer<Type>::Iterator UGContainer<Type>::PushBack(const Type & ty
if( Is(type.id) || Is(type.name) )
return End();
table.push_back(new Type(type));
log << log2 << "UGCont: added, id: " << type.id << ", name: " << type.name << logend;
AddIndexes( table.size() - 1 );
table.push_back(type);
table_size += 1;
Iterator i = --table.end();
log << log3 << "UGCont: added, id: " << type.id << ", name: " << type.name << logend;
AddIndexes(i);
return --table.end();
return i;
}
@ -134,9 +153,7 @@ return --table.end();
template<class Type>
void UGContainer<Type>::Clear()
{
for(size_t i=0 ; i<table.size() ; ++i)
delete table[i];
table_size = 0;
table.clear();
table_id.clear();
table_name.clear();
@ -177,7 +194,7 @@ typename UGContainer<Type>::Iterator UGContainer<Type>::FindId(long id)
if( i == table_id.end() )
return table.end();
return table.begin() + i->second;
return i->second;
}
@ -190,18 +207,18 @@ typename UGContainer<Type>::Iterator UGContainer<Type>::FindName(const std::wstr
if( i == table_name.end() )
return table.end();
return table.begin() + i->second;
return i->second;
}
template<class Type>
void UGContainer<Type>::AddIndexes(UGContainer<Type>::SizeType pos)
void UGContainer<Type>::AddIndexes(UGContainer<Type>::Iterator iter)
{
table_id.insert( std::make_pair(table[pos]->id, pos) );
table_name.insert( std::make_pair(table[pos]->name, pos) );
table_id.insert( std::make_pair(iter->id, iter) );
table_name.insert( std::make_pair(iter->name, iter) );
log << log4 << "UGCont: added indexes to: id: " << table[pos]->id << ", name: " << table[pos]->name << logend;
log << log4 << "UGCont: added indexes to: id: " << iter->id << ", name: " << iter->name << logend;
}
@ -209,30 +226,51 @@ void UGContainer<Type>::AddIndexes(UGContainer<Type>::SizeType pos)
template<class Type>
void UGContainer<Type>::RebuildIndexes()
{
Iterator i;
log << log4 << "UGCont: rebuilding indexes" << logend;
table_id.clear();
table_name.clear();
SizeType i, len = table.size();
for(i=0 ; i!=len ; ++i)
AddIndexes( i );
for(i=table.begin() ; i!=table.end() ; ++i)
AddIndexes(i);
log << log4 << "UGCont: indexes rebuilt, table.size: " << table.size() << ", table_id.size: "
log << log4 << "UGCont: indexes rebuilt, table.size: " << table_size << ", table_id.size: "
<< table_id.size() << ", table_name.size: " << table_name.size() << logend;
}
template<class Type>
Type & UGContainer<Type>::operator[](UGContainer<Type>::SizeType pos)
{
if( pos >= table.size() )
throw std::out_of_range("UGContainer: operator[]: index is out of range");
return *table[pos];
template<class Type>
bool UGContainer<Type>::Remove(long id)
{
typename TableId::iterator i = table_id.find(id);
typename TableName::iterator n;
bool result = false;
if( i != table_id.end() )
{
for(n=table_name.begin() ; n != table_name.end() ; ++n)
{
if( n->second == i->second )
{
table_name.erase(n);
log << log4 << "UGCont: removed index_id to: id: " << i->second->id << ", name: " << i->second->name << logend;
break;
}
}
log << log4 << "UGCont: removed index_name to: id: " << i->second->id << ", name: " << i->second->name << logend;
log << log3 << "UGCont: removed: id: " << i->second->id << ", name: " << i->second->name << logend;
table.erase(i->second);
table_id.erase(i);
result = true;
}
return result;
}

View File

@ -2,13 +2,15 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
#include <arpa/inet.h>
#include "users.h"
#include "sessionmanager.h"
#include "plugin.h"
@ -25,6 +27,12 @@ void Users::SetCur(Cur * pcur)
}
void Users::SetSessionManager(SessionManager * sm)
{
session_manager = sm;
}
void Users::Clear()
{
table.Clear();
@ -45,7 +53,7 @@ void Users::SetTimeZoneOffset(int offset)
for(i=table.Begin() ; i!=table.End() ; ++i)
{
(*i)->time_zone_offset = offset;
i->time_zone_offset = offset;
}
}
@ -71,7 +79,7 @@ User * Users::GetUser(long user_id)
if( i == table.End() )
return 0;
return &(**i);
return &(*i);
}
@ -82,7 +90,7 @@ User * Users::GetUser(const std::wstring & name)
if( i == table.End() )
return 0;
return &(**i);
return &(*i);
}
@ -119,13 +127,28 @@ Users::SizeType Users::Size()
}
User & Users::operator[](Users::SizeType pos)
bool Users::Remove(long user_id)
{
return table[pos];
bool result = false;
User * puser = GetUser(user_id);
if( puser )
{
LogoutUser(user_id);
plugin.Call(WINIX_PREPARE_TO_REMOVE_USER, puser);
result = table.Remove(user_id);
if( result )
plugin.Call(WINIX_USER_REMOVED, user_id);
}
return result;
}
// !! IMPROVE ME
// this method is too long
bool Users::LoginUser(long user_id, bool remember_me, bool use_ses_log)
{
if( !cur->session )
@ -191,6 +214,27 @@ return true;
}
size_t Users::LogoutUser(long user_id)
{
size_t how_many = 0;
User * puser = GetUser(user_id);
if( puser )
{
log << log2 << "Users: logging out user " << puser->name << ", id: "
<< puser->id << " from all sessions" << logend;
// WINIX_PREPARE_USER_TO_LOGOUT will be sent by MarkAllSessionsToRemove()
how_many = session_manager->MarkAllSessionsToRemove(user_id);
how_many_logged -= how_many;
if( how_many )
log << log3 << "Users: " << how_many << " user(s) were logged out" << logend;
}
return how_many;
}
void Users::LogoutCurrentUser()
@ -201,13 +245,14 @@ void Users::LogoutCurrentUser()
log << log2 << "Users: user " << cur->session->puser->name << ", id: "
<< cur->session->puser->id << " logged out" << logend;
plugin.Call(WINIX_PREPARE_USER_TO_LOGOUT, cur->session->puser);
last.UserLogout(cur->session->puser->id, cur->session->id);
if( how_many_logged > 0 ) // for safety
how_many_logged -= 1;
cur->session->puser = 0;
cur->session->remember_me = 0;
cur->session->remember_me = false;
}

View File

@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@ -17,6 +17,8 @@
#include "cur.h"
#include "db/db.h"
class SessionManager;
class Users
{
@ -24,6 +26,7 @@ typedef UGContainer<User> Table;
Table table;
Cur * cur;
SessionManager * session_manager;
long how_many_logged;
public:
@ -36,6 +39,7 @@ public:
Users();
void SetCur(Cur * pcur);
void SetSessionManager(SessionManager * sm);
void Clear();
void ReadUsers(Db * db);
@ -48,10 +52,11 @@ public:
Iterator Begin();
Iterator End();
SizeType Size();
User & operator[](SizeType pos);
bool Remove(long user_id);
bool LoginUser(long user_id, bool remember_me, bool use_ses_log = false);
void LogoutCurrentUser();
bool LoginUser(long user_id, bool remember_me, bool use_ses_log = false);
size_t LogoutUser(long user_id);
void LogoutCurrentUser();
void IncrementLoggedUsers();
long HowManyLogged();

View File

@ -180,6 +180,32 @@ return DoCommand(query);
}
Error Db::ChangeUserEmail(long user_id, const std::wstring & email)
{
query.Clear();
query << R("update core.user set(email) = (")
<< email
<< R(") where id = ")
<< user_id
<< R(";");
return DoCommand(query);
}
Error Db::RemoveUser(long user_id)
{
query.Clear();
query << R("delete from core.user where id = ")
<< user_id
<< R(";");
return DoCommand(query);
}
//!! wywalic z nazwy 'Subject' nic nie jest robione z tytulem
// ta metoda uzywana tez jest w EditParentUrlById()
bool Db::AddItemCreateUrlSubject(Item & item)
@ -1579,7 +1605,7 @@ void Db::GetUsers(UGContainer<User> & user_tab)
log << log2 << "Db: user: id: " << u.id << ", name: " << u.name << ", super_user: " << u.super_user << logend;
iter = user_tab.PushBack( u );
iter = user_tab.PushBack(u);
if( iter == user_tab.End() )
log << log1 << "Db: can't add a user: " << u.name << logend;
@ -1591,8 +1617,8 @@ void Db::GetUsers(UGContainer<User> & user_tab)
if( !IsNull(r, i, cgroup_id) && group_id!=-1 && iter!=user_tab.End() )
{
(*iter)->groups.push_back(group_id);
log << log3 << "Db: user:" << (*iter)->name << " is a member of group_id: " << group_id << logend;
iter->groups.push_back(group_id);
log << log3 << "Db: user:" << iter->name << " is a member of group_id: " << group_id << logend;
}
}
}
@ -1645,7 +1671,7 @@ void Db::GetGroups(UGContainer<Group> & group_tab)
if( !IsNull(r, i, cuser_id) && user_id!=-1 && !group_tab.Empty() )
{
(*iter)->members.push_back(user_id);
iter->members.push_back(user_id);
log << log3 << "Db: get group member: user_id: " << user_id << logend;
}
}

View File

@ -50,6 +50,8 @@ public:
Error ChangeUserEnv(long user_id, const PT::Space & space);
Error ChangeUserAdminEnv(long user_id, const PT::Space & space);
Error ChangeUserStatus(long user_id, int status);
Error ChangeUserEmail(long user_id, const std::wstring & email);
Error RemoveUser(long user_id);
Error AddItem(Item & item);
Error EditItemById(Item & item, bool with_url = true);

View File

@ -19,22 +19,22 @@ adduser.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
adduser.o: functionparser.h ../core/cur.h cat.h chmod.h privchanger.h chown.h
adduser.o: ckeditor.h cp.h default.h download.h emacs.h env.h last.h login.h
adduser.o: logout.h ln.h ls.h man.h meta.h mkdir.h mv.h nicedit.h node.h
adduser.o: passwd.h priv.h pw.h reload.h rm.h run.h sort.h specialdefault.h
adduser.o: stat.h subject.h template.h tinymce.h uname.h upload.h uptime.h
adduser.o: who.h vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
adduser.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
adduser.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
adduser.o: ../core/lastcontainer.h ../core/mounts.h ../core/mountparser.h
adduser.o: ../core/crypt.h ../core/users.h ../core/groups.h ../core/group.h
adduser.o: ../core/loadavg.h ../core/image.h ../core/basethread.h
adduser.o: ../core/threadmanager.h ../core/synchro.h ../core/slog.h
adduser.o: ../core/plugin.h ../core/pluginmsg.h ../core/system.h
adduser.o: ../core/sessionmanager.h ../core/sessioncontainer.h
adduser.o: ../functions/functions.h ../templates/templates.h
adduser.o: ../templates/patterncacher.h ../templates/indexpatterns.h
adduser.o: ../templates/patterns.h ../templates/changepatterns.h
adduser.o: ../templates/htmltextstream.h ../core/sessionmanager.h
adduser.o: ../core/misc.h
adduser.o: passwd.h priv.h pw.h reload.h rm.h rmuser.h run.h sort.h
adduser.o: specialdefault.h stat.h subject.h template.h tinymce.h uname.h
adduser.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
adduser.o: ../../ezc/src/stringconv.h ../notify/notifythread.h
adduser.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
adduser.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
adduser.o: ../core/mounts.h ../core/mountparser.h ../core/crypt.h
adduser.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
adduser.o: ../core/image.h ../core/basethread.h ../core/threadmanager.h
adduser.o: ../core/synchro.h ../core/slog.h ../core/plugin.h
adduser.o: ../core/pluginmsg.h ../core/system.h ../core/sessionmanager.h
adduser.o: ../core/sessioncontainer.h ../functions/functions.h
adduser.o: ../templates/templates.h ../templates/patterncacher.h
adduser.o: ../templates/indexpatterns.h ../templates/patterns.h
adduser.o: ../templates/changepatterns.h ../templates/htmltextstream.h
adduser.o: ../core/sessionmanager.h ../core/misc.h
cat.o: cat.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
cat.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
cat.o: ../core/misc.h ../core/item.h ../core/requesttypes.h ../core/error.h
@ -52,9 +52,9 @@ cat.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
cat.o: functionparser.h ../core/cur.h adduser.h chmod.h privchanger.h chown.h
cat.o: ckeditor.h cp.h default.h download.h emacs.h env.h last.h login.h
cat.o: logout.h ln.h ls.h man.h meta.h mkdir.h mv.h nicedit.h node.h passwd.h
cat.o: priv.h pw.h reload.h rm.h run.h sort.h specialdefault.h stat.h
cat.o: subject.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
cat.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
cat.o: priv.h pw.h reload.h rm.h rmuser.h run.h sort.h specialdefault.h
cat.o: stat.h subject.h template.h tinymce.h uname.h upload.h uptime.h who.h
cat.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
cat.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
cat.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
cat.o: ../core/lastcontainer.h ../core/mounts.h ../core/mountparser.h
@ -79,15 +79,16 @@ chmod.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
chmod.o: functionparser.h ../core/cur.h adduser.h cat.h chown.h privchanger.h
chmod.o: ckeditor.h cp.h default.h download.h emacs.h env.h last.h login.h
chmod.o: logout.h ln.h ls.h man.h meta.h mkdir.h mv.h nicedit.h node.h
chmod.o: passwd.h priv.h pw.h reload.h rm.h run.h sort.h specialdefault.h
chmod.o: stat.h subject.h template.h tinymce.h uname.h upload.h uptime.h
chmod.o: who.h vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
chmod.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
chmod.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
chmod.o: ../core/lastcontainer.h ../core/mounts.h ../core/mountparser.h
chmod.o: ../core/crypt.h ../core/users.h ../core/groups.h ../core/group.h
chmod.o: ../core/loadavg.h ../core/image.h ../core/basethread.h
chmod.o: ../core/threadmanager.h ../core/synchro.h
chmod.o: passwd.h priv.h pw.h reload.h rm.h rmuser.h run.h sort.h
chmod.o: specialdefault.h stat.h subject.h template.h tinymce.h uname.h
chmod.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
chmod.o: ../../ezc/src/stringconv.h ../notify/notifythread.h
chmod.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
chmod.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
chmod.o: ../core/mounts.h ../core/mountparser.h ../core/crypt.h
chmod.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
chmod.o: ../core/image.h ../core/basethread.h ../core/threadmanager.h
chmod.o: ../core/synchro.h
chown.o: chown.h functionbase.h ../core/item.h ../db/db.h ../db/dbbase.h
chown.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h
chown.o: ../core/misc.h ../core/item.h ../core/requesttypes.h ../core/error.h
@ -106,15 +107,16 @@ chown.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
chown.o: functionparser.h ../core/cur.h adduser.h cat.h chmod.h privchanger.h
chown.o: ckeditor.h cp.h default.h download.h emacs.h env.h last.h login.h
chown.o: logout.h ln.h ls.h man.h meta.h mkdir.h mv.h nicedit.h node.h
chown.o: passwd.h priv.h pw.h reload.h rm.h run.h sort.h specialdefault.h
chown.o: stat.h subject.h template.h tinymce.h uname.h upload.h uptime.h
chown.o: who.h vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
chown.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
chown.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
chown.o: ../core/lastcontainer.h ../core/mounts.h ../core/mountparser.h
chown.o: ../core/crypt.h ../core/users.h ../core/groups.h ../core/group.h
chown.o: ../core/loadavg.h ../core/image.h ../core/basethread.h
chown.o: ../core/threadmanager.h ../core/synchro.h
chown.o: passwd.h priv.h pw.h reload.h rm.h rmuser.h run.h sort.h
chown.o: specialdefault.h stat.h subject.h template.h tinymce.h uname.h
chown.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
chown.o: ../../ezc/src/stringconv.h ../notify/notifythread.h
chown.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
chown.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
chown.o: ../core/mounts.h ../core/mountparser.h ../core/crypt.h
chown.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
chown.o: ../core/image.h ../core/basethread.h ../core/threadmanager.h
chown.o: ../core/synchro.h
ckeditor.o: ckeditor.h functionbase.h ../core/item.h ../db/db.h
ckeditor.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
ckeditor.o: ../core/textstream.h ../core/misc.h ../core/item.h
@ -134,11 +136,11 @@ ckeditor.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
ckeditor.o: functionparser.h ../core/cur.h adduser.h cat.h chmod.h
ckeditor.o: privchanger.h chown.h cp.h default.h download.h emacs.h env.h
ckeditor.o: last.h login.h logout.h ln.h ls.h man.h meta.h mkdir.h mv.h
ckeditor.o: nicedit.h node.h passwd.h priv.h pw.h reload.h rm.h run.h sort.h
ckeditor.o: specialdefault.h stat.h subject.h template.h tinymce.h uname.h
ckeditor.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
ckeditor.o: ../../ezc/src/stringconv.h ../notify/notifythread.h
ckeditor.o: ../core/basethread.h ../core/synchro.h
ckeditor.o: nicedit.h node.h passwd.h priv.h pw.h reload.h rm.h rmuser.h
ckeditor.o: run.h sort.h specialdefault.h stat.h subject.h template.h
ckeditor.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
ckeditor.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
ckeditor.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
ckeditor.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
ckeditor.o: ../core/lastcontainer.h ../core/mounts.h ../core/mountparser.h
ckeditor.o: ../core/crypt.h ../core/users.h ../core/groups.h ../core/group.h
@ -161,7 +163,7 @@ cp.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
cp.o: functionparser.h ../core/cur.h adduser.h cat.h chmod.h privchanger.h
cp.o: chown.h ckeditor.h default.h download.h emacs.h env.h last.h login.h
cp.o: logout.h ln.h ls.h man.h meta.h mkdir.h mv.h nicedit.h node.h passwd.h
cp.o: priv.h pw.h reload.h rm.h run.h sort.h specialdefault.h stat.h
cp.o: priv.h pw.h reload.h rm.h rmuser.h run.h sort.h specialdefault.h stat.h
cp.o: subject.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
cp.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
cp.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
@ -195,9 +197,9 @@ default.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
default.o: functionparser.h ../core/cur.h adduser.h cat.h chmod.h
default.o: privchanger.h chown.h ckeditor.h cp.h download.h emacs.h env.h
default.o: last.h login.h logout.h ln.h ls.h man.h meta.h mkdir.h mv.h
default.o: nicedit.h node.h passwd.h priv.h pw.h reload.h rm.h run.h sort.h
default.o: specialdefault.h stat.h subject.h template.h tinymce.h uname.h
default.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
default.o: nicedit.h node.h passwd.h priv.h pw.h reload.h rm.h rmuser.h run.h
default.o: sort.h specialdefault.h stat.h subject.h template.h tinymce.h
default.o: uname.h upload.h uptime.h who.h vim.h ../core/htmlfilter.h
default.o: ../../ezc/src/stringconv.h ../notify/notifythread.h
default.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
default.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
@ -224,11 +226,11 @@ download.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
download.o: functionparser.h ../core/cur.h adduser.h cat.h chmod.h
download.o: privchanger.h chown.h ckeditor.h cp.h default.h emacs.h env.h
download.o: last.h login.h logout.h ln.h ls.h man.h meta.h mkdir.h mv.h
download.o: nicedit.h node.h passwd.h priv.h pw.h reload.h rm.h run.h sort.h
download.o: specialdefault.h stat.h subject.h template.h tinymce.h uname.h
download.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
download.o: ../../ezc/src/stringconv.h ../notify/notifythread.h
download.o: ../core/basethread.h ../core/synchro.h
download.o: nicedit.h node.h passwd.h priv.h pw.h reload.h rm.h rmuser.h
download.o: run.h sort.h specialdefault.h stat.h subject.h template.h
download.o: tinymce.h uname.h upload.h uptime.h who.h vim.h
download.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
download.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
download.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
download.o: ../core/lastcontainer.h ../core/mounts.h ../core/mountparser.h
download.o: ../core/crypt.h ../core/users.h ../core/groups.h ../core/group.h
@ -252,15 +254,16 @@ emacs.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
emacs.o: functionparser.h ../core/cur.h adduser.h cat.h chmod.h privchanger.h
emacs.o: chown.h ckeditor.h cp.h default.h download.h env.h last.h login.h
emacs.o: logout.h ln.h ls.h man.h meta.h mkdir.h mv.h nicedit.h node.h
emacs.o: passwd.h priv.h pw.h reload.h rm.h run.h sort.h specialdefault.h
emacs.o: stat.h subject.h template.h tinymce.h uname.h upload.h uptime.h
emacs.o: who.h vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
emacs.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
emacs.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
emacs.o: ../core/lastcontainer.h ../core/mounts.h ../core/mountparser.h
emacs.o: ../core/crypt.h ../core/users.h ../core/groups.h ../core/group.h
emacs.o: ../core/loadavg.h ../core/image.h ../core/basethread.h
emacs.o: ../core/threadmanager.h ../core/synchro.h ../templates/templates.h
emacs.o: passwd.h priv.h pw.h reload.h rm.h rmuser.h run.h sort.h
emacs.o: specialdefault.h stat.h subject.h template.h tinymce.h uname.h
emacs.o: upload.h uptime.h who.h vim.h ../core/htmlfilter.h
emacs.o: ../../ezc/src/stringconv.h ../notify/notifythread.h
emacs.o: ../core/basethread.h ../core/synchro.h ../notify/templatesnotify.h
emacs.o: ../core/users.h ../core/ugcontainer.h ../core/lastcontainer.h
emacs.o: ../core/mounts.h ../core/mountparser.h ../core/crypt.h
emacs.o: ../core/users.h ../core/groups.h ../core/group.h ../core/loadavg.h
emacs.o: ../core/image.h ../core/basethread.h ../core/threadmanager.h
emacs.o: ../core/synchro.h ../templates/templates.h
emacs.o: ../templates/patterncacher.h ../templates/indexpatterns.h
emacs.o: ../templates/patterns.h ../templates/changepatterns.h
emacs.o: ../templates/htmltextstream.h ../core/sessionmanager.h
@ -281,9 +284,9 @@ env.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h functions.h
env.o: functionparser.h ../core/cur.h adduser.h cat.h chmod.h privchanger.h
env.o: chown.h ckeditor.h cp.h default.h download.h emacs.h last.h login.h
env.o: logout.h ln.h ls.h man.h meta.h mkdir.h mv.h nicedit.h node.h passwd.h
env.o: priv.h pw.h reload.h rm.h run.h sort.h specialdefault.h stat.h
env.o: subject.h template.h tinymce.h uname.h upload.h uptime.h who.h vim.h
env.o: ../core/htmlfilter.h ../../ezc/src/stringconv.h
env.o: priv.h pw.h reload.h rm.h rmuser.h run.h sort.h specialdefault.h
env.o: stat.h subject.h template.h tinymce.h uname.h upload.h uptime.h who.h
env.o: vim.h ../core/htmlfilter.h ../../ezc/src/stringconv.h
env.o: ../notify/notifythread.h ../core/basethread.h ../core/synchro.h
env.o: ../notify/templatesnotify.h ../core/users.h ../core/ugcontainer.h
env.o: ../core/lastcontainer.h ../core/mounts.h ../core/mountparser.h
@ -310,12 +313,12 @@ functionbase.o: ../../ezc/src/pattern.h functions.h functionparser.h
functionbase.o: ../core/cur.h adduser.h cat.h chmod.h privchanger.h chown.h
functionbase.o: ckeditor.h cp.h default.h download.h emacs.h env.h last.h
functionbase.o: login.h logout.h ln.h ls.h man.h meta.h mkdir.h mv.h
functionbase.o: