added: possibility to encode the session cookie (added files core/sessionidmanager.h and core/sessionidmanager.cpp)

added: config options:
       // whether or not we should encode the session cookie
       // (we have a special algorithm)
       // default: false
       bool session_cookie_encode;

       // if session_cookie_encode is true then you should provide
       // a file where AES keys will be stored
       std::wstring session_keys_file;

       // each session has an index -- an unsigned int value
       // this value is sent in the cookie string (is encoded)
       // and is incremented when session_index_time_increment time is passed since the last incrementing
       // if a client sent the cookie back the difference between
       // current index and the index in the cookie should be less than or equal to session_allow_index_difference
       // default: 8
       size_t session_allow_index_difference;

       // the time which should pass after the session index is incremented
       // default: 30
       // (session_allow_index_difference + 1) * session_index_time_increment should be less than a time
       // load of a page and all elements on it such as images (of course it depends on client's download too)
       time_t session_index_time_increment;

       // time in seconds after a new AES key pair should be generated
       // we have 256 pairs of keys so this time multiplied by 256 should not be less than
       // the max time of a session (session_remember_max_idle),
       // by default: 256 * 2 days = 512 days = 1.4 year > 3 months (session_remember_max_idle)
       // default: 172800 = 2 days (max: 2678400 = 1 month, min: 10)
       size_t session_key_renew_time;

changed: when printing the time of a request we print only two non-zero digits






git-svn-id: svn://ttmath.org/publicrep/winix/trunk@994 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
Tomasz Sowa 2014-11-22 15:30:56 +00:00
parent 3547d326b8
commit 76314aab10
28 changed files with 1360 additions and 240 deletions

File diff suppressed because one or more lines are too long

View File

@ -40,32 +40,33 @@ app.o: ../../winix/notify/templatesnotify.h ../../winix/core/config.h
app.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h mounts.h app.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h mounts.h
app.o: mountparser.h crypt.h run.h users.h groups.h group.h loadavg.h image.h app.o: mountparser.h crypt.h run.h users.h groups.h group.h loadavg.h image.h
app.o: threadmanager.h timezones.h timezone.h sessionmanager.h app.o: threadmanager.h timezones.h timezone.h sessionmanager.h
app.o: sessioncontainer.h ipbancontainer.h ../../winix/functions/functions.h app.o: sessioncontainer.h ipbancontainer.h sessionidmanager.h
app.o: ../../winix/functions/functionbase.h ../../winix/core/request.h app.o: ../../tito/src/base64.h ../../tito/src/aes.h
app.o: ../../winix/core/system.h ../../winix/core/synchro.h app.o: ../../winix/functions/functions.h ../../winix/functions/functionbase.h
app.o: ../../winix/functions/functionparser.h ../../winix/core/cur.h app.o: ../../winix/core/request.h ../../winix/core/system.h
app.o: ../../winix/functions/account.h ../../winix/functions/adduser.h app.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h
app.o: ../../winix/functions/cat.h ../../winix/functions/chmod.h app.o: ../../winix/core/cur.h ../../winix/functions/account.h
app.o: ../../winix/functions/privchanger.h ../../winix/functions/chown.h app.o: ../../winix/functions/adduser.h ../../winix/functions/cat.h
app.o: ../../winix/functions/ckeditor.h ../../winix/functions/cp.h app.o: ../../winix/functions/chmod.h ../../winix/functions/privchanger.h
app.o: ../../winix/functions/default.h ../../winix/functions/download.h app.o: ../../winix/functions/chown.h ../../winix/functions/ckeditor.h
app.o: ../../winix/functions/emacs.h ../../winix/functions/env.h app.o: ../../winix/functions/cp.h ../../winix/functions/default.h
app.o: ../../winix/functions/imgcrop.h ../../winix/functions/last.h app.o: ../../winix/functions/download.h ../../winix/functions/emacs.h
app.o: ../../winix/functions/login.h ../../winix/functions/logout.h app.o: ../../winix/functions/env.h ../../winix/functions/imgcrop.h
app.o: ../../winix/functions/ln.h ../../winix/functions/ls.h app.o: ../../winix/functions/last.h ../../winix/functions/login.h
app.o: ../../winix/functions/man.h ../../winix/functions/meta.h app.o: ../../winix/functions/logout.h ../../winix/functions/ln.h
app.o: ../../winix/functions/mkdir.h ../../winix/functions/mv.h app.o: ../../winix/functions/ls.h ../../winix/functions/man.h
app.o: ../../winix/functions/nicedit.h ../../winix/functions/node.h app.o: ../../winix/functions/meta.h ../../winix/functions/mkdir.h
app.o: ../../winix/functions/passwd.h ../../winix/functions/priv.h app.o: ../../winix/functions/mv.h ../../winix/functions/nicedit.h
app.o: ../../winix/functions/pw.h ../../winix/functions/reload.h app.o: ../../winix/functions/node.h ../../winix/functions/passwd.h
app.o: ../../winix/functions/rm.h ../../winix/functions/rmuser.h app.o: ../../winix/functions/priv.h ../../winix/functions/pw.h
app.o: ../../winix/functions/sort.h ../../winix/functions/specialdefault.h app.o: ../../winix/functions/reload.h ../../winix/functions/rm.h
app.o: ../../winix/functions/stat.h ../../winix/functions/subject.h app.o: ../../winix/functions/rmuser.h ../../winix/functions/sort.h
app.o: ../../winix/functions/template.h ../../winix/functions/tinymce.h app.o: ../../winix/functions/specialdefault.h ../../winix/functions/stat.h
app.o: ../../winix/functions/uname.h ../../winix/functions/upload.h app.o: ../../winix/functions/subject.h ../../winix/functions/template.h
app.o: ../../winix/functions/uptime.h ../../winix/functions/who.h app.o: ../../winix/functions/tinymce.h ../../winix/functions/uname.h
app.o: ../../winix/functions/vim.h ../../winix/core/htmlfilter.h app.o: ../../winix/functions/upload.h ../../winix/functions/uptime.h
app.o: ../../winix/templates/templates.h app.o: ../../winix/functions/who.h ../../winix/functions/vim.h
app.o: ../../winix/core/htmlfilter.h ../../winix/templates/templates.h
app.o: ../../winix/templates/patterncacher.h app.o: ../../winix/templates/patterncacher.h
app.o: ../../winix/templates/indexpatterns.h ../../winix/templates/patterns.h app.o: ../../winix/templates/indexpatterns.h ../../winix/templates/patterns.h
app.o: ../../winix/templates/changepatterns.h app.o: ../../winix/templates/changepatterns.h
@ -121,6 +122,7 @@ config.o: ../../winix/core/config.h ../../winix/core/users.h ugcontainer.h
config.o: lastcontainer.h mounts.h mountparser.h crypt.h run.h users.h config.o: lastcontainer.h mounts.h mountparser.h crypt.h run.h users.h
config.o: groups.h group.h loadavg.h image.h threadmanager.h timezones.h config.o: groups.h group.h loadavg.h image.h threadmanager.h timezones.h
config.o: timezone.h sessionmanager.h sessioncontainer.h ipbancontainer.h config.o: timezone.h sessionmanager.h sessioncontainer.h ipbancontainer.h
config.o: sessionidmanager.h ../../tito/src/base64.h ../../tito/src/aes.h
config.o: ../../winix/functions/functions.h config.o: ../../winix/functions/functions.h
config.o: ../../winix/functions/functionbase.h ../../winix/core/request.h config.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
config.o: ../../winix/core/system.h ../../winix/core/synchro.h config.o: ../../winix/core/system.h ../../winix/core/synchro.h
@ -274,6 +276,7 @@ image.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h mounts.h
image.o: mountparser.h crypt.h run.h users.h groups.h group.h loadavg.h image.o: mountparser.h crypt.h run.h users.h groups.h group.h loadavg.h
image.o: threadmanager.h timezones.h timezone.h plugin.h pluginmsg.h image.o: threadmanager.h timezones.h timezone.h plugin.h pluginmsg.h
image.o: sessionmanager.h sessioncontainer.h ipbancontainer.h image.o: sessionmanager.h sessioncontainer.h ipbancontainer.h
image.o: sessionidmanager.h ../../tito/src/base64.h ../../tito/src/aes.h
image.o: ../../winix/functions/functions.h image.o: ../../winix/functions/functions.h
image.o: ../../winix/functions/functionbase.h ../../winix/core/request.h image.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
image.o: ../../winix/core/system.h ../../winix/core/synchro.h image.o: ../../winix/core/system.h ../../winix/core/synchro.h
@ -363,6 +366,7 @@ job.o: ../../winix/core/config.h ../../winix/core/users.h ugcontainer.h
job.o: lastcontainer.h mounts.h mountparser.h crypt.h run.h users.h groups.h job.o: lastcontainer.h mounts.h mountparser.h crypt.h run.h users.h groups.h
job.o: group.h loadavg.h image.h threadmanager.h timezones.h timezone.h job.o: group.h loadavg.h image.h threadmanager.h timezones.h timezone.h
job.o: sessionmanager.h sessioncontainer.h ipbancontainer.h job.o: sessionmanager.h sessioncontainer.h ipbancontainer.h
job.o: sessionidmanager.h ../../tito/src/base64.h ../../tito/src/aes.h
job.o: ../../winix/functions/functions.h ../../winix/functions/functionbase.h job.o: ../../winix/functions/functions.h ../../winix/functions/functionbase.h
job.o: ../../winix/core/request.h ../../winix/core/system.h job.o: ../../winix/core/request.h ../../winix/core/system.h
job.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h job.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h
@ -541,6 +545,7 @@ mounts.o: lastcontainer.h mountparser.h plugin.h pluginmsg.h system.h job.h
mounts.o: basethread.h synchro.h crypt.h run.h users.h groups.h group.h mounts.o: basethread.h synchro.h crypt.h run.h users.h groups.h group.h
mounts.o: loadavg.h image.h threadmanager.h timezones.h timezone.h mounts.o: loadavg.h image.h threadmanager.h timezones.h timezone.h
mounts.o: sessionmanager.h sessioncontainer.h ipbancontainer.h mounts.o: sessionmanager.h sessioncontainer.h ipbancontainer.h
mounts.o: sessionidmanager.h ../../tito/src/base64.h ../../tito/src/aes.h
mounts.o: ../../winix/functions/functions.h mounts.o: ../../winix/functions/functions.h
mounts.o: ../../winix/functions/functionbase.h ../../winix/core/request.h mounts.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
mounts.o: ../../winix/core/system.h ../../winix/core/synchro.h mounts.o: ../../winix/core/system.h ../../winix/core/synchro.h
@ -604,7 +609,8 @@ plugin.o: ../../winix/notify/templatesnotify.h ../../winix/core/config.h
plugin.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h mounts.h plugin.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h mounts.h
plugin.o: mountparser.h crypt.h run.h users.h groups.h group.h loadavg.h plugin.o: mountparser.h crypt.h run.h users.h groups.h group.h loadavg.h
plugin.o: image.h threadmanager.h timezones.h timezone.h sessionmanager.h plugin.o: image.h threadmanager.h timezones.h timezone.h sessionmanager.h
plugin.o: sessioncontainer.h ipbancontainer.h plugin.o: sessioncontainer.h ipbancontainer.h sessionidmanager.h
plugin.o: ../../tito/src/base64.h ../../tito/src/aes.h
plugin.o: ../../winix/functions/functions.h plugin.o: ../../winix/functions/functions.h
plugin.o: ../../winix/functions/functionbase.h ../../winix/core/request.h plugin.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
plugin.o: ../../winix/core/system.h ../../winix/core/synchro.h plugin.o: ../../winix/core/system.h ../../winix/core/synchro.h
@ -672,7 +678,8 @@ plugindata.o: ../../winix/notify/templatesnotify.h ../../winix/core/config.h
plugindata.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h mounts.h plugindata.o: ../../winix/core/users.h ugcontainer.h lastcontainer.h mounts.h
plugindata.o: mountparser.h crypt.h run.h users.h groups.h group.h loadavg.h plugindata.o: mountparser.h crypt.h run.h users.h groups.h group.h loadavg.h
plugindata.o: image.h threadmanager.h timezones.h timezone.h sessionmanager.h plugindata.o: image.h threadmanager.h timezones.h timezone.h sessionmanager.h
plugindata.o: sessioncontainer.h ipbancontainer.h plugindata.o: sessioncontainer.h ipbancontainer.h sessionidmanager.h
plugindata.o: ../../tito/src/base64.h ../../tito/src/aes.h
plugindata.o: ../../winix/functions/functions.h plugindata.o: ../../winix/functions/functions.h
plugindata.o: ../../winix/functions/functionbase.h ../../winix/core/request.h plugindata.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
plugindata.o: ../../winix/core/system.h ../../winix/core/synchro.h plugindata.o: ../../winix/core/system.h ../../winix/core/synchro.h
@ -768,6 +775,7 @@ request.o: ../../winix/core/config.h ../../winix/core/users.h ugcontainer.h
request.o: lastcontainer.h mounts.h mountparser.h crypt.h run.h users.h request.o: lastcontainer.h mounts.h mountparser.h crypt.h run.h users.h
request.o: groups.h group.h loadavg.h image.h threadmanager.h timezones.h request.o: groups.h group.h loadavg.h image.h threadmanager.h timezones.h
request.o: timezone.h sessionmanager.h sessioncontainer.h ipbancontainer.h request.o: timezone.h sessionmanager.h sessioncontainer.h ipbancontainer.h
request.o: sessionidmanager.h ../../tito/src/base64.h ../../tito/src/aes.h
request.o: ../../winix/functions/functions.h request.o: ../../winix/functions/functions.h
request.o: ../../winix/functions/functionbase.h ../../winix/core/request.h request.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
request.o: ../../winix/core/system.h ../../winix/core/synchro.h request.o: ../../winix/core/system.h ../../winix/core/synchro.h
@ -839,6 +847,23 @@ sessioncontainer.o: ../../winix/core/textstream.h misc.h
sessioncontainer.o: ../../pikotools/utf8/utf8.h winix_const.h sessioncontainer.o: ../../pikotools/utf8/utf8.h winix_const.h
sessioncontainer.o: ../../pikotools/space/spacetojson.h mount.h log.h sessioncontainer.o: ../../pikotools/space/spacetojson.h mount.h log.h
sessioncontainer.o: logmanipulators.h slog.h ../../winix/templates/locale.h sessioncontainer.o: logmanipulators.h slog.h ../../winix/templates/locale.h
sessionidmanager.o: sessionidmanager.h ../../tito/src/base64.h
sessionidmanager.o: ../../pikotools/space/space.h
sessionidmanager.o: ../../pikotools/textstream/types.h ../../tito/src/aes.h
sessionidmanager.o: ../../pikotools/space/spaceparser.h
sessionidmanager.o: ../../pikotools/space/space.h ../../pikotools/utf8/utf8.h
sessionidmanager.o: ../../pikotools/date/date.h log.h textstream.h
sessionidmanager.o: logmanipulators.h ../../pikotools/textstream/textstream.h
sessionidmanager.o: ../../pikotools/convert/convert.h
sessionidmanager.o: ../../pikotools/convert/inttostr.h
sessionidmanager.o: ../../pikotools/membuffer/membuffer.h
sessionidmanager.o: ../../pikotools/textstream/types.h slog.h cur.h request.h
sessionidmanager.o: requesttypes.h item.h error.h config.h htmlfilter.h
sessionidmanager.o: ../../winix/templates/htmltextstream.h
sessionidmanager.o: ../../winix/core/textstream.h misc.h winix_const.h
sessionidmanager.o: ../../pikotools/space/spacetojson.h session.h user.h
sessionidmanager.o: plugindata.h rebus.h ipban.h mount.h
sessionidmanager.o: ../../winix/templates/locale.h
sessionmanager.o: sessionmanager.h sessioncontainer.h session.h item.h sessionmanager.o: sessionmanager.h sessioncontainer.h session.h item.h
sessionmanager.o: ../../pikotools/space/space.h sessionmanager.o: ../../pikotools/space/space.h
sessionmanager.o: ../../pikotools/textstream/types.h sessionmanager.o: ../../pikotools/textstream/types.h
@ -879,7 +904,9 @@ sessionmanager.o: ../../winix/notify/templatesnotify.h
sessionmanager.o: ../../winix/core/config.h ../../winix/core/users.h sessionmanager.o: ../../winix/core/config.h ../../winix/core/users.h
sessionmanager.o: ugcontainer.h mounts.h mountparser.h crypt.h run.h users.h sessionmanager.o: ugcontainer.h mounts.h mountparser.h crypt.h run.h users.h
sessionmanager.o: groups.h group.h loadavg.h image.h threadmanager.h sessionmanager.o: groups.h group.h loadavg.h image.h threadmanager.h
sessionmanager.o: timezones.h timezone.h sessionparser.h plugin.h pluginmsg.h sessionmanager.o: timezones.h timezone.h sessionidmanager.h
sessionmanager.o: ../../tito/src/base64.h ../../tito/src/aes.h
sessionmanager.o: sessionparser.h plugin.h pluginmsg.h
sessionmanager.o: ../../winix/functions/functions.h sessionmanager.o: ../../winix/functions/functions.h
sessionmanager.o: ../../winix/functions/functionbase.h sessionmanager.o: ../../winix/functions/functionbase.h
sessionmanager.o: ../../winix/core/request.h ../../winix/core/system.h sessionmanager.o: ../../winix/core/request.h ../../winix/core/system.h
@ -1013,7 +1040,8 @@ system.o: ../../winix/functions/template.h ../../winix/functions/tinymce.h
system.o: ../../winix/functions/uname.h ../../winix/functions/upload.h system.o: ../../winix/functions/uname.h ../../winix/functions/upload.h
system.o: ../../winix/functions/uptime.h ../../winix/functions/who.h system.o: ../../winix/functions/uptime.h ../../winix/functions/who.h
system.o: ../../winix/functions/vim.h plugin.h pluginmsg.h sessionmanager.h system.o: ../../winix/functions/vim.h plugin.h pluginmsg.h sessionmanager.h
system.o: sessioncontainer.h ipbancontainer.h system.o: sessioncontainer.h ipbancontainer.h sessionidmanager.h
system.o: ../../tito/src/base64.h ../../tito/src/aes.h
threadmanager.o: threadmanager.h basethread.h synchro.h log.h textstream.h threadmanager.o: threadmanager.h basethread.h synchro.h log.h textstream.h
threadmanager.o: logmanipulators.h ../../pikotools/textstream/textstream.h threadmanager.o: logmanipulators.h ../../pikotools/textstream/textstream.h
threadmanager.o: ../../pikotools/space/space.h threadmanager.o: ../../pikotools/space/space.h
@ -1088,7 +1116,8 @@ users.o: ../../ezc/src/patternparser.h ../../winix/notify/notifythread.h
users.o: ../../winix/core/basethread.h ../../winix/notify/templatesnotify.h users.o: ../../winix/core/basethread.h ../../winix/notify/templatesnotify.h
users.o: ../../winix/core/config.h ../../winix/core/users.h ugcontainer.h users.o: ../../winix/core/config.h ../../winix/core/users.h ugcontainer.h
users.o: mounts.h mountparser.h crypt.h run.h groups.h group.h loadavg.h users.o: mounts.h mountparser.h crypt.h run.h groups.h group.h loadavg.h
users.o: image.h threadmanager.h timezones.h timezone.h plugin.h pluginmsg.h users.o: image.h threadmanager.h timezones.h timezone.h sessionidmanager.h
users.o: ../../tito/src/base64.h ../../tito/src/aes.h plugin.h pluginmsg.h
users.o: ../../winix/functions/functions.h users.o: ../../winix/functions/functions.h
users.o: ../../winix/functions/functionbase.h ../../winix/core/request.h users.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
users.o: ../../winix/core/system.h ../../winix/core/synchro.h users.o: ../../winix/core/system.h ../../winix/core/synchro.h

View File

@ -1 +1 @@
o = acceptbaseparser.o app.o basethread.o bbcodeparser.o compress.o config.o crypt.o dircontainer.o dirs.o groups.o htmlfilter.o httpsimpleparser.o image.o ipbancontainer.o item.o job.o lastcontainer.o loadavg.o lock.o log.o misc.o mount.o mountparser.o mounts.o plugin.o plugindata.o postmultiparser.o rebus.o request.o run.o session.o sessioncontainer.o sessionmanager.o sessionparser.o slog.o synchro.o system.o threadmanager.o timezone.o timezones.o user.o users.o o = acceptbaseparser.o app.o basethread.o bbcodeparser.o compress.o config.o crypt.o dircontainer.o dirs.o groups.o htmlfilter.o httpsimpleparser.o image.o ipbancontainer.o item.o job.o lastcontainer.o loadavg.o lock.o log.o misc.o mount.o mountparser.o mounts.o plugin.o plugindata.o postmultiparser.o rebus.o request.o run.o session.o sessioncontainer.o sessionidmanager.o sessionmanager.o sessionparser.o slog.o synchro.o system.o threadmanager.o timezone.o timezones.o user.o users.o

View File

@ -221,8 +221,10 @@ bool App::Init()
// init notify after templates (it uses locales from templates) // init notify after templates (it uses locales from templates)
system.notify.ReadTemplates(); system.notify.ReadTemplates();
session_manager.InitBanList();
session_manager.InitTmpSession(); session_manager.InitTmpSession();
session_manager.InitBanList();
session_manager.InitCookieEncoding();
session_manager.LoadSessions(); session_manager.LoadSessions();
CreateStaticTree(); CreateStaticTree();
@ -860,25 +862,35 @@ void App::CheckKonqueror()
void App::PrepareSessionCookie() void App::PrepareSessionCookie()
{ {
if( !cur.session || cur.session->id==0 ) if( !cur.session || cur.session->id==0 )
return; return;
if( config.session_cookie_encode )
{
if( !session_manager.EncodeSessionId(cur.session->id, cur.session->id_index, cookie_id_string) )
Toa(cur.session->id, cookie_id_string);
}
else
{
Toa(cur.session->id, cookie_id_string);
}
if( !cur.session->puser || !cur.session->remember_me ) if( !cur.session->puser || !cur.session->remember_me )
{ {
cur.request->AddCookie(config.http_session_id_name, cur.session->id); cur.request->AddCookie(config.http_session_id_name, cookie_id_string);
} }
else else
{ {
PT::Date expires = cur.request->start_time + config.session_remember_max_idle; PT::Date expires = cur.request->start_time + config.session_remember_max_idle;
cur.request->AddCookie(config.http_session_id_name, cur.session->id, expires); cur.request->AddCookie(config.http_session_id_name, cookie_id_string, expires);
} }
} }
bool App::AddHeader(const wchar_t * name, const wchar_t * value) bool App::AddHeader(const wchar_t * name, const wchar_t * value)
{ {
if( !cur.request->out_headers.GetValue(name) ) if( !cur.request->out_headers.GetValue(name) )

View File

@ -155,6 +155,7 @@ private:
std::wstring html_filtered; std::wstring html_filtered;
std::string output_8bit; std::string output_8bit;
BinaryPage compressed_output; BinaryPage compressed_output;
std::wstring cookie_id_string;
bool InitFCGI(char * sock, char * sock_user, char * sock_group); bool InitFCGI(char * sock, char * sock_user, char * sock_group);
bool InitFCGIChmodChownSocket(char * sock, char * sock_user, char * sock_group); bool InitFCGIChmodChownSocket(char * sock, char * sock_user, char * sock_group);

View File

@ -216,6 +216,11 @@ void Config::AssignValues(bool stdout_is_closed)
session_remember_max_idle = Int(L"session_remember_max_idle", 16070400); // 3 months session_remember_max_idle = Int(L"session_remember_max_idle", 16070400); // 3 months
session_file = Text(L"session_file"); session_file = Text(L"session_file");
session_max = Size(L"session_max", 1000000); session_max = Size(L"session_max", 1000000);
session_cookie_encode = Bool(L"session_cookie_encode", false);
session_keys_file = Text(L"session_keys_file");
session_allow_index_difference = Size(L"session_allow_index_difference", 8);
session_index_time_increment = Long(L"session_index_time_increment", 30);
session_key_renew_time = Size(L"session_key_renew_time", 172800); // 2 days
compression = Bool(L"compression", true); compression = Bool(L"compression", true);
compression_page_min_size = Size(L"compression_page_min_size", 512); compression_page_min_size = Size(L"compression_page_min_size", 512);
@ -323,6 +328,12 @@ void Config::SetAdditionalVariables()
locale_files.push_back(L"en"); locale_files.push_back(L"en");
upload_group_int = GetGroupId(upload_group); upload_group_int = GetGroupId(upload_group);
if( session_cookie_encode && session_keys_file.empty() )
session_cookie_encode = false;
if( session_index_time_increment < 0 )
session_index_time_increment = 0;
} }

View File

@ -203,6 +203,36 @@ public:
// default: 1000000 (one milion) // default: 1000000 (one milion)
size_t session_max; size_t session_max;
// whether or not we should encode the session cookie
// (we have a special algorithm)
// default: false
bool session_cookie_encode;
// if session_cookie_encode is true then you should provide
// a file where AES keys will be stored
std::wstring session_keys_file;
// each session has an index -- an unsigned int value
// this value is sent in the cookie string (is encoded)
// and is incremented when session_index_time_increment time is passed since the last incrementing
// if a client sent the cookie back the difference between
// current index and the index in the cookie should be less than or equal to session_allow_index_difference
// default: 8
size_t session_allow_index_difference;
// the time which should pass after the session index is incremented
// default: 30
// (session_allow_index_difference + 1) * session_index_time_increment should be less than a time
// load of a page and all elements on it such as images (of course it depends on client's download too)
time_t session_index_time_increment;
// time in seconds after a new AES key pair should be generated
// we have 256 pairs of keys so this time multiplied by 256 should not be less than
// the max time of a session (session_remember_max_idle),
// by default: 256 * 2 days = 512 days = 1.4 year > 3 months (session_remember_max_idle)
// default: 172800 = 2 days (max: 2678400 = 1 month, min: 10)
size_t session_key_renew_time;
// allow the winix output to be compressed // allow the winix output to be compressed
// default: true // default: true
bool compression; bool compression;

View File

@ -201,8 +201,12 @@ void LoadAvg::StartRequest()
void LoadAvg::StopRequest() void LoadAvg::StopRequest()
{ {
char buf[50];
clock_gettime(CLOCK_REALTIME, &stop_req); clock_gettime(CLOCK_REALTIME, &stop_req);
double dr = (stop_req.tv_sec - start_req.tv_sec); double dr = (stop_req.tv_sec - start_req.tv_sec);
@ -216,7 +220,10 @@ void LoadAvg::StopRequest()
current5.req += 1; current5.req += 1;
current15.req += 1; current15.req += 1;
log << log2 << "LA: request took: " << dr << "s" << logend; sprintf(buf, "%f", dr);
SetNonZeroDigitsAfterComma(buf, 2);
log << log2 << "LA: request took: " << buf << "s" << logend;
was_stop_request = true; was_stop_request = true;
} }

View File

@ -236,6 +236,43 @@ size_t len = sizeof(buffer) / sizeof(wchar_t);
void SetNonZeroDigitsAfterComma(char * str, size_t digits)
{
bool was_comma = false;
bool was_not_zero = false;
size_t zeroes = 0;
size_t not_zeroes = 0;
for(size_t i=0 ; str[i] != 0 ; ++i)
{
if( str[i] == '.' || str[i] == ',' )
{
was_comma = true;
}
else
if( was_comma )
{
if( str[i] == '0' && !was_not_zero )
{
zeroes += 1;
}
else
{
was_not_zero = true;
not_zeroes += 1;
if( not_zeroes >= digits )
{
str[i+1] = 0;
break;
}
}
}
}
}
bool CorrectUrlChar(wchar_t c) bool CorrectUrlChar(wchar_t c)
{ {

View File

@ -214,6 +214,20 @@ void Toa(int value, std::wstring & res, int base = 10, bool clear = true);
void Toa(long value, std::wstring & res, int base = 10, bool clear = true); void Toa(long value, std::wstring & res, int base = 10, bool clear = true);
/*
* this method make sure that there is no more than 'digits' non zero digits
* in the given string
*
*
* samples (if parameter 'digits' is equal to two):
* "0.0001234" -> "0.00012"
* "10" -> "10"
* "123.345" -> "123.34"
* "55.1003" -> "55.10"
*
*/
void SetNonZeroDigitsAfterComma(char * str, size_t digits);
bool CorrectUrlChar(wchar_t c); bool CorrectUrlChar(wchar_t c);
void CorrectUrlDots(std::wstring & url); void CorrectUrlDots(std::wstring & url);

View File

@ -89,18 +89,20 @@ void Session::SetTimesTo(time_t time)
// clear_plugin_data is used when clearing the temporary session // clear_plugin_data is used when clearing the temporary session
void Session::Clear(bool clear_plugin_data) void Session::Clear(bool clear_plugin_data)
{ {
id = 0; id = 0;
puser = 0; id_index = 0;
rebus_item = 0; id_index_changed = 0;
rebus_checked = false; puser = 0;
remember_me = false; rebus_item = 0;
new_session = true; rebus_checked = false;
spam_score = 0; remember_me = false;
remove_me = false; new_session = true;
spam_score = 0;
remove_me = false;
start_time = 0; start_time = 0;
last_time = 0; last_time = 0;
last_time_get = 0; last_time_get = 0;
start_date.Clear(); start_date.Clear();
last_date.Clear(); last_date.Clear();

View File

@ -67,6 +67,13 @@ struct Session
// 0 - means that there is a temporary session // 0 - means that there is a temporary session
long id; long id;
// a session index
// incremented each time a request to this session is made
unsigned int id_index;
// the last time when id_index was incremented
time_t id_index_changed;
// true if the session was created now // true if the session was created now
bool new_session; bool new_session;

561
core/sessionidmanager.cpp Normal file
View File

@ -0,0 +1,561 @@
/*
* This file is a part of Winix
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2014, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#include <cstdlib>
#include <sys/types.h>
#include <unistd.h>
#include "sessionidmanager.h"
#include "space/spaceparser.h"
#include "utf8/utf8.h"
#include "date/date.h"
#include "log.h"
#include "misc.h"
namespace Winix
{
SessionIdManager::SessionIdManager()
{
algorithm_type = 'a';
key_tab_size = 256;
key_index = 0;
last_key_generated = 0;
key_renew_time = 60;
was_inited = false;
}
void SessionIdManager::Init(const std::wstring & keys_file)
{
was_inited = true;
key_tab1.resize(key_tab_size);
key_tab2.resize(key_tab_size);
aes1.resize(key_tab_size);
aes2.resize(key_tab_size);
key_file_name = keys_file;
ReadKeysFromFile(key_file_name);
}
void SessionIdManager::SetKeyRenewTime(time_t renew_time)
{
key_renew_time = renew_time;
if( key_renew_time < 10 )
key_renew_time = 10;
time_t one_month = 60 * 60 * 24 * 31;
if( key_renew_time > one_month )
key_renew_time = one_month;
}
void SessionIdManager::ReadKey(const wchar_t * name, PT::Space & space, std::vector<std::string> & dest_key)
{
std::vector<std::wstring> keys;
std::string key_ascii, key_base64_decoded;
space.ListText(name, keys);
for(size_t i=0 ; i<key_tab_size ; ++i)
dest_key[i].clear();
for(size_t i=0 ; i<keys.size() && i<key_tab_size ; ++i)
{
dest_key[i].clear();
if( PT::WideToUTF8(keys[i], key_ascii) )
{
if( base64.Decode(key_ascii, key_base64_decoded) )
{
size_t len = key_base64_decoded.size();
if( len == 16 || len == 24 || len == 32 )
{
dest_key[i] = key_base64_decoded;
}
}
}
}
}
void SessionIdManager::InitializeAesKeys(size_t index)
{
if( !aes1[index].Key((unsigned char*)key_tab1[index].c_str(), key_tab1[index].size()) )
log << log1 << "SIM: I cannot initialize a key1, size of the key: " << key_tab1[index].size() << logend;
if( !aes2[index].Key((unsigned char*)key_tab2[index].c_str(), key_tab2[index].size()) )
log << log1 << "SIM: I cannot initialize a key2, size of the key: " << key_tab2[index].size() << logend;
}
void SessionIdManager::InitializeAesKeys()
{
for(size_t i=0 ; i < key_tab_size ; ++i)
{
if( AreKeysCorrect(i) )
InitializeAesKeys(i);
}
}
bool SessionIdManager::ReadKeysFromFile(const wchar_t * file)
{
PT::Space space;
PT::SpaceParser parser;
PT::Date date;
parser.SetSpace(space);
PT::SpaceParser::Status status = parser.Parse(file);
if( status == PT::SpaceParser::ok )
{
key_index = space.Size(L"key_index");
if( key_index >= 256 )
key_index = 0;
if( date.Parse(space.Text(L"last_key_generated", L"0")) )
last_key_generated = date.ToTime();
ReadKey(L"key_tab1", space, key_tab1);
ReadKey(L"key_tab2", space, key_tab2);
InitializeAesKeys();
}
else
{
log << log1 << "SIM: I cannot read the session keys from: " << file << logend;
}
return status == PT::SpaceParser::ok;
}
bool SessionIdManager::ReadKeysFromFile(const std::wstring & file)
{
return ReadKeysFromFile(file.c_str());
}
void SessionIdManager::SaveKeysToFile(std::vector<std::string> & keys)
{
out_file << "(\n";
for(size_t i=0 ; i<keys.size() ; ++i)
{
base64.Encode(keys[i], tmp_key_base64_encoded);
out_file << '\"' << tmp_key_base64_encoded << "\"\n";
}
out_file << ")\n\n";
tmp_key_base64_encoded.clear();
}
bool SessionIdManager::SaveKeysToFile(const wchar_t * file)
{
PT::Date date = last_key_generated;
PT::WideToUTF8(file, file_name_ascii);
out_file.clear();
out_file.open(file_name_ascii, std::ios_base::binary | std::ios_base::out);
if( out_file )
{
out_file << "key_index = " << key_index << "\n";
out_file << "last_key_generated = \"";
date.Serialize(out_file);
out_file << "\"\n\n";
out_file << "key_tab1 = ";
SaveKeysToFile(key_tab1);
out_file << "key_tab2 = ";
SaveKeysToFile(key_tab2);
out_file.flush();
}
out_file.close();
file_name_ascii.clear();
SetPriv(file, 0600);
return !out_file.fail();
}
bool SessionIdManager::SaveKeysToFile(const std::wstring & file)
{
return SaveKeysToFile(file.c_str());
}
bool SessionIdManager::AreKeysCorrect(size_t index)
{
if( index >= 256 )
return false;
size_t len = key_tab1[index].size();
if( len != 16 && len != 24 && len != 32 )
return false;
len = key_tab2[index].size();
if( len != 16 && len != 24 && len != 32 )
return false;
return true;
}
/*
* IMPROVE ME
* we need a better algorithm
*/
void SessionIdManager::GenerateKey(std::string & key, time_t cur_utc_time)
{
unsigned int pid = (unsigned int)getpid();
unsigned int t = (unsigned int)cur_utc_time;
key.clear();
for(size_t i=0 ; i<16 ; ++i)
{
unsigned int r = rand();
unsigned int v = r ^ pid ^ t;
v = ((v >> 24) ^ (v >> 16) ^ (v >> 8) ^ v) & 0xff;
key.push_back((unsigned char)v);
}
}
void SessionIdManager::GenerateKeys(size_t index, time_t cur_utc_time)
{
GenerateKey(key_tab1[index], cur_utc_time);
GenerateKey(key_tab2[index], cur_utc_time);
InitializeAesKeys(index);
last_key_generated = cur_utc_time;
if( !SaveKeysToFile(key_file_name) )
log << log2 << "SIM: I cannot save the session keys to: " << key_file_name << logend;
}
void SessionIdManager::CheckKeys(time_t cur_utc_time)
{
if( !AreKeysCorrect(key_index) )
{
log << log1 << "SIM: keys with index: " << key_index << " are incorrect, generating new keys" << logend;
GenerateKeys(key_index, cur_utc_time);
}
else
if( last_key_generated + key_renew_time < cur_utc_time )
{
key_index += 1;
if( key_index >= key_tab_size )
key_index = 0;
log << log2 << "SIM: generating new AES keys with index: " << key_index << logend;
GenerateKeys(key_index, cur_utc_time);
}
}
void SessionIdManager::RandPadding(size_t & pad_top_size, char & pad_top_value,
size_t & pad_bottom_size, char & pad_bottom_value)
{
pad_top_size = (std::rand() * 5) / RAND_MAX; // multiply by 5 (not by 4)
if( pad_top_size > 4 )
pad_top_size = 4;
pad_top_size += 5; // now pad_top_size is from <5;9>
pad_top_value = (char)std::rand();
pad_bottom_size = 14 - pad_top_size; // pad_bottom_size is from <5;9> too
pad_bottom_value = (char)std::rand();
}
void SessionIdManager::AppendSum(std::string & str)
{
int s = 0;
for(size_t i=0 ; i<str.size() ; ++i)
s += (int)(unsigned char)str[i];
str += (unsigned char)s;
}
void SessionIdManager::AppendXor(std::string & str)
{
int s = 0;
for(size_t i=0 ; i<str.size() ; ++i)
s ^= (int)(unsigned char)str[i];
str += (unsigned char)s;
}
void SessionIdManager::CopyString(const std::string & in, std::wstring & out)
{
out.clear();
if( out.capacity() < in.size() )
out.reserve(in.size());
for(size_t i=0 ; i<in.size() ; ++i)
out += in[i];
}
void SessionIdManager::CopyString(const std::wstring & in, std::string & out)
{
out.clear();
if( out.capacity() < in.size() )
out.reserve(in.size());
for(size_t i=0 ; i<in.size() ; ++i)
out += in[i];
}
bool SessionIdManager::Encode(std::string & str)
{
if( str.size() != 34 )
return false;
if( !aes1[key_index].Encode((unsigned char*)string_token.c_str()+2, 16) )
{
log << log1 << "SIM: I cannot AES encode the first part of the token" << logend;
return false;
}
if( !aes2[key_index].Encode((unsigned char*)string_token.c_str()+16+2, 16) )
{
log << log1 << "SIM: I cannot AES encode the second part of the token" << logend;
return false;
}
return true;
}
bool SessionIdManager::EncodeToken(size_t id, unsigned int index, time_t cur_utc_time, std::wstring & token)
{
size_t pad_top_size;
size_t pad_bottom_size;
char pad_top_value;
char pad_bottom_value;
string_token.clear();
string_token.reserve(50);
if( !was_inited )
return false;
CheckKeys(cur_utc_time);
RandPadding(pad_top_size, pad_top_value, pad_bottom_size, pad_bottom_value);
string_token += algorithm_type;
string_token += (unsigned char)key_index;
string_token += pad_top_value;
string_token += pad_bottom_value;
string_token += (unsigned char)pad_top_size;
string_token += (unsigned char)pad_bottom_size;
string_token.append(pad_top_size, pad_top_value);
Append(string_token, id);
Append(string_token, index);
string_token.append(pad_bottom_size, pad_bottom_value);
AppendSum(string_token);
AppendXor(string_token);
if( !Encode(string_token) )
return false;
base64.Encode(string_token, string_token_base64);
CopyString(string_token_base64, token);
return true;
}
bool SessionIdManager::IsPaddingCorrect(const char * str, size_t len, char val)
{
if( len < 5 || len > 9 )
return false;
for(size_t i=0 ; i<len ; ++i)
if( str[i] != val )
return false;
return true;
}
bool SessionIdManager::DecodeAES(const char * str, size_t key)
{
if( !aes1[key].Decode((unsigned char*)str, 16) )
{
log << log1 << "SIM: I cannot AES decode the first block" << logend;
return false;
}
if( !aes2[key].Decode((unsigned char*)str + 16, 16) )
{
log << log1 << "SIM: I cannot AES decode the second block" << logend;
return false;
}
return true;
}
bool SessionIdManager::CheckControlSums(const char * str)
{
char old_sum = *(str++);
char old_xor = *(str++);
string_token.erase(string_token.size()-2);
AppendSum(string_token);
AppendXor(string_token);
if( old_sum != string_token[string_token.size()-2] ||
old_xor != string_token[string_token.size()-1] )
return false;
return true;
}
bool SessionIdManager::DecodeTokenA(size_t & id, unsigned int & index)
{
size_t pad_top_size;
size_t pad_bottom_size;
char pad_top_value;
char pad_bottom_value;
const char * str = string_token.c_str() + 1;
size_t key = (unsigned char)(*str);
str += 1;
if( !DecodeAES(str, key) )
return false;
pad_top_value = *(str++);
pad_bottom_value = *(str++);
pad_top_size = (unsigned char)*(str++);
pad_bottom_size = (unsigned char)*(str++);
if( pad_bottom_size != 14 - pad_top_size )
return false;
if( !IsPaddingCorrect(str, pad_top_size, pad_top_value) )
return false;
str += pad_top_size;
Read(str, id);
str += 8; // sizeof(id), it's better to use constant '8' instead of sizeof() operator
// because at the beginning we are making a test whether the string size is equal to 34
// (in the future sizeof(size_t) can be different from 8)
Read(str, index);
str += 4; // sizeof(index)
if( !IsPaddingCorrect(str, pad_bottom_size, pad_bottom_value) )
return false;
str += pad_bottom_size;
return CheckControlSums(str);
}
bool SessionIdManager::DecodeToken(const std::wstring & token, size_t & id, unsigned int & index)
{
if( !was_inited )
return false;
CopyString(token, string_token_base64);
if( !base64.Decode(string_token_base64, string_token) )
return false;
if( string_token.size() != 34 )
return false;
if( string_token[0] == 'a' )
return DecodeTokenA(id, index);
return false;
}
} // namespace Winix

199
core/sessionidmanager.h Normal file
View File

@ -0,0 +1,199 @@
/*
* This file is a part of Winix
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2014, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef headerfile_winix_core_sessionidmanager
#define headerfile_winix_core_sessionidmanager
#include <string>
#include <vector>
#include <ctime>
#include <fstream>
#include "base64.h"
#include "space/space.h"
#include "aes.h"
namespace Winix
{
/*
* this class is used to encode/decode the session cookie
* in which there is a session id and a session's index
*
* session index is incremented each time a request comes to this session
*
* format of the encoded token:
* 1 byte - algorithm type, currently only one algorithm: 'a'
* 1 byte - an AES keys pair index
* ---- below everything is encoded by AES (two 128 bits blocks, first block
* is encoded by the first key and the second block is encoded by the second key) ------
* 1 byte - top padding value
* 1 byte - bottom padding value
* 1 byte - top padding size
* 1 byte - bottom padding size
* 5-9 bytes - top padding
* 8 bytes - the session id
* 4 bytes - the session index
* 5-9 bytes - bottom padding (bottom_padding_size = 14 - top_padding_size)
* 1 byte - the sum of all previous bytes
* 1 byte - the xor of all previous bytes (with the previous sum too)
*
* and at the end everyting is base64 encoded
*
*
*/
class SessionIdManager
{
public:
SessionIdManager();
/*
* initialization
* this method takes about 1MB memory more (for AES key expansions)
* if you do not need the session cookie to be enrypted then don't call this method
*
*/
void Init(const std::wstring & keys_file);
/*
* how often a new AES key pairs should be generated
*/
void SetKeyRenewTime(time_t renew_time);
/*
* encode/decode the session cookie
* make sure the Init() method is called first
*/
bool EncodeToken(size_t id, unsigned int index, time_t cur_utc_time, std::wstring & token);
bool DecodeToken(const std::wstring & token, size_t & id, unsigned int & index);
private:
bool was_inited;
char algorithm_type;
std::string string_token, string_token_base64;
std::vector<std::string> key_tab1, key_tab2;
size_t key_index;
time_t last_key_generated;
time_t key_renew_time;
Tito::Base64 base64;
size_t key_tab_size;
std::ofstream out_file;
std::string tmp_key_base64_encoded;
std::wstring key_file_name;
std::string file_name_ascii;
std::vector<Tito::AES> aes1, aes2;
bool ReadKeysFromFile(const wchar_t * file);
bool ReadKeysFromFile(const std::wstring & file);
bool SaveKeysToFile(const wchar_t * file);
bool SaveKeysToFile(const std::wstring & file);
void ReadKey(const wchar_t * name, PT::Space & space, std::vector<std::string> & dest_key);
bool AreKeysCorrect(size_t index);
void GenerateKeys(size_t index, time_t cur_utc_time);
void CheckKeys(time_t cur_utc_time);
void GenerateKey(std::string & key, time_t cur_utc_time);
void SaveKeysToFile(std::vector<std::string> & keys);
void InitializeAesKeys();
void RandPadding(size_t & pad_top_size, char & pad_top_value, size_t & pad_bottom_size, char & pad_bottom_value);
void AppendSum(std::string & str);
void AppendXor(std::string & str);
void CopyString(const std::string & in, std::wstring & out);
void CopyString(const std::wstring & in, std::string & out);
bool Encode(std::string & str);
bool DecodeTokenA(size_t & id, unsigned int & index);
bool IsPaddingCorrect(const char * str, size_t len, char val);
bool CheckControlSums(const char * str);
void InitializeAesKeys(size_t index);
bool DecodeAES(const char * str, size_t key);
template<typename Value>
void Append(std::string & str, Value val);
template<typename Value>
void Read(const char * str, Value & val);
};
template<typename Value>
void SessionIdManager::Append(std::string & str, Value val)
{
int move = sizeof(Value) * 8 - 8;
int v;
do
{
if( move > 0 )
v = ((val >> move) & 0xff);
else
v = val & 0xff;
str += (unsigned char)v;
move -= 8;
}
while( move >= 0 );
}
template<typename Value>
void SessionIdManager::Read(const char * str, Value & val)
{
val = 0;
for(size_t i=0 ; i<sizeof(Value) ; ++i)
{
val = val << 8;
val = val | (unsigned char)str[i];
}
}
} // namespace Winix
#endif

View File

@ -33,6 +33,7 @@
*/ */
#include <sys/stat.h> #include <sys/stat.h>
#include <limits>
#include "sessionmanager.h" #include "sessionmanager.h"
#include "request.h" #include "request.h"
#include "log.h" #include "log.h"
@ -85,12 +86,26 @@ void SessionManager::SetLastContainer(LastContainer * plast_container)
} }
void SessionManager::InitBanList() void SessionManager::InitBanList()
{ {
ban_tab.SetMaxSize(config->ban_list_soft_max_size, config->ban_list_max_size); ban_tab.SetMaxSize(config->ban_list_soft_max_size, config->ban_list_max_size);
} }
void SessionManager::InitCookieEncoding()
{
if( config->session_cookie_encode && !config->session_keys_file.empty() )
session_id_manager.Init(config->session_keys_file);
session_id_manager.SetKeyRenewTime(config->session_key_renew_time);
}
size_t SessionManager::Size() size_t SessionManager::Size()
{ {
return session_tab.Size(); return session_tab.Size();
@ -106,6 +121,11 @@ return true;
} }
bool SessionManager::EncodeSessionId(long id, unsigned int index, std::wstring & str)
{
return session_id_manager.EncodeToken((size_t)id, index, cur->request->start_time, str);
}
long SessionManager::CreateSessionId() long SessionManager::CreateSessionId()
{ {
@ -162,13 +182,14 @@ SessionContainer::Iterator i = session_tab.End();
session = &(*i); session = &(*i);
session->new_session = true; session->new_session = true;
session->SetTimesTo(cur->request->start_time); session->SetTimesTo(cur->request->start_time);
session->id_index = (unsigned int)session->id;
session->id_index += std::rand();
log << log2 << "SM: created a new session: " << session->id << logend; log << log2 << "SM: created a new session: " << session->id << logend;
} }
else else
{ {
// there is a problem with generating a new session id // there is a problem with generating a new session id
// we do not set a session cookie
log << log1 << "SM: cannot create a session id (temporary used: with id 0)" << logend; log << log1 << "SM: cannot create a session id (temporary used: with id 0)" << logend;
SetTemporarySession(); SetTemporarySession();
} }
@ -184,36 +205,111 @@ void SessionManager::SetTemporarySession()
} }
unsigned int SessionManager::SetSessionCalcDifference(Session & ses, unsigned int index)
bool SessionManager::SetSessionFromCookie(const std::wstring & cookie)
{ {
long id = Tol(cookie.c_str()); unsigned int difference;
if( index > ses.id_index )
difference = std::numeric_limits<unsigned int>::max() - index + ses.id_index + 1;
else
difference = ses.id_index - index;
return difference;
}
void SessionManager::SetSessionPutLogInfo(Session & ses, bool has_index, unsigned int difference)
{
log << log2 << "SM: session: " << ses.id;
if( has_index )
log << ", index difference: " << (size_t)difference;
if( ses.puser )
log << log2 << ", user: " << ses.puser->name << ", id: " << ses.puser->id;
log << log2 << logend;
}
bool SessionManager::SetSessionFromCookie(long id, bool has_index, unsigned int index)
{
unsigned int difference = 0;
SessionContainer::Iterator s = session_tab.FindById(id); SessionContainer::Iterator s = session_tab.FindById(id);
if( s == session_tab.End() || s->remove_me ) if( s == session_tab.End() )
{
log << log3 << "SM: there is no a session with id: " << id << logend;
return false; return false;
}
if( s->remove_me )
{
log << log3 << "SM: session: " << id << " is marked for removing" << logend;
return false;
}
if( has_index )
{
difference = SetSessionCalcDifference(*s, index);
if( (size_t)difference > config->session_allow_index_difference )
{
log << log2 << "SM: an incorrect session index for session: " << id
<< ", index difference: " << (size_t)difference << logend;
return false;
}
}
// that session is in the table // that session is in the table
session = &(*s); session = &(*s);
session->new_session = false; session->new_session = false;
session->last_time = cur->request->start_time; session->last_time = cur->request->start_time;
session->last_date = cur->request->start_time; session->last_date = cur->request->start_date;
if( session->id_index_changed + config->session_index_time_increment < cur->request->start_time )
{
session->id_index += 1;
session->id_index_changed = cur->request->start_time;
}
if( cur->request->method == Request::get ) if( cur->request->method == Request::get )
session->last_time_get = cur->request->start_time; session->last_time_get = cur->request->start_time;
log << log2 << "SM: session: " << session->id; SetSessionPutLogInfo(*session, has_index, difference);
if( session->puser )
log << log2 << ", user: " << session->puser->name << ", id: " << session->puser->id;
log << log2 << logend;
return true; return true;
} }
bool SessionManager::SetSessionFromCookie(const std::wstring & cookie)
{
if( config->session_cookie_encode )
{
size_t id;
unsigned int index;
if( !session_id_manager.DecodeToken(cookie, id, index) )
{
log << log2 << "SM: an incorrect cookie string was sent" << logend;
return false;
}
return SetSessionFromCookie((long)id, true, index);
}
else
{
long id = Tol(cookie.c_str());
return SetSessionFromCookie(id, false, 0);
}
}
void SessionManager::SetSession() void SessionManager::SetSession()
{ {
current_ip_ban = ban_tab.FindIP(cur->request->ip); current_ip_ban = ban_tab.FindIP(cur->request->ip);
@ -426,7 +522,8 @@ char file_path[WINIX_OS_PATH_SIZE];
if( i->id != 0 && i->puser && !i->remove_me ) if( i->id != 0 && i->puser && !i->remove_me )
{ {
file << i->id << ' ' << i->puser->id << ' ' << i->remember_me << ' '; file << i->id << ' ' << i->puser->id << ' ' << i->remember_me << ' ';
file << (long)i->start_time << ' ' << (long)i->last_time << std::endl; file << (long)i->start_time << ' ' << (long)i->last_time << ' ';
file << i->id_index << std::endl;
++len; ++len;
} }

View File

@ -46,6 +46,7 @@
#include "system.h" #include "system.h"
#include "synchro.h" #include "synchro.h"
#include "basethread.h" #include "basethread.h"
#include "sessionidmanager.h"
@ -73,8 +74,10 @@ public:
void DeleteSessions(); // deleting all sessions void DeleteSessions(); // deleting all sessions
bool ChangeSessionId(long old_id); bool ChangeSessionId(long old_id);
void InitBanList();
void InitTmpSession(); void InitTmpSession();
void InitBanList();
void InitCookieEncoding();
void UninitTmpSession(); void UninitTmpSession();
Session * GetTmpSession(); Session * GetTmpSession();
@ -95,6 +98,10 @@ public:
void RemoveIPBan(int ip); void RemoveIPBan(int ip);
void ClearIPBanList(); void ClearIPBanList();
bool EncodeSessionId(long id, unsigned int index, std::wstring & str);
private: private:
Config * config; Config * config;
@ -114,12 +121,18 @@ private:
// session with id 0 // session with id 0
Session temporary_session; Session temporary_session;
SessionIdManager session_id_manager;
bool IsSession(long s); bool IsSession(long s);
long CreateSessionId(); long CreateSessionId();
void CreateSession(); void CreateSession();
bool SetSessionFromCookie(long id, bool has_index, unsigned int index);
bool SetSessionFromCookie(const std::wstring & cookie); bool SetSessionFromCookie(const std::wstring & cookie);
void SetTemporarySession(); void SetTemporarySession();
unsigned int SetSessionCalcDifference(Session & ses, unsigned int index);
void SetSessionPutLogInfo(Session & ses, bool has_index, unsigned int difference);
// second thread // second thread
int deleted; int deleted;

View File

@ -129,6 +129,7 @@ void SessionParser::MakeSession(long id, long user_id, SessionContainer & contai
i->remember_me = ReadLong(); i->remember_me = ReadLong();
i->start_time = ReadLong(); i->start_time = ReadLong();
i->last_time = ReadLong(); i->last_time = ReadLong();
i->id_index = ReadLong();
i->start_date = i->start_time; i->start_date = i->start_time;
i->last_date = i->last_time; i->last_date = i->last_time;
// !! IMPROVE ME we do not save last_time_get // !! IMPROVE ME we do not save last_time_get

View File

@ -109,7 +109,8 @@ adduser.o: ../../winix/core/pluginmsg.h ../../winix/core/system.h
adduser.o: ../../winix/core/sessionmanager.h adduser.o: ../../winix/core/sessionmanager.h
adduser.o: ../../winix/core/sessioncontainer.h adduser.o: ../../winix/core/sessioncontainer.h
adduser.o: ../../winix/core/ipbancontainer.h adduser.o: ../../winix/core/ipbancontainer.h
adduser.o: ../../winix/functions/functions.h adduser.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
adduser.o: ../../tito/src/aes.h ../../winix/functions/functions.h
adduser.o: ../../winix/templates/templates.h adduser.o: ../../winix/templates/templates.h
adduser.o: ../../winix/templates/patterncacher.h adduser.o: ../../winix/templates/patterncacher.h
adduser.o: ../../winix/templates/indexpatterns.h adduser.o: ../../winix/templates/indexpatterns.h
@ -365,8 +366,10 @@ cp.o: ../../winix/core/timezones.h ../../winix/core/synchro.h
cp.o: ../../winix/core/misc.h ../../winix/core/plugin.h cp.o: ../../winix/core/misc.h ../../winix/core/plugin.h
cp.o: ../../winix/core/pluginmsg.h ../../winix/core/system.h cp.o: ../../winix/core/pluginmsg.h ../../winix/core/system.h
cp.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h cp.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
cp.o: ../../winix/core/ipbancontainer.h ../../winix/functions/functions.h cp.o: ../../winix/core/ipbancontainer.h ../../winix/core/sessionidmanager.h
cp.o: ../../winix/templates/templates.h ../../winix/templates/patterncacher.h cp.o: ../../tito/src/base64.h ../../tito/src/aes.h
cp.o: ../../winix/functions/functions.h ../../winix/templates/templates.h
cp.o: ../../winix/templates/patterncacher.h
cp.o: ../../winix/templates/indexpatterns.h ../../winix/templates/patterns.h cp.o: ../../winix/templates/indexpatterns.h ../../winix/templates/patterns.h
cp.o: ../../winix/templates/changepatterns.h cp.o: ../../winix/templates/changepatterns.h
cp.o: ../../winix/templates/htmltextstream.h cp.o: ../../winix/templates/htmltextstream.h
@ -752,7 +755,8 @@ functions.o: ../../winix/core/pluginmsg.h ../../winix/core/system.h
functions.o: ../../winix/core/sessionmanager.h functions.o: ../../winix/core/sessionmanager.h
functions.o: ../../winix/core/sessioncontainer.h functions.o: ../../winix/core/sessioncontainer.h
functions.o: ../../winix/core/ipbancontainer.h functions.o: ../../winix/core/ipbancontainer.h
functions.o: ../../winix/functions/functions.h functions.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
functions.o: ../../tito/src/aes.h ../../winix/functions/functions.h
functions.o: ../../winix/templates/templates.h functions.o: ../../winix/templates/templates.h
functions.o: ../../winix/templates/patterncacher.h functions.o: ../../winix/templates/patterncacher.h
functions.o: ../../winix/templates/indexpatterns.h functions.o: ../../winix/templates/indexpatterns.h
@ -1313,7 +1317,9 @@ mkdir.o: ../../winix/core/timezones.h ../../winix/core/synchro.h
mkdir.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h mkdir.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
mkdir.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h mkdir.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h
mkdir.o: ../../winix/core/sessioncontainer.h mkdir.o: ../../winix/core/sessioncontainer.h
mkdir.o: ../../winix/core/ipbancontainer.h ../../winix/functions/functions.h mkdir.o: ../../winix/core/ipbancontainer.h
mkdir.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
mkdir.o: ../../tito/src/aes.h ../../winix/functions/functions.h
mkdir.o: ../../winix/templates/templates.h mkdir.o: ../../winix/templates/templates.h
mkdir.o: ../../winix/templates/patterncacher.h mkdir.o: ../../winix/templates/patterncacher.h
mkdir.o: ../../winix/templates/indexpatterns.h mkdir.o: ../../winix/templates/indexpatterns.h
@ -1420,8 +1426,9 @@ mv.o: ../../winix/core/timezones.h ../../winix/core/synchro.h
mv.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h mv.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
mv.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h mv.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h
mv.o: ../../winix/core/sessioncontainer.h ../../winix/core/ipbancontainer.h mv.o: ../../winix/core/sessioncontainer.h ../../winix/core/ipbancontainer.h
mv.o: ../../winix/functions/functions.h ../../winix/templates/templates.h mv.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
mv.o: ../../winix/templates/patterncacher.h mv.o: ../../tito/src/aes.h ../../winix/functions/functions.h
mv.o: ../../winix/templates/templates.h ../../winix/templates/patterncacher.h
mv.o: ../../winix/templates/indexpatterns.h ../../winix/templates/patterns.h mv.o: ../../winix/templates/indexpatterns.h ../../winix/templates/patterns.h
mv.o: ../../winix/templates/changepatterns.h mv.o: ../../winix/templates/changepatterns.h
mv.o: ../../winix/templates/htmltextstream.h mv.o: ../../winix/templates/htmltextstream.h
@ -1838,8 +1845,9 @@ rm.o: ../../winix/core/timezones.h ../../winix/core/synchro.h
rm.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h rm.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
rm.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h rm.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h
rm.o: ../../winix/core/sessioncontainer.h ../../winix/core/ipbancontainer.h rm.o: ../../winix/core/sessioncontainer.h ../../winix/core/ipbancontainer.h
rm.o: ../../winix/functions/functions.h ../../winix/templates/templates.h rm.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
rm.o: ../../winix/templates/patterncacher.h rm.o: ../../tito/src/aes.h ../../winix/functions/functions.h
rm.o: ../../winix/templates/templates.h ../../winix/templates/patterncacher.h
rm.o: ../../winix/templates/indexpatterns.h ../../winix/templates/patterns.h rm.o: ../../winix/templates/indexpatterns.h ../../winix/templates/patterns.h
rm.o: ../../winix/templates/changepatterns.h rm.o: ../../winix/templates/changepatterns.h
rm.o: ../../winix/templates/htmltextstream.h rm.o: ../../winix/templates/htmltextstream.h
@ -1899,7 +1907,9 @@ rmuser.o: ../../winix/core/log.h ../../winix/core/misc.h
rmuser.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h rmuser.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
rmuser.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h rmuser.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h
rmuser.o: ../../winix/core/sessioncontainer.h rmuser.o: ../../winix/core/sessioncontainer.h
rmuser.o: ../../winix/core/ipbancontainer.h ../../winix/functions/functions.h rmuser.o: ../../winix/core/ipbancontainer.h
rmuser.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
rmuser.o: ../../tito/src/aes.h ../../winix/functions/functions.h
rmuser.o: ../../winix/templates/templates.h rmuser.o: ../../winix/templates/templates.h
rmuser.o: ../../winix/templates/patterncacher.h rmuser.o: ../../winix/templates/patterncacher.h
rmuser.o: ../../winix/templates/indexpatterns.h rmuser.o: ../../winix/templates/indexpatterns.h
@ -2007,7 +2017,9 @@ sort.o: ../../winix/core/timezones.h ../../winix/core/synchro.h
sort.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h sort.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
sort.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h sort.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h
sort.o: ../../winix/core/sessioncontainer.h ../../winix/core/ipbancontainer.h sort.o: ../../winix/core/sessioncontainer.h ../../winix/core/ipbancontainer.h
sort.o: ../../winix/functions/functions.h ../../winix/templates/templates.h sort.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
sort.o: ../../tito/src/aes.h ../../winix/functions/functions.h
sort.o: ../../winix/templates/templates.h
sort.o: ../../winix/templates/patterncacher.h sort.o: ../../winix/templates/patterncacher.h
sort.o: ../../winix/templates/indexpatterns.h sort.o: ../../winix/templates/indexpatterns.h
sort.o: ../../winix/templates/patterns.h sort.o: ../../winix/templates/patterns.h
@ -2175,7 +2187,8 @@ subject.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
subject.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h subject.o: ../../winix/core/system.h ../../winix/core/sessionmanager.h
subject.o: ../../winix/core/sessioncontainer.h subject.o: ../../winix/core/sessioncontainer.h
subject.o: ../../winix/core/ipbancontainer.h subject.o: ../../winix/core/ipbancontainer.h
subject.o: ../../winix/functions/functions.h subject.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
subject.o: ../../tito/src/aes.h ../../winix/functions/functions.h
subject.o: ../../winix/templates/templates.h subject.o: ../../winix/templates/templates.h
subject.o: ../../winix/templates/patterncacher.h subject.o: ../../winix/templates/patterncacher.h
subject.o: ../../winix/templates/indexpatterns.h subject.o: ../../winix/templates/indexpatterns.h
@ -2442,7 +2455,9 @@ upload.o: ../../winix/core/misc.h ../../winix/core/plugin.h
upload.o: ../../winix/core/pluginmsg.h ../../winix/core/system.h upload.o: ../../winix/core/pluginmsg.h ../../winix/core/system.h
upload.o: ../../winix/core/sessionmanager.h upload.o: ../../winix/core/sessionmanager.h
upload.o: ../../winix/core/sessioncontainer.h upload.o: ../../winix/core/sessioncontainer.h
upload.o: ../../winix/core/ipbancontainer.h ../../winix/functions/functions.h upload.o: ../../winix/core/ipbancontainer.h
upload.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
upload.o: ../../tito/src/aes.h ../../winix/functions/functions.h
upload.o: ../../winix/templates/templates.h upload.o: ../../winix/templates/templates.h
upload.o: ../../winix/templates/patterncacher.h upload.o: ../../winix/templates/patterncacher.h
upload.o: ../../winix/templates/indexpatterns.h upload.o: ../../winix/templates/indexpatterns.h

View File

@ -45,7 +45,9 @@ main.o: ../../winix/core/group.h ../../winix/core/loadavg.h
main.o: ../../winix/core/image.h ../../winix/core/threadmanager.h main.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
main.o: ../../winix/core/timezones.h ../../winix/core/timezone.h main.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
main.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h main.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
main.o: ../../winix/core/ipbancontainer.h ../../winix/functions/functions.h main.o: ../../winix/core/ipbancontainer.h ../../winix/core/sessionidmanager.h
main.o: ../../tito/src/base64.h ../../tito/src/aes.h
main.o: ../../winix/functions/functions.h
main.o: ../../winix/functions/functionbase.h ../../winix/core/request.h main.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
main.o: ../../winix/core/system.h ../../winix/core/synchro.h main.o: ../../winix/core/system.h ../../winix/core/synchro.h
main.o: ../../winix/functions/functionparser.h ../../winix/core/cur.h main.o: ../../winix/functions/functionparser.h ../../winix/core/cur.h

View File

@ -52,10 +52,11 @@ notify.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
notify.o: ../../winix/core/sessionmanager.h notify.o: ../../winix/core/sessionmanager.h
notify.o: ../../winix/core/sessioncontainer.h notify.o: ../../winix/core/sessioncontainer.h
notify.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h notify.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
notify.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h notify.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
notify.o: ../../winix/core/dirs.h ../../winix/core/plugin.h notify.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
notify.o: ../../winix/core/pluginmsg.h ../../winix/core/sessionmanager.h notify.o: ../../winix/core/request.h ../../winix/core/dirs.h
notify.o: ../../winix/functions/functions.h notify.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
notify.o: ../../winix/core/sessionmanager.h ../../winix/functions/functions.h
notify.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h notify.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h
notify.o: ../../winix/functions/functionparser.h notify.o: ../../winix/functions/functionparser.h
notify.o: ../../winix/functions/account.h ../../winix/functions/adduser.h notify.o: ../../winix/functions/account.h ../../winix/functions/adduser.h
@ -224,5 +225,7 @@ templatesnotify.o: ../../winix/templates/changepatterns.h
templatesnotify.o: ../../winix/core/sessionmanager.h templatesnotify.o: ../../winix/core/sessionmanager.h
templatesnotify.o: ../../winix/core/sessioncontainer.h templatesnotify.o: ../../winix/core/sessioncontainer.h
templatesnotify.o: ../../winix/core/ipbancontainer.h templatesnotify.o: ../../winix/core/ipbancontainer.h
templatesnotify.o: ../../winix/core/lastcontainer.h ../../winix/core/misc.h templatesnotify.o: ../../winix/core/lastcontainer.h
templatesnotify.o: ../../winix/core/winix_const.h templatesnotify.o: ../../winix/core/sessionidmanager.h
templatesnotify.o: ../../tito/src/base64.h ../../tito/src/aes.h
templatesnotify.o: ../../winix/core/misc.h ../../winix/core/winix_const.h

View File

@ -222,7 +222,8 @@ init.o: ../../../winix/core/threadmanager.h ../../../winix/core/timezones.h
init.o: ../../../winix/core/timezone.h ../../../winix/core/sessionmanager.h init.o: ../../../winix/core/timezone.h ../../../winix/core/sessionmanager.h
init.o: ../../../winix/core/sessioncontainer.h init.o: ../../../winix/core/sessioncontainer.h
init.o: ../../../winix/core/ipbancontainer.h init.o: ../../../winix/core/ipbancontainer.h
init.o: ../../../winix/functions/functions.h init.o: ../../../winix/core/sessionidmanager.h ../../../tito/src/base64.h
init.o: ../../../tito/src/aes.h ../../../winix/functions/functions.h
init.o: ../../../winix/functions/functionbase.h ../../../winix/core/request.h init.o: ../../../winix/functions/functionbase.h ../../../winix/core/request.h
init.o: ../../../winix/core/system.h ../../../winix/core/synchro.h init.o: ../../../winix/core/system.h ../../../winix/core/synchro.h
init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h

View File

@ -111,7 +111,8 @@ init.o: ../../../winix/core/plugin.h ../../../winix/core/pluginmsg.h
init.o: ../../../winix/core/system.h ../../../winix/core/sessionmanager.h init.o: ../../../winix/core/system.h ../../../winix/core/sessionmanager.h
init.o: ../../../winix/core/sessioncontainer.h init.o: ../../../winix/core/sessioncontainer.h
init.o: ../../../winix/core/ipbancontainer.h init.o: ../../../winix/core/ipbancontainer.h
init.o: ../../../winix/functions/functions.h init.o: ../../../winix/core/sessionidmanager.h ../../../tito/src/base64.h
init.o: ../../../tito/src/aes.h ../../../winix/functions/functions.h
init.o: ../../../winix/functions/functionbase.h init.o: ../../../winix/functions/functionbase.h
init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h
init.o: ../../../winix/functions/account.h ../../../winix/functions/adduser.h init.o: ../../../winix/functions/account.h ../../../winix/functions/adduser.h
@ -204,6 +205,8 @@ templates.o: ../../../winix/core/pluginmsg.h ../../../winix/core/system.h
templates.o: ../../../winix/core/sessionmanager.h templates.o: ../../../winix/core/sessionmanager.h
templates.o: ../../../winix/core/sessioncontainer.h templates.o: ../../../winix/core/sessioncontainer.h
templates.o: ../../../winix/core/ipbancontainer.h templates.o: ../../../winix/core/ipbancontainer.h
templates.o: ../../../winix/core/sessionidmanager.h
templates.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
templates.o: ../../../winix/functions/functions.h templates.o: ../../../winix/functions/functions.h
templates.o: ../../../winix/functions/functionbase.h templates.o: ../../../winix/functions/functionbase.h
templates.o: ../../../winix/functions/functionparser.h templates.o: ../../../winix/functions/functionparser.h

View File

@ -107,7 +107,8 @@ init.o: ../../../winix/core/threadmanager.h ../../../winix/core/timezones.h
init.o: ../../../winix/core/timezone.h ../../../winix/core/sessionmanager.h init.o: ../../../winix/core/timezone.h ../../../winix/core/sessionmanager.h
init.o: ../../../winix/core/sessioncontainer.h init.o: ../../../winix/core/sessioncontainer.h
init.o: ../../../winix/core/ipbancontainer.h init.o: ../../../winix/core/ipbancontainer.h
init.o: ../../../winix/functions/functions.h init.o: ../../../winix/core/sessionidmanager.h ../../../tito/src/base64.h
init.o: ../../../tito/src/aes.h ../../../winix/functions/functions.h
init.o: ../../../winix/functions/functionbase.h ../../../winix/core/request.h init.o: ../../../winix/functions/functionbase.h ../../../winix/core/request.h
init.o: ../../../winix/core/system.h ../../../winix/core/synchro.h init.o: ../../../winix/core/system.h ../../../winix/core/synchro.h
init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h
@ -205,6 +206,8 @@ templates.o: ../../../winix/core/pluginmsg.h ../../../winix/core/system.h
templates.o: ../../../winix/core/sessionmanager.h templates.o: ../../../winix/core/sessionmanager.h
templates.o: ../../../winix/core/sessioncontainer.h templates.o: ../../../winix/core/sessioncontainer.h
templates.o: ../../../winix/core/ipbancontainer.h templates.o: ../../../winix/core/ipbancontainer.h
templates.o: ../../../winix/core/sessionidmanager.h
templates.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
templates.o: ../../../winix/functions/functions.h templates.o: ../../../winix/functions/functions.h
templates.o: ../../../winix/functions/functionbase.h templates.o: ../../../winix/functions/functionbase.h
templates.o: ../../../winix/core/request.h ../../../winix/core/synchro.h templates.o: ../../../winix/core/request.h ../../../winix/core/synchro.h

View File

@ -91,7 +91,8 @@ init.o: ../../../winix/core/threadmanager.h ../../../winix/core/timezones.h
init.o: ../../../winix/core/timezone.h ../../../winix/core/sessionmanager.h init.o: ../../../winix/core/timezone.h ../../../winix/core/sessionmanager.h
init.o: ../../../winix/core/sessioncontainer.h init.o: ../../../winix/core/sessioncontainer.h
init.o: ../../../winix/core/ipbancontainer.h init.o: ../../../winix/core/ipbancontainer.h
init.o: ../../../winix/functions/functions.h init.o: ../../../winix/core/sessionidmanager.h ../../../tito/src/base64.h
init.o: ../../../tito/src/aes.h ../../../winix/functions/functions.h
init.o: ../../../winix/functions/functionbase.h ../../../winix/core/request.h init.o: ../../../winix/functions/functionbase.h ../../../winix/core/request.h
init.o: ../../../winix/core/system.h ../../../winix/core/synchro.h init.o: ../../../winix/core/system.h ../../../winix/core/synchro.h
init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h
@ -190,6 +191,8 @@ templates.o: ../../../winix/core/timezones.h ../../../winix/core/timezone.h
templates.o: ../../../winix/core/sessionmanager.h templates.o: ../../../winix/core/sessionmanager.h
templates.o: ../../../winix/core/sessioncontainer.h templates.o: ../../../winix/core/sessioncontainer.h
templates.o: ../../../winix/core/ipbancontainer.h templates.o: ../../../winix/core/ipbancontainer.h
templates.o: ../../../winix/core/sessionidmanager.h
templates.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
templates.o: ../../../winix/functions/functions.h templates.o: ../../../winix/functions/functions.h
templates.o: ../../../winix/functions/functionbase.h templates.o: ../../../winix/functions/functionbase.h
templates.o: ../../../winix/core/request.h ../../../winix/core/synchro.h templates.o: ../../../winix/core/request.h ../../../winix/core/synchro.h

View File

@ -54,7 +54,8 @@ init.o: ../../../winix/core/timezones.h ../../../winix/core/timezone.h
init.o: ../../../winix/core/sessionmanager.h init.o: ../../../winix/core/sessionmanager.h
init.o: ../../../winix/core/sessioncontainer.h init.o: ../../../winix/core/sessioncontainer.h
init.o: ../../../winix/core/ipbancontainer.h init.o: ../../../winix/core/ipbancontainer.h
init.o: ../../../winix/functions/functions.h init.o: ../../../winix/core/sessionidmanager.h ../../../tito/src/base64.h
init.o: ../../../tito/src/aes.h ../../../winix/functions/functions.h
init.o: ../../../winix/functions/functionbase.h ../../../winix/core/system.h init.o: ../../../winix/functions/functionbase.h ../../../winix/core/system.h
init.o: ../../../winix/core/synchro.h init.o: ../../../winix/core/synchro.h
init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h
@ -167,6 +168,8 @@ templates.o: ../../../winix/core/timezones.h ../../../winix/core/timezone.h
templates.o: ../../../winix/core/sessionmanager.h templates.o: ../../../winix/core/sessionmanager.h
templates.o: ../../../winix/core/sessioncontainer.h templates.o: ../../../winix/core/sessioncontainer.h
templates.o: ../../../winix/core/ipbancontainer.h templates.o: ../../../winix/core/ipbancontainer.h
templates.o: ../../../winix/core/sessionidmanager.h
templates.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
templates.o: ../../../winix/functions/functions.h templates.o: ../../../winix/functions/functions.h
templates.o: ../../../winix/functions/functionbase.h templates.o: ../../../winix/functions/functionbase.h
templates.o: ../../../winix/core/request.h ../../../winix/core/system.h templates.o: ../../../winix/core/request.h ../../../winix/core/system.h

View File

@ -218,7 +218,8 @@ init.o: pluginmsg.h ../../../winix/core/system.h
init.o: ../../../winix/core/sessionmanager.h init.o: ../../../winix/core/sessionmanager.h
init.o: ../../../winix/core/sessioncontainer.h init.o: ../../../winix/core/sessioncontainer.h
init.o: ../../../winix/core/ipbancontainer.h init.o: ../../../winix/core/ipbancontainer.h
init.o: ../../../winix/functions/functions.h init.o: ../../../winix/core/sessionidmanager.h ../../../tito/src/base64.h
init.o: ../../../tito/src/aes.h ../../../winix/functions/functions.h
init.o: ../../../winix/functions/functionbase.h init.o: ../../../winix/functions/functionbase.h
init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h init.o: ../../../winix/functions/functionparser.h ../../../winix/core/cur.h
init.o: ../../../winix/functions/account.h ../../../winix/functions/adduser.h init.o: ../../../winix/functions/account.h ../../../winix/functions/adduser.h
@ -277,7 +278,8 @@ reply.o: ../../../winix/core/sessioncontainer.h
reply.o: ../../../winix/core/ipbancontainer.h reply.o: ../../../winix/core/ipbancontainer.h
reply.o: ../../../winix/core/lastcontainer.h ../../../winix/core/synchro.h reply.o: ../../../winix/core/lastcontainer.h ../../../winix/core/synchro.h
reply.o: ../../../winix/core/basethread.h reply.o: ../../../winix/core/basethread.h
reply.o: ../../../winix/functions/functions.h reply.o: ../../../winix/core/sessionidmanager.h ../../../tito/src/base64.h
reply.o: ../../../tito/src/aes.h ../../../winix/functions/functions.h
reply.o: ../../../winix/functions/functionbase.h reply.o: ../../../winix/functions/functionbase.h
reply.o: ../../../winix/functions/functionparser.h ../../../winix/db/db.h reply.o: ../../../winix/functions/functionparser.h ../../../winix/db/db.h
reply.o: ../../../winix/db/dbbase.h ../../../winix/db/dbconn.h reply.o: ../../../winix/db/dbbase.h ../../../winix/db/dbconn.h
@ -465,6 +467,8 @@ templates.o: pluginmsg.h ../../../winix/core/system.h
templates.o: ../../../winix/core/sessionmanager.h templates.o: ../../../winix/core/sessionmanager.h
templates.o: ../../../winix/core/sessioncontainer.h templates.o: ../../../winix/core/sessioncontainer.h
templates.o: ../../../winix/core/ipbancontainer.h templates.o: ../../../winix/core/ipbancontainer.h
templates.o: ../../../winix/core/sessionidmanager.h
templates.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
templates.o: ../../../winix/functions/functions.h templates.o: ../../../winix/functions/functions.h
templates.o: ../../../winix/functions/functionbase.h templates.o: ../../../winix/functions/functionbase.h
templates.o: ../../../winix/functions/functionparser.h templates.o: ../../../winix/functions/functionparser.h
@ -567,6 +571,8 @@ threadinfo.o: ../../../winix/core/system.h
threadinfo.o: ../../../winix/core/sessionmanager.h threadinfo.o: ../../../winix/core/sessionmanager.h
threadinfo.o: ../../../winix/core/sessioncontainer.h threadinfo.o: ../../../winix/core/sessioncontainer.h
threadinfo.o: ../../../winix/core/ipbancontainer.h threadinfo.o: ../../../winix/core/ipbancontainer.h
threadinfo.o: ../../../winix/core/sessionidmanager.h
threadinfo.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
threadinfo.o: ../../../winix/functions/functions.h threadinfo.o: ../../../winix/functions/functions.h
threadinfo.o: ../../../winix/functions/functionbase.h threadinfo.o: ../../../winix/functions/functionbase.h
threadinfo.o: ../../../winix/functions/functionparser.h threadinfo.o: ../../../winix/functions/functionparser.h

View File

@ -65,6 +65,8 @@ createticket.o: ../../../winix/core/timezone.h
createticket.o: ../../../winix/core/sessionmanager.h createticket.o: ../../../winix/core/sessionmanager.h
createticket.o: ../../../winix/core/sessioncontainer.h createticket.o: ../../../winix/core/sessioncontainer.h
createticket.o: ../../../winix/core/ipbancontainer.h createticket.o: ../../../winix/core/ipbancontainer.h
createticket.o: ../../../winix/core/sessionidmanager.h
createticket.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
createticket.o: ../../../winix/functions/functions.h createticket.o: ../../../winix/functions/functions.h
createticket.o: ../../../winix/functions/functionbase.h createticket.o: ../../../winix/functions/functionbase.h
createticket.o: ../../../winix/core/request.h ../../../winix/core/system.h createticket.o: ../../../winix/core/request.h ../../../winix/core/system.h
@ -222,6 +224,8 @@ editticket.o: ../../../winix/core/timezones.h
editticket.o: ../../../winix/core/sessionmanager.h editticket.o: ../../../winix/core/sessionmanager.h
editticket.o: ../../../winix/core/sessioncontainer.h editticket.o: ../../../winix/core/sessioncontainer.h
editticket.o: ../../../winix/core/ipbancontainer.h editticket.o: ../../../winix/core/ipbancontainer.h
editticket.o: ../../../winix/core/sessionidmanager.h
editticket.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
editticket.o: ../../../winix/templates/templates.h editticket.o: ../../../winix/templates/templates.h
editticket.o: ../../../winix/templates/patterncacher.h editticket.o: ../../../winix/templates/patterncacher.h
editticket.o: ../../../winix/templates/indexpatterns.h editticket.o: ../../../winix/templates/indexpatterns.h
@ -324,6 +328,8 @@ funticket.o: ../../../winix/core/timezones.h
funticket.o: ../../../winix/core/sessionmanager.h funticket.o: ../../../winix/core/sessionmanager.h
funticket.o: ../../../winix/core/sessioncontainer.h funticket.o: ../../../winix/core/sessioncontainer.h
funticket.o: ../../../winix/core/ipbancontainer.h funticket.o: ../../../winix/core/ipbancontainer.h
funticket.o: ../../../winix/core/sessionidmanager.h
funticket.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
funticket.o: ../../../winix/templates/templates.h funticket.o: ../../../winix/templates/templates.h
funticket.o: ../../../winix/templates/patterncacher.h funticket.o: ../../../winix/templates/patterncacher.h
funticket.o: ../../../winix/templates/indexpatterns.h funticket.o: ../../../winix/templates/indexpatterns.h
@ -412,7 +418,8 @@ init.o: ../../../winix/core/threadmanager.h ../../../winix/core/timezones.h
init.o: ../../../winix/core/sessionmanager.h init.o: ../../../winix/core/sessionmanager.h
init.o: ../../../winix/core/sessioncontainer.h init.o: ../../../winix/core/sessioncontainer.h
init.o: ../../../winix/core/ipbancontainer.h init.o: ../../../winix/core/ipbancontainer.h
init.o: ../../../winix/templates/templates.h init.o: ../../../winix/core/sessionidmanager.h ../../../tito/src/base64.h
init.o: ../../../tito/src/aes.h ../../../winix/templates/templates.h
init.o: ../../../winix/templates/patterncacher.h init.o: ../../../winix/templates/patterncacher.h
init.o: ../../../winix/templates/indexpatterns.h init.o: ../../../winix/templates/indexpatterns.h
init.o: ../../../winix/templates/patterns.h init.o: ../../../winix/templates/patterns.h
@ -532,6 +539,8 @@ showtickets.o: ../../../winix/core/timezones.h
showtickets.o: ../../../winix/core/sessionmanager.h showtickets.o: ../../../winix/core/sessionmanager.h
showtickets.o: ../../../winix/core/sessioncontainer.h showtickets.o: ../../../winix/core/sessioncontainer.h
showtickets.o: ../../../winix/core/ipbancontainer.h showtickets.o: ../../../winix/core/ipbancontainer.h
showtickets.o: ../../../winix/core/sessionidmanager.h
showtickets.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
showtickets.o: ../../../winix/templates/templates.h showtickets.o: ../../../winix/templates/templates.h
showtickets.o: ../../../winix/templates/patterncacher.h showtickets.o: ../../../winix/templates/patterncacher.h
showtickets.o: ../../../winix/templates/indexpatterns.h showtickets.o: ../../../winix/templates/indexpatterns.h
@ -637,6 +646,8 @@ templates.o: ../../../winix/core/timezones.h
templates.o: ../../../winix/core/sessionmanager.h templates.o: ../../../winix/core/sessionmanager.h
templates.o: ../../../winix/core/sessioncontainer.h templates.o: ../../../winix/core/sessioncontainer.h
templates.o: ../../../winix/core/ipbancontainer.h templates.o: ../../../winix/core/ipbancontainer.h
templates.o: ../../../winix/core/sessionidmanager.h
templates.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
templates.o: ../../../winix/templates/templates.h templates.o: ../../../winix/templates/templates.h
templates.o: ../../../winix/templates/patterncacher.h templates.o: ../../../winix/templates/patterncacher.h
templates.o: ../../../winix/templates/indexpatterns.h templates.o: ../../../winix/templates/indexpatterns.h
@ -749,6 +760,8 @@ ticketinfo.o: ../../../winix/core/timezones.h
ticketinfo.o: ../../../winix/core/sessionmanager.h ticketinfo.o: ../../../winix/core/sessionmanager.h
ticketinfo.o: ../../../winix/core/sessioncontainer.h ticketinfo.o: ../../../winix/core/sessioncontainer.h
ticketinfo.o: ../../../winix/core/ipbancontainer.h ticketinfo.o: ../../../winix/core/ipbancontainer.h
ticketinfo.o: ../../../winix/core/sessionidmanager.h
ticketinfo.o: ../../../tito/src/base64.h ../../../tito/src/aes.h
ticketinfo.o: ../../../winix/templates/templates.h ticketinfo.o: ../../../winix/templates/templates.h
ticketinfo.o: ../../../winix/templates/patterncacher.h ticketinfo.o: ../../../winix/templates/patterncacher.h
ticketinfo.o: ../../../winix/templates/indexpatterns.h ticketinfo.o: ../../../winix/templates/indexpatterns.h

View File

@ -49,7 +49,9 @@ adduser.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
adduser.o: ../../winix/core/sessionmanager.h adduser.o: ../../winix/core/sessionmanager.h
adduser.o: ../../winix/core/sessioncontainer.h adduser.o: ../../winix/core/sessioncontainer.h
adduser.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h adduser.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
adduser.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h adduser.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
adduser.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
adduser.o: ../../winix/core/request.h
changepatterns.o: changepatterns.h patterns.h locale.h changepatterns.o: changepatterns.h patterns.h locale.h
changepatterns.o: ../../pikotools/space/spaceparser.h changepatterns.o: ../../pikotools/space/spaceparser.h
changepatterns.o: ../../pikotools/space/space.h changepatterns.o: ../../pikotools/space/space.h
@ -114,7 +116,8 @@ config.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
config.o: ../../winix/core/sessionmanager.h config.o: ../../winix/core/sessionmanager.h
config.o: ../../winix/core/sessioncontainer.h config.o: ../../winix/core/sessioncontainer.h
config.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h config.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
config.o: ../../winix/core/htmlfilter.h config.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
config.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
dir.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h dir.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
dir.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h dir.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
dir.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h dir.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -160,31 +163,32 @@ dir.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
dir.o: ../../winix/core/timezones.h ../../winix/core/timezone.h dir.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
dir.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h dir.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
dir.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h dir.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
dir.o: ../../winix/core/htmlfilter.h ../../winix/core/misc.h dir.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
dir.o: ../../winix/core/winix_const.h ../../winix/functions/functions.h dir.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
dir.o: ../../winix/functions/functionbase.h ../../winix/core/request.h dir.o: ../../winix/core/misc.h ../../winix/core/winix_const.h
dir.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h dir.o: ../../winix/functions/functions.h ../../winix/functions/functionbase.h
dir.o: ../../winix/functions/account.h ../../winix/functions/adduser.h dir.o: ../../winix/core/request.h ../../winix/core/synchro.h
dir.o: ../../winix/functions/cat.h ../../winix/functions/chmod.h dir.o: ../../winix/functions/functionparser.h ../../winix/functions/account.h
dir.o: ../../winix/functions/privchanger.h ../../winix/functions/chown.h dir.o: ../../winix/functions/adduser.h ../../winix/functions/cat.h
dir.o: ../../winix/functions/ckeditor.h ../../winix/functions/cp.h dir.o: ../../winix/functions/chmod.h ../../winix/functions/privchanger.h
dir.o: ../../winix/functions/default.h ../../winix/functions/download.h dir.o: ../../winix/functions/chown.h ../../winix/functions/ckeditor.h
dir.o: ../../winix/functions/emacs.h ../../winix/functions/env.h dir.o: ../../winix/functions/cp.h ../../winix/functions/default.h
dir.o: ../../winix/functions/imgcrop.h ../../winix/functions/last.h dir.o: ../../winix/functions/download.h ../../winix/functions/emacs.h
dir.o: ../../winix/functions/login.h ../../winix/functions/logout.h dir.o: ../../winix/functions/env.h ../../winix/functions/imgcrop.h
dir.o: ../../winix/functions/ln.h ../../winix/functions/ls.h dir.o: ../../winix/functions/last.h ../../winix/functions/login.h
dir.o: ../../winix/functions/man.h ../../winix/functions/meta.h dir.o: ../../winix/functions/logout.h ../../winix/functions/ln.h
dir.o: ../../winix/functions/mkdir.h ../../winix/functions/mv.h dir.o: ../../winix/functions/ls.h ../../winix/functions/man.h
dir.o: ../../winix/functions/nicedit.h ../../winix/functions/node.h dir.o: ../../winix/functions/meta.h ../../winix/functions/mkdir.h
dir.o: ../../winix/functions/passwd.h ../../winix/functions/priv.h dir.o: ../../winix/functions/mv.h ../../winix/functions/nicedit.h
dir.o: ../../winix/functions/pw.h ../../winix/functions/reload.h dir.o: ../../winix/functions/node.h ../../winix/functions/passwd.h
dir.o: ../../winix/functions/rm.h ../../winix/functions/rmuser.h dir.o: ../../winix/functions/priv.h ../../winix/functions/pw.h
dir.o: ../../winix/functions/sort.h ../../winix/functions/specialdefault.h dir.o: ../../winix/functions/reload.h ../../winix/functions/rm.h
dir.o: ../../winix/functions/stat.h ../../winix/functions/subject.h dir.o: ../../winix/functions/rmuser.h ../../winix/functions/sort.h
dir.o: ../../winix/functions/template.h ../../winix/functions/tinymce.h dir.o: ../../winix/functions/specialdefault.h ../../winix/functions/stat.h
dir.o: ../../winix/functions/uname.h ../../winix/functions/upload.h dir.o: ../../winix/functions/subject.h ../../winix/functions/template.h
dir.o: ../../winix/functions/uptime.h ../../winix/functions/who.h dir.o: ../../winix/functions/tinymce.h ../../winix/functions/uname.h
dir.o: ../../winix/functions/vim.h miscspace.h dir.o: ../../winix/functions/upload.h ../../winix/functions/uptime.h
dir.o: ../../winix/functions/who.h ../../winix/functions/vim.h miscspace.h
doc.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h doc.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
doc.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h doc.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
doc.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h doc.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -230,8 +234,10 @@ doc.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
doc.o: ../../winix/core/timezones.h ../../winix/core/timezone.h doc.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
doc.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h doc.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
doc.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h doc.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
doc.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h doc.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
doc.o: ../../winix/core/misc.h ../../winix/core/winix_const.h doc.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
doc.o: ../../winix/core/request.h ../../winix/core/misc.h
doc.o: ../../winix/core/winix_const.h
env.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h env.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
env.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h env.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
env.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h env.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -277,31 +283,32 @@ env.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
env.o: ../../winix/core/timezones.h ../../winix/core/timezone.h env.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
env.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h env.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
env.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h env.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
env.o: ../../winix/core/htmlfilter.h ../../winix/core/misc.h env.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
env.o: ../../winix/core/winix_const.h ../../winix/functions/functions.h env.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
env.o: ../../winix/functions/functionbase.h ../../winix/core/request.h env.o: ../../winix/core/misc.h ../../winix/core/winix_const.h
env.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h env.o: ../../winix/functions/functions.h ../../winix/functions/functionbase.h
env.o: ../../winix/functions/account.h ../../winix/functions/adduser.h env.o: ../../winix/core/request.h ../../winix/core/synchro.h
env.o: ../../winix/functions/cat.h ../../winix/functions/chmod.h env.o: ../../winix/functions/functionparser.h ../../winix/functions/account.h
env.o: ../../winix/functions/privchanger.h ../../winix/functions/chown.h env.o: ../../winix/functions/adduser.h ../../winix/functions/cat.h
env.o: ../../winix/functions/ckeditor.h ../../winix/functions/cp.h env.o: ../../winix/functions/chmod.h ../../winix/functions/privchanger.h
env.o: ../../winix/functions/default.h ../../winix/functions/download.h env.o: ../../winix/functions/chown.h ../../winix/functions/ckeditor.h
env.o: ../../winix/functions/emacs.h ../../winix/functions/env.h env.o: ../../winix/functions/cp.h ../../winix/functions/default.h
env.o: ../../winix/functions/imgcrop.h ../../winix/functions/last.h env.o: ../../winix/functions/download.h ../../winix/functions/emacs.h
env.o: ../../winix/functions/login.h ../../winix/functions/logout.h env.o: ../../winix/functions/env.h ../../winix/functions/imgcrop.h
env.o: ../../winix/functions/ln.h ../../winix/functions/ls.h env.o: ../../winix/functions/last.h ../../winix/functions/login.h
env.o: ../../winix/functions/man.h ../../winix/functions/meta.h env.o: ../../winix/functions/logout.h ../../winix/functions/ln.h
env.o: ../../winix/functions/mkdir.h ../../winix/functions/mv.h env.o: ../../winix/functions/ls.h ../../winix/functions/man.h
env.o: ../../winix/functions/nicedit.h ../../winix/functions/node.h env.o: ../../winix/functions/meta.h ../../winix/functions/mkdir.h
env.o: ../../winix/functions/passwd.h ../../winix/functions/priv.h env.o: ../../winix/functions/mv.h ../../winix/functions/nicedit.h
env.o: ../../winix/functions/pw.h ../../winix/functions/reload.h env.o: ../../winix/functions/node.h ../../winix/functions/passwd.h
env.o: ../../winix/functions/rm.h ../../winix/functions/rmuser.h env.o: ../../winix/functions/priv.h ../../winix/functions/pw.h
env.o: ../../winix/functions/sort.h ../../winix/functions/specialdefault.h env.o: ../../winix/functions/reload.h ../../winix/functions/rm.h
env.o: ../../winix/functions/stat.h ../../winix/functions/subject.h env.o: ../../winix/functions/rmuser.h ../../winix/functions/sort.h
env.o: ../../winix/functions/template.h ../../winix/functions/tinymce.h env.o: ../../winix/functions/specialdefault.h ../../winix/functions/stat.h
env.o: ../../winix/functions/uname.h ../../winix/functions/upload.h env.o: ../../winix/functions/subject.h ../../winix/functions/template.h
env.o: ../../winix/functions/uptime.h ../../winix/functions/who.h env.o: ../../winix/functions/tinymce.h ../../winix/functions/uname.h
env.o: ../../winix/functions/vim.h env.o: ../../winix/functions/upload.h ../../winix/functions/uptime.h
env.o: ../../winix/functions/who.h ../../winix/functions/vim.h
filters.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h filters.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
filters.o: ../../ezc/src/blocks.h ../../ezc/src/item.h filters.o: ../../ezc/src/blocks.h ../../ezc/src/item.h
filters.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h filters.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h
@ -351,8 +358,9 @@ filters.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
filters.o: ../../winix/core/sessionmanager.h filters.o: ../../winix/core/sessionmanager.h
filters.o: ../../winix/core/sessioncontainer.h filters.o: ../../winix/core/sessioncontainer.h
filters.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h filters.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
filters.o: ../../winix/core/htmlfilter.h ../../winix/core/misc.h filters.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
filters.o: ../../winix/core/winix_const.h filters.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
filters.o: ../../winix/core/misc.h ../../winix/core/winix_const.h
generic.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h generic.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
generic.o: ../../ezc/src/blocks.h ../../ezc/src/item.h generic.o: ../../ezc/src/blocks.h ../../ezc/src/item.h
generic.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h generic.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h
@ -402,8 +410,10 @@ generic.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
generic.o: ../../winix/core/sessionmanager.h generic.o: ../../winix/core/sessionmanager.h
generic.o: ../../winix/core/sessioncontainer.h generic.o: ../../winix/core/sessioncontainer.h
generic.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h generic.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
generic.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h generic.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
generic.o: ../../winix/core/misc.h ../../winix/core/winix_const.h generic.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
generic.o: ../../winix/core/request.h ../../winix/core/misc.h
generic.o: ../../winix/core/winix_const.h
htmltextstream.o: htmltextstream.h ../../winix/core/textstream.h misc.h htmltextstream.o: htmltextstream.h ../../winix/core/textstream.h misc.h
htmltextstream.o: localefilter.h locale.h ../../pikotools/space/spaceparser.h htmltextstream.o: localefilter.h locale.h ../../pikotools/space/spaceparser.h
htmltextstream.o: ../../pikotools/space/space.h htmltextstream.o: ../../pikotools/space/space.h
@ -486,8 +496,10 @@ insert.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
insert.o: ../../winix/core/sessionmanager.h insert.o: ../../winix/core/sessionmanager.h
insert.o: ../../winix/core/sessioncontainer.h insert.o: ../../winix/core/sessioncontainer.h
insert.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h insert.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
insert.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h insert.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
insert.o: ../../winix/core/misc.h ../../winix/core/winix_const.h insert.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
insert.o: ../../winix/core/request.h ../../winix/core/misc.h
insert.o: ../../winix/core/winix_const.h
ipban.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h ipban.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
ipban.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h ipban.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
ipban.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h ipban.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -535,9 +547,10 @@ ipban.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
ipban.o: ../../winix/core/sessionmanager.h ipban.o: ../../winix/core/sessionmanager.h
ipban.o: ../../winix/core/sessioncontainer.h ipban.o: ../../winix/core/sessioncontainer.h
ipban.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h ipban.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
ipban.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h ipban.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
ipban.o: ../../winix/core/misc.h ../../winix/core/winix_const.h ipban.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
ipban.o: ../../winix/functions/functions.h ipban.o: ../../winix/core/request.h ../../winix/core/misc.h
ipban.o: ../../winix/core/winix_const.h ../../winix/functions/functions.h
ipban.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h ipban.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h
ipban.o: ../../winix/functions/functionparser.h ipban.o: ../../winix/functions/functionparser.h
ipban.o: ../../winix/functions/account.h ../../winix/functions/adduser.h ipban.o: ../../winix/functions/account.h ../../winix/functions/adduser.h
@ -606,9 +619,11 @@ item.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
item.o: ../../winix/core/timezones.h ../../winix/core/timezone.h item.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
item.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h item.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
item.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h item.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
item.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h item.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
item.o: ../../winix/core/misc.h ../../winix/core/winix_const.h item.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
item.o: ../../winix/core/bbcodeparser.h miscspace.h item.o: ../../winix/core/request.h ../../winix/core/misc.h
item.o: ../../winix/core/winix_const.h ../../winix/core/bbcodeparser.h
item.o: miscspace.h
last.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h last.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
last.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h last.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
last.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h last.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -654,8 +669,10 @@ last.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
last.o: ../../winix/core/timezones.h ../../winix/core/timezone.h last.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
last.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h last.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
last.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h last.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
last.o: ../../winix/core/htmlfilter.h ../core/lastcontainer.h last.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
last.o: ../core/request.h ../core/misc.h ../../winix/core/winix_const.h last.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
last.o: ../core/lastcontainer.h ../core/request.h ../core/misc.h
last.o: ../../winix/core/winix_const.h
locale.o: locale.h ../../pikotools/space/spaceparser.h locale.o: locale.h ../../pikotools/space/spaceparser.h
locale.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h locale.o: ../../pikotools/space/space.h ../../pikotools/textstream/types.h
locale.o: ../../pikotools/textstream/textstream.h locale.o: ../../pikotools/textstream/textstream.h
@ -733,7 +750,9 @@ login.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
login.o: ../../winix/core/sessionmanager.h login.o: ../../winix/core/sessionmanager.h
login.o: ../../winix/core/sessioncontainer.h login.o: ../../winix/core/sessioncontainer.h
login.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h login.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
login.o: ../../winix/core/htmlfilter.h ../../winix/functions/functions.h login.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
login.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
login.o: ../../winix/functions/functions.h
login.o: ../../winix/functions/functionbase.h ../../winix/core/request.h login.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
login.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h login.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h
login.o: ../../winix/functions/account.h ../../winix/functions/adduser.h login.o: ../../winix/functions/account.h ../../winix/functions/adduser.h
@ -802,7 +821,9 @@ ls.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
ls.o: ../../winix/core/timezones.h ../../winix/core/timezone.h ls.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
ls.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h ls.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
ls.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h ls.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
ls.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h ls.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
ls.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
ls.o: ../../winix/core/request.h
man.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h man.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
man.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h man.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
man.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h man.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -848,31 +869,32 @@ man.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
man.o: ../../winix/core/timezones.h ../../winix/core/timezone.h man.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
man.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h man.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
man.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h man.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
man.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h man.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
man.o: ../../winix/core/misc.h ../../winix/core/winix_const.h man.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
man.o: ../../winix/functions/functions.h ../../winix/functions/functionbase.h man.o: ../../winix/core/request.h ../../winix/core/misc.h
man.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h man.o: ../../winix/core/winix_const.h ../../winix/functions/functions.h
man.o: ../../winix/functions/account.h ../../winix/functions/adduser.h man.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h
man.o: ../../winix/functions/cat.h ../../winix/functions/chmod.h man.o: ../../winix/functions/functionparser.h ../../winix/functions/account.h
man.o: ../../winix/functions/privchanger.h ../../winix/functions/chown.h man.o: ../../winix/functions/adduser.h ../../winix/functions/cat.h
man.o: ../../winix/functions/ckeditor.h ../../winix/functions/cp.h man.o: ../../winix/functions/chmod.h ../../winix/functions/privchanger.h
man.o: ../../winix/functions/default.h ../../winix/functions/download.h man.o: ../../winix/functions/chown.h ../../winix/functions/ckeditor.h
man.o: ../../winix/functions/emacs.h ../../winix/functions/env.h man.o: ../../winix/functions/cp.h ../../winix/functions/default.h
man.o: ../../winix/functions/imgcrop.h ../../winix/functions/last.h man.o: ../../winix/functions/download.h ../../winix/functions/emacs.h
man.o: ../../winix/functions/login.h ../../winix/functions/logout.h man.o: ../../winix/functions/env.h ../../winix/functions/imgcrop.h
man.o: ../../winix/functions/ln.h ../../winix/functions/ls.h man.o: ../../winix/functions/last.h ../../winix/functions/login.h
man.o: ../../winix/functions/man.h ../../winix/functions/meta.h man.o: ../../winix/functions/logout.h ../../winix/functions/ln.h
man.o: ../../winix/functions/mkdir.h ../../winix/functions/mv.h man.o: ../../winix/functions/ls.h ../../winix/functions/man.h
man.o: ../../winix/functions/nicedit.h ../../winix/functions/node.h man.o: ../../winix/functions/meta.h ../../winix/functions/mkdir.h
man.o: ../../winix/functions/passwd.h ../../winix/functions/priv.h man.o: ../../winix/functions/mv.h ../../winix/functions/nicedit.h
man.o: ../../winix/functions/pw.h ../../winix/functions/reload.h man.o: ../../winix/functions/node.h ../../winix/functions/passwd.h
man.o: ../../winix/functions/rm.h ../../winix/functions/rmuser.h man.o: ../../winix/functions/priv.h ../../winix/functions/pw.h
man.o: ../../winix/functions/sort.h ../../winix/functions/specialdefault.h man.o: ../../winix/functions/reload.h ../../winix/functions/rm.h
man.o: ../../winix/functions/stat.h ../../winix/functions/subject.h man.o: ../../winix/functions/rmuser.h ../../winix/functions/sort.h
man.o: ../../winix/functions/template.h ../../winix/functions/tinymce.h man.o: ../../winix/functions/specialdefault.h ../../winix/functions/stat.h
man.o: ../../winix/functions/uname.h ../../winix/functions/upload.h man.o: ../../winix/functions/subject.h ../../winix/functions/template.h
man.o: ../../winix/functions/uptime.h ../../winix/functions/who.h man.o: ../../winix/functions/tinymce.h ../../winix/functions/uname.h
man.o: ../../winix/functions/vim.h man.o: ../../winix/functions/upload.h ../../winix/functions/uptime.h
man.o: ../../winix/functions/who.h ../../winix/functions/vim.h
misc.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h misc.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
misc.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h misc.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
misc.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h misc.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -918,8 +940,10 @@ misc.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
misc.o: ../../winix/core/timezones.h ../../winix/core/timezone.h misc.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
misc.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h misc.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
misc.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h misc.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
misc.o: ../../winix/core/htmlfilter.h ../../winix/core/misc.h misc.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
misc.o: ../../winix/core/winix_const.h ../../winix/core/request.h misc.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
misc.o: ../../winix/core/misc.h ../../winix/core/winix_const.h
misc.o: ../../winix/core/request.h
miscspace.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h miscspace.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
miscspace.o: ../../ezc/src/blocks.h ../../ezc/src/item.h miscspace.o: ../../ezc/src/blocks.h ../../ezc/src/item.h
miscspace.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h miscspace.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h
@ -969,7 +993,8 @@ miscspace.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
miscspace.o: ../../winix/core/sessionmanager.h miscspace.o: ../../winix/core/sessionmanager.h
miscspace.o: ../../winix/core/sessioncontainer.h miscspace.o: ../../winix/core/sessioncontainer.h
miscspace.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h miscspace.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
miscspace.o: ../../winix/core/htmlfilter.h miscspace.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
miscspace.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
mount.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h mount.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
mount.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h mount.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
mount.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h mount.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -1017,8 +1042,10 @@ mount.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
mount.o: ../../winix/core/sessionmanager.h mount.o: ../../winix/core/sessionmanager.h
mount.o: ../../winix/core/sessioncontainer.h mount.o: ../../winix/core/sessioncontainer.h
mount.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h mount.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
mount.o: ../../winix/core/htmlfilter.h ../../winix/core/misc.h mount.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
mount.o: ../../winix/core/winix_const.h ../../winix/core/mounts.h mount.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
mount.o: ../../winix/core/misc.h ../../winix/core/winix_const.h
mount.o: ../../winix/core/mounts.h
passwd.o: ../../winix/core/request.h templates.h ../../ezc/src/ezc.h passwd.o: ../../winix/core/request.h templates.h ../../ezc/src/ezc.h
passwd.o: ../../ezc/src/generator.h ../../ezc/src/blocks.h passwd.o: ../../ezc/src/generator.h ../../ezc/src/blocks.h
passwd.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h passwd.o: ../../ezc/src/item.h ../../ezc/src/funinfo.h
@ -1068,7 +1095,8 @@ passwd.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
passwd.o: ../../winix/core/sessionmanager.h passwd.o: ../../winix/core/sessionmanager.h
passwd.o: ../../winix/core/sessioncontainer.h passwd.o: ../../winix/core/sessioncontainer.h
passwd.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h passwd.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
passwd.o: ../../winix/core/htmlfilter.h passwd.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
passwd.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
patterncacher.o: patterncacher.h ../../winix/core/item.h patterncacher.o: patterncacher.h ../../winix/core/item.h
patterncacher.o: ../../pikotools/space/space.h ../../pikotools/date/date.h patterncacher.o: ../../pikotools/space/space.h ../../pikotools/date/date.h
patterncacher.o: misc.h localefilter.h locale.h patterncacher.o: misc.h localefilter.h locale.h
@ -1151,9 +1179,10 @@ priv.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
priv.o: ../../winix/core/timezones.h ../../winix/core/timezone.h priv.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
priv.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h priv.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
priv.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h priv.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
priv.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h priv.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
priv.o: ../../winix/core/misc.h ../../winix/core/winix_const.h priv.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
priv.o: ../../winix/functions/functions.h priv.o: ../../winix/core/request.h ../../winix/core/misc.h
priv.o: ../../winix/core/winix_const.h ../../winix/functions/functions.h
priv.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h priv.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h
priv.o: ../../winix/functions/functionparser.h priv.o: ../../winix/functions/functionparser.h
priv.o: ../../winix/functions/account.h ../../winix/functions/adduser.h priv.o: ../../winix/functions/account.h ../../winix/functions/adduser.h
@ -1225,7 +1254,8 @@ rebus.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
rebus.o: ../../winix/core/sessionmanager.h rebus.o: ../../winix/core/sessionmanager.h
rebus.o: ../../winix/core/sessioncontainer.h rebus.o: ../../winix/core/sessioncontainer.h
rebus.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h rebus.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
rebus.o: ../../winix/core/htmlfilter.h rebus.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
rebus.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
slog.o: ../../winix/core/slog.h ../../winix/core/cur.h slog.o: ../../winix/core/slog.h ../../winix/core/cur.h
slog.o: ../../winix/core/logmanipulators.h ../../winix/templates/locale.h slog.o: ../../winix/core/logmanipulators.h ../../winix/templates/locale.h
slog.o: ../../pikotools/textstream/textstream.h ../../pikotools/space/space.h slog.o: ../../pikotools/textstream/textstream.h ../../pikotools/space/space.h
@ -1271,7 +1301,9 @@ slog.o: ../../winix/core/loadavg.h ../../winix/core/image.h
slog.o: ../../winix/core/threadmanager.h ../../winix/core/timezones.h slog.o: ../../winix/core/threadmanager.h ../../winix/core/timezones.h
slog.o: ../../winix/core/timezone.h ../../winix/core/sessionmanager.h slog.o: ../../winix/core/timezone.h ../../winix/core/sessionmanager.h
slog.o: ../../winix/core/sessioncontainer.h ../../winix/core/ipbancontainer.h slog.o: ../../winix/core/sessioncontainer.h ../../winix/core/ipbancontainer.h
slog.o: ../../winix/core/system.h ../../winix/core/htmlfilter.h slog.o: ../../winix/core/system.h ../../winix/core/sessionidmanager.h
slog.o: ../../tito/src/base64.h ../../tito/src/aes.h
slog.o: ../../winix/core/htmlfilter.h
stat.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h stat.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
stat.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h stat.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
stat.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h stat.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -1317,8 +1349,10 @@ stat.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
stat.o: ../../winix/core/timezones.h ../../winix/core/timezone.h stat.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
stat.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h stat.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
stat.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h stat.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
stat.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h stat.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
stat.o: ../../winix/core/misc.h ../../winix/core/winix_const.h stat.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
stat.o: ../../winix/core/request.h ../../winix/core/misc.h
stat.o: ../../winix/core/winix_const.h
sys.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h sys.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
sys.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h sys.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
sys.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h sys.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -1364,32 +1398,34 @@ sys.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
sys.o: ../../winix/core/timezones.h ../../winix/core/timezone.h sys.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
sys.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h sys.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
sys.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h sys.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
sys.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h sys.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
sys.o: ../../winix/core/version.h ../../winix/core/plugin.h sys.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
sys.o: ../../winix/core/pluginmsg.h ../../winix/core/sessionmanager.h sys.o: ../../winix/core/request.h ../../winix/core/version.h
sys.o: ../../winix/functions/functions.h ../../winix/functions/functionbase.h sys.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
sys.o: ../../winix/core/synchro.h ../../winix/functions/functionparser.h sys.o: ../../winix/core/sessionmanager.h ../../winix/functions/functions.h
sys.o: ../../winix/functions/account.h ../../winix/functions/adduser.h sys.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h
sys.o: ../../winix/functions/cat.h ../../winix/functions/chmod.h sys.o: ../../winix/functions/functionparser.h ../../winix/functions/account.h
sys.o: ../../winix/functions/privchanger.h ../../winix/functions/chown.h sys.o: ../../winix/functions/adduser.h ../../winix/functions/cat.h
sys.o: ../../winix/functions/ckeditor.h ../../winix/functions/cp.h sys.o: ../../winix/functions/chmod.h ../../winix/functions/privchanger.h
sys.o: ../../winix/functions/default.h ../../winix/functions/download.h sys.o: ../../winix/functions/chown.h ../../winix/functions/ckeditor.h
sys.o: ../../winix/functions/emacs.h ../../winix/functions/env.h sys.o: ../../winix/functions/cp.h ../../winix/functions/default.h
sys.o: ../../winix/functions/imgcrop.h ../../winix/functions/last.h sys.o: ../../winix/functions/download.h ../../winix/functions/emacs.h
sys.o: ../../winix/functions/login.h ../../winix/functions/logout.h sys.o: ../../winix/functions/env.h ../../winix/functions/imgcrop.h
sys.o: ../../winix/functions/ln.h ../../winix/functions/ls.h sys.o: ../../winix/functions/last.h ../../winix/functions/login.h
sys.o: ../../winix/functions/man.h ../../winix/functions/meta.h sys.o: ../../winix/functions/logout.h ../../winix/functions/ln.h
sys.o: ../../winix/functions/mkdir.h ../../winix/functions/mv.h sys.o: ../../winix/functions/ls.h ../../winix/functions/man.h
sys.o: ../../winix/functions/nicedit.h ../../winix/functions/node.h sys.o: ../../winix/functions/meta.h ../../winix/functions/mkdir.h
sys.o: ../../winix/functions/passwd.h ../../winix/functions/priv.h sys.o: ../../winix/functions/mv.h ../../winix/functions/nicedit.h
sys.o: ../../winix/functions/pw.h ../../winix/functions/reload.h sys.o: ../../winix/functions/node.h ../../winix/functions/passwd.h
sys.o: ../../winix/functions/rm.h ../../winix/functions/rmuser.h sys.o: ../../winix/functions/priv.h ../../winix/functions/pw.h
sys.o: ../../winix/functions/sort.h ../../winix/functions/specialdefault.h sys.o: ../../winix/functions/reload.h ../../winix/functions/rm.h
sys.o: ../../winix/functions/stat.h ../../winix/functions/subject.h sys.o: ../../winix/functions/rmuser.h ../../winix/functions/sort.h
sys.o: ../../winix/functions/template.h ../../winix/functions/tinymce.h sys.o: ../../winix/functions/specialdefault.h ../../winix/functions/stat.h
sys.o: ../../winix/functions/uname.h ../../winix/functions/upload.h sys.o: ../../winix/functions/subject.h ../../winix/functions/template.h
sys.o: ../../winix/functions/uptime.h ../../winix/functions/who.h sys.o: ../../winix/functions/tinymce.h ../../winix/functions/uname.h
sys.o: ../../winix/functions/vim.h ../../winix/templates/templates.h sys.o: ../../winix/functions/upload.h ../../winix/functions/uptime.h
sys.o: ../../winix/functions/who.h ../../winix/functions/vim.h
sys.o: ../../winix/templates/templates.h
template.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h template.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
template.o: ../../ezc/src/blocks.h ../../ezc/src/item.h template.o: ../../ezc/src/blocks.h ../../ezc/src/item.h
template.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h template.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h
@ -1439,8 +1475,9 @@ template.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
template.o: ../../winix/core/sessionmanager.h template.o: ../../winix/core/sessionmanager.h
template.o: ../../winix/core/sessioncontainer.h template.o: ../../winix/core/sessioncontainer.h
template.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h template.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
template.o: ../../winix/core/htmlfilter.h ../../winix/core/misc.h template.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
template.o: ../../winix/core/winix_const.h template.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
template.o: ../../winix/core/misc.h ../../winix/core/winix_const.h
templates.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h templates.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
templates.o: ../../ezc/src/blocks.h ../../ezc/src/item.h templates.o: ../../ezc/src/blocks.h ../../ezc/src/item.h
templates.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h templates.o: ../../ezc/src/funinfo.h ../../ezc/src/functions.h
@ -1490,9 +1527,11 @@ templates.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
templates.o: ../../winix/core/sessionmanager.h templates.o: ../../winix/core/sessionmanager.h
templates.o: ../../winix/core/sessioncontainer.h templates.o: ../../winix/core/sessioncontainer.h
templates.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h templates.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
templates.o: ../../winix/core/htmlfilter.h ../../winix/core/misc.h templates.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
templates.o: ../../winix/core/winix_const.h ../../winix/core/plugin.h templates.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
templates.o: ../../winix/core/pluginmsg.h ../../winix/core/sessionmanager.h templates.o: ../../winix/core/misc.h ../../winix/core/winix_const.h
templates.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h
templates.o: ../../winix/core/sessionmanager.h
templates.o: ../../winix/functions/functions.h templates.o: ../../winix/functions/functions.h
templates.o: ../../winix/functions/functionbase.h ../../winix/core/request.h templates.o: ../../winix/functions/functionbase.h ../../winix/core/request.h
templates.o: ../../winix/core/synchro.h templates.o: ../../winix/core/synchro.h
@ -1583,7 +1622,8 @@ upload.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
upload.o: ../../winix/core/sessionmanager.h upload.o: ../../winix/core/sessionmanager.h
upload.o: ../../winix/core/sessioncontainer.h upload.o: ../../winix/core/sessioncontainer.h
upload.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h upload.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
upload.o: ../../winix/core/htmlfilter.h upload.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
upload.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
uptime.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h uptime.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
uptime.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h uptime.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
uptime.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h uptime.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -1632,7 +1672,8 @@ uptime.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
uptime.o: ../../winix/core/sessionmanager.h uptime.o: ../../winix/core/sessionmanager.h
uptime.o: ../../winix/core/sessioncontainer.h uptime.o: ../../winix/core/sessioncontainer.h
uptime.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h uptime.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
uptime.o: ../../winix/core/htmlfilter.h uptime.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
uptime.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
user.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h user.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
user.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h user.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
user.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h user.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -1678,8 +1719,10 @@ user.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
user.o: ../../winix/core/timezones.h ../../winix/core/timezone.h user.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
user.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h user.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
user.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h user.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
user.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h user.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
user.o: ../../winix/core/misc.h ../../winix/core/winix_const.h user.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
user.o: ../../winix/core/request.h ../../winix/core/misc.h
user.o: ../../winix/core/winix_const.h
who.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h who.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
who.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h who.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
who.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h who.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -1725,8 +1768,10 @@ who.o: ../../winix/core/image.h ../../winix/core/threadmanager.h
who.o: ../../winix/core/timezones.h ../../winix/core/timezone.h who.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
who.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h who.o: ../../winix/core/sessionmanager.h ../../winix/core/sessioncontainer.h
who.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h who.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
who.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h who.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
who.o: ../../winix/core/misc.h ../../winix/core/winix_const.h who.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
who.o: ../../winix/core/request.h ../../winix/core/misc.h
who.o: ../../winix/core/winix_const.h
winix.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h winix.o: templates.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
winix.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h winix.o: ../../ezc/src/blocks.h ../../ezc/src/item.h ../../ezc/src/funinfo.h
winix.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h winix.o: ../../ezc/src/functions.h ../../pikotools/utf8/utf8.h
@ -1774,9 +1819,11 @@ winix.o: ../../winix/core/timezones.h ../../winix/core/timezone.h
winix.o: ../../winix/core/sessionmanager.h winix.o: ../../winix/core/sessionmanager.h
winix.o: ../../winix/core/sessioncontainer.h winix.o: ../../winix/core/sessioncontainer.h
winix.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h winix.o: ../../winix/core/ipbancontainer.h ../../winix/core/system.h
winix.o: ../../winix/core/htmlfilter.h ../../winix/core/request.h winix.o: ../../winix/core/sessionidmanager.h ../../tito/src/base64.h
winix.o: ../../winix/core/plugin.h ../../winix/core/pluginmsg.h winix.o: ../../tito/src/aes.h ../../winix/core/htmlfilter.h
winix.o: ../../winix/core/sessionmanager.h ../../winix/functions/functions.h winix.o: ../../winix/core/request.h ../../winix/core/plugin.h
winix.o: ../../winix/core/pluginmsg.h ../../winix/core/sessionmanager.h
winix.o: ../../winix/functions/functions.h
winix.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h winix.o: ../../winix/functions/functionbase.h ../../winix/core/synchro.h
winix.o: ../../winix/functions/functionparser.h winix.o: ../../winix/functions/functionparser.h
winix.o: ../../winix/functions/account.h ../../winix/functions/adduser.h winix.o: ../../winix/functions/account.h ../../winix/functions/adduser.h