changed: added Cur structure

we have there two pointers: 
 Request * request;
 Session * session;
these are the current request and the current session


the session GC was moved to SessionManager (was in SessionContainer)



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@708 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
Tomasz Sowa 2011-01-23 14:15:30 +00:00
parent 61ac29b2de
commit 915cabdf97
171 changed files with 2822 additions and 2650 deletions

View File

@ -6,48 +6,47 @@ app.o: dircontainer.h ../db/db.h ../db/dbbase.h ../db/dbconn.h
app.o: ../db/dbtextstream.h ../core/textstream.h misc.h ../core/error.h log.h app.o: ../db/dbtextstream.h ../core/textstream.h misc.h ../core/error.h log.h
app.o: textstream.h ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h app.o: textstream.h ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h
app.o: ../core/user.h ../core/group.h ../core/dircontainer.h app.o: ../core/user.h ../core/group.h ../core/dircontainer.h
app.o: ../core/ugcontainer.h request.h requesttypes.h session.h error.h app.o: ../core/ugcontainer.h request.h requesttypes.h error.h
app.o: user.h plugindata.h rebus.h ../templates/htmltextstream.h app.o: ../templates/htmltextstream.h ../notify/notify.h
app.o: ../notify/notify.h ../notify/notifypool.h ../templates/locale.h app.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h
app.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h app.o: ../templates/misc.h ../templates/localefilter.h ../templates/locale.h
app.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h app.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
app.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h app.o: ../../ezc/src/pattern.h ../../ezc/src/functions.h
app.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h app.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h
app.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h app.o: ../templates/htmltextstream.h ../notify/notifythread.h
app.o: ../notify/notifythread.h ../core/basethread.h synchro.h app.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
app.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h app.o: ../core/config.h ../core/users.h user.h ugcontainer.h lastcontainer.h
app.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h users.h app.o: cur.h session.h plugindata.h rebus.h mounts.h mount.h mountparser.h
app.o: groups.h group.h loadavg.h thumb.h basethread.h sessionmanager.h app.o: users.h groups.h group.h loadavg.h thumb.h basethread.h
app.o: sessioncontainer.h ../functions/functions.h app.o: sessionmanager.h sessioncontainer.h ../functions/functions.h
app.o: ../functions/functionbase.h ../core/request.h ../core/system.h app.o: ../functions/functionbase.h ../core/request.h ../core/system.h
app.o: ../core/synchro.h ../functions/functionparser.h ../functions/adduser.h app.o: ../core/synchro.h ../functions/functionparser.h ../core/cur.h
app.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h app.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h
app.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h app.o: ../functions/privchanger.h ../functions/chown.h
app.o: ../functions/default.h ../functions/download.h ../functions/emacs.h app.o: ../functions/ckeditor.h ../functions/cp.h ../functions/default.h
app.o: ../functions/last.h ../functions/login.h ../functions/logout.h app.o: ../functions/download.h ../functions/emacs.h ../functions/last.h
app.o: ../functions/ln.h ../functions/ls.h ../functions/mkdir.h app.o: ../functions/login.h ../functions/logout.h ../functions/ln.h
app.o: ../functions/mv.h ../functions/node.h ../functions/priv.h app.o: ../functions/ls.h ../functions/mkdir.h ../functions/mv.h
app.o: ../functions/reload.h ../functions/rm.h ../functions/run.h app.o: ../functions/node.h ../functions/priv.h ../functions/reload.h
app.o: ../functions/specialdefault.h ../functions/stat.h app.o: ../functions/rm.h ../functions/run.h ../functions/specialdefault.h
app.o: ../functions/subject.h ../functions/template.h ../functions/tinymce.h app.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
app.o: ../functions/uname.h ../functions/upload.h ../functions/uptime.h app.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
app.o: ../functions/who.h ../functions/vim.h ../core/htmlfilter.h app.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
app.o: ../templates/templates.h ../templates/patterncacher.h app.o: ../core/htmlfilter.h ../templates/templates.h
app.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h app.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
app.o: ../core/log.h ../templates/indexpatterns.h ../core/sessionmanager.h app.o: ../core/httpsimpleparser.h ../core/log.h ../templates/indexpatterns.h
app.o: compress.h getparser.h httpsimpleparser.h postparser.h cookieparser.h app.o: ../core/sessionmanager.h compress.h getparser.h httpsimpleparser.h
app.o: postmultiparser.h acceptencodingparser.h acceptbaseparser.h plugin.h app.o: postparser.h cookieparser.h postmultiparser.h acceptencodingparser.h
app.o: pluginmsg.h app.o: acceptbaseparser.h plugin.h pluginmsg.h
basethread.o: basethread.h log.h textstream.h basethread.o: basethread.h log.h textstream.h
bbcodeparser.o: bbcodeparser.h htmlfilter.h bbcodeparser.o: bbcodeparser.h htmlfilter.h
compress.o: compress.h log.h textstream.h compress.o: compress.h log.h textstream.h
config.o: config.h confparser.h htmlfilter.h log.h textstream.h plugin.h config.o: config.h confparser.h htmlfilter.h log.h textstream.h plugin.h
config.o: pluginmsg.h plugindata.h request.h requesttypes.h session.h item.h config.o: pluginmsg.h plugindata.h request.h requesttypes.h item.h error.h
config.o: error.h user.h rebus.h ../templates/htmltextstream.h config.o: ../templates/htmltextstream.h ../core/textstream.h misc.h system.h
config.o: ../core/textstream.h misc.h system.h dirs.h dircontainer.h config.o: dirs.h dircontainer.h ../db/db.h ../db/dbbase.h ../db/dbconn.h
config.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h config.o: ../db/dbtextstream.h ../core/error.h ../db/dbitemquery.h
config.o: ../core/error.h ../db/dbitemquery.h ../core/item.h config.o: ../core/item.h ../db/dbitemcolumns.h ../core/user.h ../core/group.h
config.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h
config.o: ../core/dircontainer.h ../core/ugcontainer.h ../notify/notify.h config.o: ../core/dircontainer.h ../core/ugcontainer.h ../notify/notify.h
config.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h config.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h
config.o: ../templates/misc.h ../templates/localefilter.h config.o: ../templates/misc.h ../templates/localefilter.h
@ -56,21 +55,22 @@ config.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
config.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h config.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h
config.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h config.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
config.o: ../notify/notifythread.h ../core/basethread.h synchro.h config.o: ../notify/notifythread.h ../core/basethread.h synchro.h
config.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h config.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h user.h
config.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h config.o: ugcontainer.h lastcontainer.h cur.h session.h rebus.h mounts.h
config.o: users.h groups.h group.h loadavg.h thumb.h basethread.h config.o: mount.h mountparser.h users.h groups.h group.h loadavg.h thumb.h
config.o: sessionmanager.h sessioncontainer.h ../functions/functions.h config.o: basethread.h sessionmanager.h sessioncontainer.h
config.o: ../functions/functionbase.h ../core/request.h ../core/system.h config.o: ../functions/functions.h ../functions/functionbase.h
config.o: ../core/synchro.h ../functions/functionparser.h config.o: ../core/request.h ../core/system.h ../core/synchro.h
config.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h config.o: ../functions/functionparser.h ../core/cur.h ../functions/adduser.h
config.o: ../functions/privchanger.h ../functions/chown.h config.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h
config.o: ../functions/ckeditor.h ../functions/cp.h ../functions/default.h config.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h
config.o: ../functions/download.h ../functions/emacs.h ../functions/last.h config.o: ../functions/default.h ../functions/download.h ../functions/emacs.h
config.o: ../functions/login.h ../functions/logout.h ../functions/ln.h config.o: ../functions/last.h ../functions/login.h ../functions/logout.h
config.o: ../functions/ls.h ../functions/mkdir.h ../functions/mv.h config.o: ../functions/ln.h ../functions/ls.h ../functions/mkdir.h
config.o: ../functions/node.h ../functions/priv.h ../functions/reload.h config.o: ../functions/mv.h ../functions/node.h ../functions/priv.h
config.o: ../functions/rm.h ../functions/run.h ../functions/specialdefault.h config.o: ../functions/reload.h ../functions/rm.h ../functions/run.h
config.o: ../functions/stat.h ../functions/subject.h ../functions/template.h config.o: ../functions/specialdefault.h ../functions/stat.h
config.o: ../functions/subject.h ../functions/template.h
config.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h config.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
config.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h config.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
config.o: ../core/htmlfilter.h ../templates/templates.h config.o: ../core/htmlfilter.h ../templates/templates.h
@ -84,8 +84,8 @@ dirs.o: ../db/dbtextstream.h ../core/textstream.h misc.h ../core/error.h
dirs.o: log.h textstream.h ../db/dbitemquery.h ../core/item.h dirs.o: log.h textstream.h ../db/dbitemquery.h ../core/item.h
dirs.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h dirs.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h
dirs.o: ../core/dircontainer.h ../core/ugcontainer.h request.h requesttypes.h dirs.o: ../core/dircontainer.h ../core/ugcontainer.h request.h requesttypes.h
dirs.o: session.h error.h user.h plugindata.h rebus.h config.h confparser.h dirs.o: error.h config.h confparser.h htmlfilter.h
dirs.o: htmlfilter.h ../templates/htmltextstream.h ../notify/notify.h dirs.o: ../templates/htmltextstream.h ../notify/notify.h
dirs.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h dirs.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h
dirs.o: ../templates/misc.h ../templates/localefilter.h ../templates/locale.h dirs.o: ../templates/misc.h ../templates/localefilter.h ../templates/locale.h
dirs.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h dirs.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
@ -93,7 +93,8 @@ dirs.o: ../../ezc/src/pattern.h ../../ezc/src/functions.h
dirs.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h dirs.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h
dirs.o: ../templates/htmltextstream.h ../notify/notifythread.h dirs.o: ../templates/htmltextstream.h ../notify/notifythread.h
dirs.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h dirs.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
dirs.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h dirs.o: ../core/config.h ../core/users.h user.h ugcontainer.h lastcontainer.h
dirs.o: cur.h session.h plugindata.h rebus.h
groups.o: groups.h group.h ugcontainer.h ../db/db.h ../db/dbbase.h groups.o: groups.h group.h ugcontainer.h ../db/db.h ../db/dbbase.h
groups.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h misc.h groups.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h misc.h
groups.o: item.h ../core/error.h log.h textstream.h ../db/dbitemquery.h groups.o: item.h ../core/error.h log.h textstream.h ../db/dbitemquery.h
@ -117,7 +118,7 @@ misc.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
misc.o: ../core/textstream.h ../core/error.h ../db/dbitemquery.h misc.o: ../core/textstream.h ../core/error.h ../db/dbitemquery.h
misc.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h misc.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h
misc.o: ../core/dircontainer.h ../core/ugcontainer.h misc.o: ../core/dircontainer.h ../core/ugcontainer.h
misc.o: ../templates/htmltextstream.h ../core/request.h ../core/system.h misc.o: ../templates/htmltextstream.h ../core/cur.h ../core/system.h
misc.o: ../core/sessionmanager.h misc.o: ../core/sessionmanager.h
mount.o: mount.h misc.h item.h mount.o: mount.h misc.h item.h
mountparser.o: mountparser.h mount.h item.h error.h dirs.h dircontainer.h mountparser.o: mountparser.h mount.h item.h error.h dirs.h dircontainer.h
@ -125,11 +126,10 @@ mountparser.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
mountparser.o: ../core/textstream.h misc.h ../core/error.h log.h textstream.h mountparser.o: ../core/textstream.h misc.h ../core/error.h log.h textstream.h
mountparser.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h mountparser.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h
mountparser.o: ../core/user.h ../core/group.h ../core/dircontainer.h mountparser.o: ../core/user.h ../core/group.h ../core/dircontainer.h
mountparser.o: ../core/ugcontainer.h request.h requesttypes.h session.h mountparser.o: ../core/ugcontainer.h request.h requesttypes.h config.h
mountparser.o: user.h plugindata.h rebus.h config.h confparser.h htmlfilter.h mountparser.o: confparser.h htmlfilter.h ../templates/htmltextstream.h
mountparser.o: ../templates/htmltextstream.h ../notify/notify.h mountparser.o: ../notify/notify.h ../notify/notifypool.h
mountparser.o: ../notify/notifypool.h ../templates/locale.h mountparser.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
mountparser.o: ../core/confparser.h ../templates/misc.h
mountparser.o: ../templates/localefilter.h ../templates/locale.h mountparser.o: ../templates/localefilter.h ../templates/locale.h
mountparser.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h mountparser.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
mountparser.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h mountparser.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
@ -137,37 +137,39 @@ mountparser.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h
mountparser.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h mountparser.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
mountparser.o: ../notify/notifythread.h ../core/basethread.h synchro.h mountparser.o: ../notify/notifythread.h ../core/basethread.h synchro.h
mountparser.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h mountparser.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h
mountparser.o: ugcontainer.h lastcontainer.h mountparser.o: user.h ugcontainer.h lastcontainer.h cur.h session.h
mountparser.o: plugindata.h rebus.h
mounts.o: mounts.h mount.h error.h dirs.h item.h dircontainer.h ../db/db.h mounts.o: mounts.h mount.h error.h dirs.h item.h dircontainer.h ../db/db.h
mounts.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h mounts.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h
mounts.o: ../core/textstream.h misc.h ../core/error.h log.h textstream.h mounts.o: ../core/textstream.h misc.h ../core/error.h log.h textstream.h
mounts.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h mounts.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h
mounts.o: ../core/user.h ../core/group.h ../core/dircontainer.h mounts.o: ../core/user.h ../core/group.h ../core/dircontainer.h
mounts.o: ../core/ugcontainer.h request.h requesttypes.h session.h user.h mounts.o: ../core/ugcontainer.h request.h requesttypes.h config.h
mounts.o: plugindata.h rebus.h config.h confparser.h htmlfilter.h mounts.o: confparser.h htmlfilter.h ../templates/htmltextstream.h
mounts.o: ../templates/htmltextstream.h ../notify/notify.h mounts.o: ../notify/notify.h ../notify/notifypool.h ../templates/locale.h
mounts.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h mounts.o: ../core/confparser.h ../templates/misc.h
mounts.o: ../templates/misc.h ../templates/localefilter.h mounts.o: ../templates/localefilter.h ../templates/locale.h
mounts.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h mounts.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
mounts.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h mounts.o: ../../ezc/src/pattern.h ../../ezc/src/functions.h
mounts.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h mounts.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h
mounts.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h mounts.o: ../templates/htmltextstream.h ../notify/notifythread.h
mounts.o: ../notify/notifythread.h ../core/basethread.h synchro.h mounts.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
mounts.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h mounts.o: ../core/config.h ../core/users.h user.h ugcontainer.h
mounts.o: ugcontainer.h lastcontainer.h mountparser.h plugin.h pluginmsg.h mounts.o: lastcontainer.h cur.h session.h plugindata.h rebus.h mountparser.h
mounts.o: system.h users.h groups.h group.h loadavg.h thumb.h basethread.h mounts.o: plugin.h pluginmsg.h system.h users.h groups.h group.h loadavg.h
mounts.o: sessionmanager.h sessioncontainer.h ../functions/functions.h mounts.o: thumb.h basethread.h sessionmanager.h sessioncontainer.h
mounts.o: ../functions/functionbase.h ../core/request.h ../core/system.h mounts.o: ../functions/functions.h ../functions/functionbase.h
mounts.o: ../core/synchro.h ../functions/functionparser.h mounts.o: ../core/request.h ../core/system.h ../core/synchro.h
mounts.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h mounts.o: ../functions/functionparser.h ../core/cur.h ../functions/adduser.h
mounts.o: ../functions/privchanger.h ../functions/chown.h mounts.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h
mounts.o: ../functions/ckeditor.h ../functions/cp.h ../functions/default.h mounts.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h
mounts.o: ../functions/download.h ../functions/emacs.h ../functions/last.h mounts.o: ../functions/default.h ../functions/download.h ../functions/emacs.h
mounts.o: ../functions/login.h ../functions/logout.h ../functions/ln.h mounts.o: ../functions/last.h ../functions/login.h ../functions/logout.h
mounts.o: ../functions/ls.h ../functions/mkdir.h ../functions/mv.h mounts.o: ../functions/ln.h ../functions/ls.h ../functions/mkdir.h
mounts.o: ../functions/node.h ../functions/priv.h ../functions/reload.h mounts.o: ../functions/mv.h ../functions/node.h ../functions/priv.h
mounts.o: ../functions/rm.h ../functions/run.h ../functions/specialdefault.h mounts.o: ../functions/reload.h ../functions/rm.h ../functions/run.h
mounts.o: ../functions/stat.h ../functions/subject.h ../functions/template.h mounts.o: ../functions/specialdefault.h ../functions/stat.h
mounts.o: ../functions/subject.h ../functions/template.h
mounts.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h mounts.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
mounts.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h mounts.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
mounts.o: ../core/htmlfilter.h ../templates/templates.h mounts.o: ../core/htmlfilter.h ../templates/templates.h
@ -175,12 +177,11 @@ mounts.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
mounts.o: ../core/httpsimpleparser.h ../core/log.h mounts.o: ../core/httpsimpleparser.h ../core/log.h
mounts.o: ../templates/indexpatterns.h ../core/sessionmanager.h mounts.o: ../templates/indexpatterns.h ../core/sessionmanager.h
plugin.o: plugin.h pluginmsg.h log.h textstream.h plugindata.h config.h plugin.o: plugin.h pluginmsg.h log.h textstream.h plugindata.h config.h
plugin.o: confparser.h htmlfilter.h request.h requesttypes.h session.h item.h plugin.o: confparser.h htmlfilter.h request.h requesttypes.h item.h error.h
plugin.o: error.h user.h rebus.h ../templates/htmltextstream.h plugin.o: ../templates/htmltextstream.h ../core/textstream.h misc.h system.h
plugin.o: ../core/textstream.h misc.h system.h dirs.h dircontainer.h plugin.o: dirs.h dircontainer.h ../db/db.h ../db/dbbase.h ../db/dbconn.h
plugin.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h plugin.o: ../db/dbtextstream.h ../core/error.h ../db/dbitemquery.h
plugin.o: ../core/error.h ../db/dbitemquery.h ../core/item.h plugin.o: ../core/item.h ../db/dbitemcolumns.h ../core/user.h ../core/group.h
plugin.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h
plugin.o: ../core/dircontainer.h ../core/ugcontainer.h ../notify/notify.h plugin.o: ../core/dircontainer.h ../core/ugcontainer.h ../notify/notify.h
plugin.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h plugin.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h
plugin.o: ../templates/misc.h ../templates/localefilter.h plugin.o: ../templates/misc.h ../templates/localefilter.h
@ -189,21 +190,22 @@ plugin.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
plugin.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h plugin.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h
plugin.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h plugin.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
plugin.o: ../notify/notifythread.h ../core/basethread.h synchro.h plugin.o: ../notify/notifythread.h ../core/basethread.h synchro.h
plugin.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h plugin.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h user.h
plugin.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h plugin.o: ugcontainer.h lastcontainer.h cur.h session.h rebus.h mounts.h
plugin.o: users.h groups.h group.h loadavg.h thumb.h basethread.h plugin.o: mount.h mountparser.h users.h groups.h group.h loadavg.h thumb.h
plugin.o: sessionmanager.h sessioncontainer.h ../functions/functions.h plugin.o: basethread.h sessionmanager.h sessioncontainer.h
plugin.o: ../functions/functionbase.h ../core/request.h ../core/system.h plugin.o: ../functions/functions.h ../functions/functionbase.h
plugin.o: ../core/synchro.h ../functions/functionparser.h plugin.o: ../core/request.h ../core/system.h ../core/synchro.h
plugin.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h plugin.o: ../functions/functionparser.h ../core/cur.h ../functions/adduser.h
plugin.o: ../functions/privchanger.h ../functions/chown.h plugin.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h
plugin.o: ../functions/ckeditor.h ../functions/cp.h ../functions/default.h plugin.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h
plugin.o: ../functions/download.h ../functions/emacs.h ../functions/last.h plugin.o: ../functions/default.h ../functions/download.h ../functions/emacs.h
plugin.o: ../functions/login.h ../functions/logout.h ../functions/ln.h plugin.o: ../functions/last.h ../functions/login.h ../functions/logout.h
plugin.o: ../functions/ls.h ../functions/mkdir.h ../functions/mv.h plugin.o: ../functions/ln.h ../functions/ls.h ../functions/mkdir.h
plugin.o: ../functions/node.h ../functions/priv.h ../functions/reload.h plugin.o: ../functions/mv.h ../functions/node.h ../functions/priv.h
plugin.o: ../functions/rm.h ../functions/run.h ../functions/specialdefault.h plugin.o: ../functions/reload.h ../functions/rm.h ../functions/run.h
plugin.o: ../functions/stat.h ../functions/subject.h ../functions/template.h plugin.o: ../functions/specialdefault.h ../functions/stat.h
plugin.o: ../functions/subject.h ../functions/template.h
plugin.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h plugin.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
plugin.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h plugin.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
plugin.o: ../core/htmlfilter.h ../templates/templates.h plugin.o: ../core/htmlfilter.h ../templates/templates.h
@ -211,15 +213,14 @@ plugin.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
plugin.o: ../core/httpsimpleparser.h ../core/log.h plugin.o: ../core/httpsimpleparser.h ../core/log.h
plugin.o: ../templates/indexpatterns.h ../core/sessionmanager.h plugin.o: ../templates/indexpatterns.h ../core/sessionmanager.h
plugindata.o: plugindata.h plugin.h pluginmsg.h log.h textstream.h config.h plugindata.o: plugindata.h plugin.h pluginmsg.h log.h textstream.h config.h
plugindata.o: confparser.h htmlfilter.h request.h requesttypes.h session.h plugindata.o: confparser.h htmlfilter.h request.h requesttypes.h item.h
plugindata.o: item.h error.h user.h rebus.h ../templates/htmltextstream.h plugindata.o: error.h ../templates/htmltextstream.h ../core/textstream.h
plugindata.o: ../core/textstream.h misc.h system.h dirs.h dircontainer.h plugindata.o: misc.h system.h dirs.h dircontainer.h ../db/db.h ../db/dbbase.h
plugindata.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h plugindata.o: ../db/dbconn.h ../db/dbtextstream.h ../core/error.h
plugindata.o: ../core/error.h ../db/dbitemquery.h ../core/item.h plugindata.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h
plugindata.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h plugindata.o: ../core/user.h ../core/group.h ../core/dircontainer.h
plugindata.o: ../core/dircontainer.h ../core/ugcontainer.h ../notify/notify.h plugindata.o: ../core/ugcontainer.h ../notify/notify.h ../notify/notifypool.h
plugindata.o: ../notify/notifypool.h ../templates/locale.h plugindata.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
plugindata.o: ../core/confparser.h ../templates/misc.h
plugindata.o: ../templates/localefilter.h ../templates/locale.h plugindata.o: ../templates/localefilter.h ../templates/locale.h
plugindata.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h plugindata.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h
plugindata.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h plugindata.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
@ -227,11 +228,12 @@ plugindata.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h
plugindata.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h plugindata.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
plugindata.o: ../notify/notifythread.h ../core/basethread.h synchro.h plugindata.o: ../notify/notifythread.h ../core/basethread.h synchro.h
plugindata.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h plugindata.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h
plugindata.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h plugindata.o: user.h ugcontainer.h lastcontainer.h cur.h session.h rebus.h
plugindata.o: users.h groups.h group.h loadavg.h thumb.h basethread.h plugindata.o: mounts.h mount.h mountparser.h users.h groups.h group.h
plugindata.o: sessionmanager.h sessioncontainer.h ../functions/functions.h plugindata.o: loadavg.h thumb.h basethread.h sessionmanager.h
plugindata.o: sessioncontainer.h ../functions/functions.h
plugindata.o: ../functions/functionbase.h ../core/request.h ../core/system.h plugindata.o: ../functions/functionbase.h ../core/request.h ../core/system.h
plugindata.o: ../core/synchro.h ../functions/functionparser.h plugindata.o: ../core/synchro.h ../functions/functionparser.h ../core/cur.h
plugindata.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h plugindata.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h
plugindata.o: ../functions/privchanger.h ../functions/chown.h plugindata.o: ../functions/privchanger.h ../functions/chown.h
plugindata.o: ../functions/ckeditor.h ../functions/cp.h plugindata.o: ../functions/ckeditor.h ../functions/cp.h
@ -252,38 +254,40 @@ plugindata.o: ../templates/indexpatterns.h ../core/sessionmanager.h
postmultiparser.o: postmultiparser.h error.h requesttypes.h config.h postmultiparser.o: postmultiparser.h error.h requesttypes.h config.h
postmultiparser.o: confparser.h htmlfilter.h log.h textstream.h postmultiparser.o: confparser.h htmlfilter.h log.h textstream.h
postmultiparser.o: ../../ezc/src/utf8.h misc.h item.h postmultiparser.o: ../../ezc/src/utf8.h misc.h item.h
rebus.o: log.h textstream.h rebus.h misc.h item.h request.h requesttypes.h rebus.o: log.h textstream.h rebus.h misc.h item.h cur.h request.h
rebus.o: session.h error.h user.h plugindata.h config.h confparser.h rebus.o: requesttypes.h error.h config.h confparser.h htmlfilter.h
rebus.o: htmlfilter.h ../templates/htmltextstream.h ../core/textstream.h rebus.o: ../templates/htmltextstream.h ../core/textstream.h session.h user.h
request.o: request.h requesttypes.h session.h item.h error.h user.h rebus.o: plugindata.h
request.o: plugindata.h rebus.h config.h confparser.h htmlfilter.h request.o: request.h requesttypes.h item.h error.h config.h confparser.h
request.o: textstream.h ../templates/htmltextstream.h ../core/textstream.h request.o: htmlfilter.h textstream.h ../templates/htmltextstream.h
request.o: misc.h log.h plugin.h pluginmsg.h system.h dirs.h dircontainer.h request.o: ../core/textstream.h misc.h log.h plugin.h pluginmsg.h
request.o: ../db/db.h ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h request.o: plugindata.h system.h dirs.h dircontainer.h ../db/db.h
request.o: ../core/error.h ../db/dbitemquery.h ../core/item.h request.o: ../db/dbbase.h ../db/dbconn.h ../db/dbtextstream.h ../core/error.h
request.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h request.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h
request.o: ../core/dircontainer.h ../core/ugcontainer.h ../notify/notify.h request.o: ../core/user.h ../core/group.h ../core/dircontainer.h
request.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h request.o: ../core/ugcontainer.h ../notify/notify.h ../notify/notifypool.h
request.o: ../templates/misc.h ../templates/localefilter.h request.o: ../templates/locale.h ../core/confparser.h ../templates/misc.h
request.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h request.o: ../templates/localefilter.h ../templates/locale.h
request.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h request.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h
request.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h request.o: ../../ezc/src/pattern.h ../../ezc/src/functions.h
request.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h request.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h
request.o: ../notify/notifythread.h ../core/basethread.h synchro.h request.o: ../templates/htmltextstream.h ../notify/notifythread.h
request.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h request.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
request.o: ugcontainer.h lastcontainer.h mounts.h mount.h mountparser.h request.o: ../core/config.h ../core/users.h user.h ugcontainer.h
request.o: users.h groups.h group.h loadavg.h thumb.h basethread.h request.o: lastcontainer.h cur.h session.h rebus.h mounts.h mount.h
request.o: sessionmanager.h sessioncontainer.h ../functions/functions.h request.o: mountparser.h users.h groups.h group.h loadavg.h thumb.h
request.o: ../functions/functionbase.h ../core/request.h ../core/system.h request.o: basethread.h sessionmanager.h sessioncontainer.h
request.o: ../core/synchro.h ../functions/functionparser.h request.o: ../functions/functions.h ../functions/functionbase.h
request.o: ../functions/adduser.h ../functions/cat.h ../functions/chmod.h request.o: ../core/request.h ../core/system.h ../core/synchro.h
request.o: ../functions/privchanger.h ../functions/chown.h request.o: ../functions/functionparser.h ../core/cur.h ../functions/adduser.h
request.o: ../functions/ckeditor.h ../functions/cp.h ../functions/default.h request.o: ../functions/cat.h ../functions/chmod.h ../functions/privchanger.h
request.o: ../functions/download.h ../functions/emacs.h ../functions/last.h request.o: ../functions/chown.h ../functions/ckeditor.h ../functions/cp.h
request.o: ../functions/login.h ../functions/logout.h ../functions/ln.h request.o: ../functions/default.h ../functions/download.h
request.o: ../functions/ls.h ../functions/mkdir.h ../functions/mv.h request.o: ../functions/emacs.h ../functions/last.h ../functions/login.h
request.o: ../functions/node.h ../functions/priv.h ../functions/reload.h request.o: ../functions/logout.h ../functions/ln.h ../functions/ls.h
request.o: ../functions/rm.h ../functions/run.h ../functions/specialdefault.h request.o: ../functions/mkdir.h ../functions/mv.h ../functions/node.h
request.o: ../functions/priv.h ../functions/reload.h ../functions/rm.h
request.o: ../functions/run.h ../functions/specialdefault.h
request.o: ../functions/stat.h ../functions/subject.h ../functions/template.h request.o: ../functions/stat.h ../functions/subject.h ../functions/template.h
request.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h request.o: ../functions/tinymce.h ../functions/uname.h ../functions/upload.h
request.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h request.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
@ -293,15 +297,15 @@ request.o: ../core/httpsimpleparser.h ../core/log.h
request.o: ../templates/indexpatterns.h ../core/sessionmanager.h request.o: ../templates/indexpatterns.h ../core/sessionmanager.h
session.o: session.h item.h error.h user.h plugindata.h rebus.h misc.h session.o: session.h item.h error.h user.h plugindata.h rebus.h misc.h
sessioncontainer.o: sessioncontainer.h session.h item.h error.h user.h sessioncontainer.o: sessioncontainer.h session.h item.h error.h user.h
sessioncontainer.o: plugindata.h rebus.h lastcontainer.h request.h sessioncontainer.o: plugindata.h rebus.h cur.h request.h requesttypes.h
sessioncontainer.o: requesttypes.h config.h confparser.h htmlfilter.h sessioncontainer.o: config.h confparser.h htmlfilter.h textstream.h
sessioncontainer.o: textstream.h ../templates/htmltextstream.h sessioncontainer.o: ../templates/htmltextstream.h ../core/textstream.h misc.h
sessioncontainer.o: ../core/textstream.h misc.h basethread.h log.h sessioncontainer.o: log.h
sessionmanager.o: sessionmanager.h sessioncontainer.h session.h item.h sessionmanager.o: sessionmanager.h sessioncontainer.h session.h item.h
sessionmanager.o: error.h user.h plugindata.h rebus.h lastcontainer.h sessionmanager.o: error.h user.h plugindata.h rebus.h cur.h request.h
sessionmanager.o: request.h requesttypes.h config.h confparser.h htmlfilter.h sessionmanager.o: requesttypes.h config.h confparser.h htmlfilter.h
sessionmanager.o: textstream.h ../templates/htmltextstream.h sessionmanager.o: textstream.h ../templates/htmltextstream.h
sessionmanager.o: ../core/textstream.h misc.h basethread.h system.h dirs.h sessionmanager.o: ../core/textstream.h misc.h lastcontainer.h system.h dirs.h
sessionmanager.o: dircontainer.h ../db/db.h ../db/dbbase.h ../db/dbconn.h sessionmanager.o: dircontainer.h ../db/db.h ../db/dbbase.h ../db/dbconn.h
sessionmanager.o: ../db/dbtextstream.h ../core/error.h log.h sessionmanager.o: ../db/dbtextstream.h ../core/error.h log.h
sessionmanager.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h sessionmanager.o: ../db/dbitemquery.h ../core/item.h ../db/dbitemcolumns.h
@ -318,57 +322,58 @@ sessionmanager.o: ../notify/notifythread.h ../core/basethread.h synchro.h
sessionmanager.o: ../notify/templatesnotify.h ../core/config.h sessionmanager.o: ../notify/templatesnotify.h ../core/config.h
sessionmanager.o: ../core/users.h ugcontainer.h mounts.h mount.h sessionmanager.o: ../core/users.h ugcontainer.h mounts.h mount.h
sessionmanager.o: mountparser.h users.h groups.h group.h loadavg.h thumb.h sessionmanager.o: mountparser.h users.h groups.h group.h loadavg.h thumb.h
sessionmanager.o: sessionparser.h plugin.h pluginmsg.h sessionmanager.o: basethread.h sessionparser.h plugin.h pluginmsg.h
sessionmanager.o: ../functions/functions.h ../functions/functionbase.h sessionmanager.o: ../functions/functions.h ../functions/functionbase.h
sessionmanager.o: ../core/request.h ../core/system.h ../core/synchro.h sessionmanager.o: ../core/request.h ../core/system.h ../core/synchro.h
sessionmanager.o: ../functions/functionparser.h ../functions/adduser.h sessionmanager.o: ../functions/functionparser.h ../core/cur.h
sessionmanager.o: ../functions/cat.h ../functions/chmod.h sessionmanager.o: ../functions/adduser.h ../functions/cat.h
sessionmanager.o: ../functions/privchanger.h ../functions/chown.h sessionmanager.o: ../functions/chmod.h ../functions/privchanger.h
sessionmanager.o: ../functions/ckeditor.h ../functions/cp.h sessionmanager.o: ../functions/chown.h ../functions/ckeditor.h
sessionmanager.o: ../functions/default.h ../functions/download.h sessionmanager.o: ../functions/cp.h ../functions/default.h
sessionmanager.o: ../functions/emacs.h ../functions/last.h sessionmanager.o: ../functions/download.h ../functions/emacs.h
sessionmanager.o: ../functions/login.h ../functions/logout.h sessionmanager.o: ../functions/last.h ../functions/login.h
sessionmanager.o: ../functions/ln.h ../functions/ls.h ../functions/mkdir.h sessionmanager.o: ../functions/logout.h ../functions/ln.h ../functions/ls.h
sessionmanager.o: ../functions/mv.h ../functions/node.h ../functions/priv.h sessionmanager.o: ../functions/mkdir.h ../functions/mv.h ../functions/node.h
sessionmanager.o: ../functions/reload.h ../functions/rm.h ../functions/run.h sessionmanager.o: ../functions/priv.h ../functions/reload.h ../functions/rm.h
sessionmanager.o: ../functions/specialdefault.h ../functions/stat.h sessionmanager.o: ../functions/run.h ../functions/specialdefault.h
sessionmanager.o: ../functions/subject.h ../functions/template.h sessionmanager.o: ../functions/stat.h ../functions/subject.h
sessionmanager.o: ../functions/tinymce.h ../functions/uname.h sessionmanager.o: ../functions/template.h ../functions/tinymce.h
sessionmanager.o: ../functions/upload.h ../functions/uptime.h sessionmanager.o: ../functions/uname.h ../functions/upload.h
sessionmanager.o: ../functions/who.h ../functions/vim.h ../core/htmlfilter.h sessionmanager.o: ../functions/uptime.h ../functions/who.h ../functions/vim.h
sessionmanager.o: ../templates/templates.h ../templates/patterncacher.h sessionmanager.o: ../core/htmlfilter.h ../templates/templates.h
sessionmanager.o: ../templates/patterncacher.h
sessionmanager.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h sessionmanager.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
sessionmanager.o: ../core/log.h ../templates/indexpatterns.h sessionmanager.o: ../core/log.h ../templates/indexpatterns.h
sessionmanager.o: ../core/sessionmanager.h sessionmanager.o: ../core/sessionmanager.h
sessionparser.o: sessionparser.h session.h item.h error.h user.h plugindata.h sessionparser.o: sessionparser.h session.h item.h error.h user.h plugindata.h
sessionparser.o: rebus.h sessioncontainer.h lastcontainer.h request.h sessionparser.o: rebus.h sessioncontainer.h cur.h request.h requesttypes.h
sessionparser.o: requesttypes.h config.h confparser.h htmlfilter.h sessionparser.o: config.h confparser.h htmlfilter.h textstream.h
sessionparser.o: textstream.h ../templates/htmltextstream.h sessionparser.o: ../templates/htmltextstream.h ../core/textstream.h misc.h
sessionparser.o: ../core/textstream.h misc.h basethread.h users.h log.h sessionparser.o: users.h log.h
synchro.o: synchro.h synchro.o: synchro.h
system.o: system.h dirs.h item.h dircontainer.h ../db/db.h ../db/dbbase.h system.o: system.h dirs.h item.h dircontainer.h ../db/db.h ../db/dbbase.h
system.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h misc.h system.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h misc.h
system.o: ../core/error.h log.h textstream.h ../db/dbitemquery.h system.o: ../core/error.h log.h textstream.h ../db/dbitemquery.h
system.o: ../core/item.h ../db/dbitemcolumns.h ../core/user.h ../core/group.h system.o: ../core/item.h ../db/dbitemcolumns.h ../core/user.h ../core/group.h
system.o: ../core/dircontainer.h ../core/ugcontainer.h request.h system.o: ../core/dircontainer.h ../core/ugcontainer.h request.h
system.o: requesttypes.h session.h error.h user.h plugindata.h rebus.h system.o: requesttypes.h error.h config.h confparser.h htmlfilter.h
system.o: config.h confparser.h htmlfilter.h ../templates/htmltextstream.h system.o: ../templates/htmltextstream.h ../notify/notify.h
system.o: ../notify/notify.h ../notify/notifypool.h ../templates/locale.h system.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h
system.o: ../core/confparser.h ../templates/misc.h system.o: ../templates/misc.h ../templates/localefilter.h
system.o: ../templates/localefilter.h ../templates/locale.h system.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/utf8.h
system.o: ../../ezc/src/ezc.h ../../ezc/src/utf8.h ../../ezc/src/generator.h system.o: ../../ezc/src/generator.h ../../ezc/src/pattern.h
system.o: ../../ezc/src/pattern.h ../../ezc/src/functions.h system.o: ../../ezc/src/functions.h ../../ezc/src/funinfo.h
system.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h system.o: ../../ezc/src/stringconv.h ../templates/htmltextstream.h
system.o: ../templates/htmltextstream.h ../notify/notifythread.h system.o: ../notify/notifythread.h ../core/basethread.h synchro.h
system.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h system.o: ../notify/templatesnotify.h ../core/config.h ../core/users.h user.h
system.o: ../core/config.h ../core/users.h ugcontainer.h lastcontainer.h system.o: ugcontainer.h lastcontainer.h cur.h session.h plugindata.h rebus.h
system.o: mounts.h mount.h mountparser.h users.h groups.h group.h loadavg.h system.o: mounts.h mount.h mountparser.h users.h groups.h group.h loadavg.h
system.o: thumb.h basethread.h ../templates/templates.h system.o: thumb.h basethread.h ../templates/templates.h
system.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h system.o: ../templates/patterncacher.h ../templates/ckeditorgetparser.h
system.o: ../core/httpsimpleparser.h ../core/log.h system.o: ../core/httpsimpleparser.h ../core/log.h
system.o: ../templates/indexpatterns.h ../core/request.h ../core/system.h system.o: ../templates/indexpatterns.h ../core/cur.h ../core/system.h
system.o: ../core/sessionmanager.h ../functions/functionbase.h system.o: ../core/sessionmanager.h ../functions/functionbase.h
system.o: ../core/synchro.h system.o: ../core/request.h ../core/synchro.h
textstream.o: textstream.h misc.h item.h textstream.o: textstream.h misc.h item.h
thumb.o: thumb.h basethread.h textstream.h ../db/db.h ../db/dbbase.h thumb.o: thumb.h basethread.h textstream.h ../db/db.h ../db/dbbase.h
thumb.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h misc.h thumb.o: ../db/dbconn.h ../db/dbtextstream.h ../core/textstream.h misc.h
@ -376,15 +381,16 @@ thumb.o: item.h ../core/error.h log.h ../db/dbitemquery.h ../core/item.h
thumb.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h thumb.o: ../db/dbitemcolumns.h ../core/user.h ../core/group.h
thumb.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/config.h thumb.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/config.h
thumb.o: ../../ezc/src/utf8.h system.h dirs.h dircontainer.h request.h thumb.o: ../../ezc/src/utf8.h system.h dirs.h dircontainer.h request.h
thumb.o: requesttypes.h session.h error.h user.h plugindata.h rebus.h thumb.o: requesttypes.h error.h config.h confparser.h htmlfilter.h
thumb.o: config.h confparser.h htmlfilter.h ../templates/htmltextstream.h thumb.o: ../templates/htmltextstream.h ../notify/notify.h
thumb.o: ../notify/notify.h ../notify/notifypool.h ../templates/locale.h thumb.o: ../notify/notifypool.h ../templates/locale.h ../core/confparser.h
thumb.o: ../core/confparser.h ../templates/misc.h ../templates/localefilter.h thumb.o: ../templates/misc.h ../templates/localefilter.h
thumb.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/generator.h thumb.o: ../templates/locale.h ../../ezc/src/ezc.h ../../ezc/src/generator.h
thumb.o: ../../ezc/src/pattern.h ../../ezc/src/functions.h thumb.o: ../../ezc/src/pattern.h ../../ezc/src/functions.h
thumb.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h thumb.o: ../../ezc/src/funinfo.h ../../ezc/src/stringconv.h
thumb.o: ../templates/htmltextstream.h ../notify/notifythread.h thumb.o: ../templates/htmltextstream.h ../notify/notifythread.h
thumb.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h thumb.o: ../core/basethread.h synchro.h ../notify/templatesnotify.h
thumb.o: ../core/users.h ugcontainer.h lastcontainer.h mounts.h mount.h thumb.o: ../core/users.h user.h ugcontainer.h lastcontainer.h cur.h session.h
thumb.o: mountparser.h users.h groups.h group.h loadavg.h thumb.o: plugindata.h rebus.h mounts.h mount.h mountparser.h users.h groups.h
thumb.o: group.h loadavg.h
users.o: users.h users.o: users.h

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreacceptbaseparser #ifndef headerfile_winix_core_acceptbaseparser
#define headerfilecmslucoreacceptbaseparser #define headerfile_winix_core_acceptbaseparser
#include <string> #include <string>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreacceptencodingparser #ifndef headerfile_winix_core_acceptencodingparser
#define headerfilecmslucoreacceptencodingparser #define headerfile_winix_core_acceptencodingparser
#include "acceptbaseparser.h" #include "acceptbaseparser.h"
#include "log.h" #include "log.h"

View File

@ -31,33 +31,37 @@ App::App()
last_sessions_save = std::time(0); last_sessions_save = std::time(0);
fcgi_socket = -1; fcgi_socket = -1;
// temporary there is only one request
cur.request = &req;
cur.session = session_manager.GetTmpSession();
db.SetConn(db_conn); db.SetConn(db_conn);
plugin.SetDb(&db); plugin.SetDb(&db);
plugin.SetConfig(&config); plugin.SetConfig(&config);
plugin.SetRequest(&request); plugin.SetCur(&cur);
plugin.SetSystem(&system); plugin.SetSystem(&system);
plugin.SetFunctions(&functions); plugin.SetFunctions(&functions);
plugin.SetTemplates(&templates); plugin.SetTemplates(&templates);
plugin.SetSynchro(&synchro); plugin.SetSynchro(&synchro);
plugin.SetSessionManager(&session_manager); plugin.SetSessionManager(&session_manager);
request.SetConfig(&config); req.SetConfig(&config);
functions.SetConfig(&config); functions.SetConfig(&config);
functions.SetRequest(&request); functions.SetCur(&cur);
functions.SetDb(&db); functions.SetDb(&db);
functions.SetSystem(&system); functions.SetSystem(&system);
functions.SetTemplates(&templates); functions.SetTemplates(&templates);
functions.SetSynchro(&synchro); functions.SetSynchro(&synchro);
system.SetConfig(&config); system.SetConfig(&config);
system.SetRequest(&request); system.SetCur(&cur);
system.SetDb(&db); system.SetDb(&db);
system.SetSynchro(&synchro); system.SetSynchro(&synchro);
templates.SetConfig(&config); templates.SetConfig(&config);
templates.SetRequest(&request); templates.SetCur(&cur);
templates.SetDb(&db); templates.SetDb(&db);
templates.SetSystem(&system); templates.SetSystem(&system);
templates.SetFunctions(&functions); templates.SetFunctions(&functions);
@ -65,7 +69,7 @@ App::App()
session_manager.SetLastContainer(&system.users.last); session_manager.SetLastContainer(&system.users.last);
session_manager.SetConfig(&config); session_manager.SetConfig(&config);
session_manager.SetRequest(&request); session_manager.SetCur(&cur);
session_manager.SetSystem(&system); session_manager.SetSystem(&system);
session_manager.SetSynchro(&synchro); session_manager.SetSynchro(&synchro);
@ -131,7 +135,7 @@ bool App::Init()
db_conn.WaitForConnection(); db_conn.WaitForConnection();
db.LogQueries(config.log_db_query); db.LogQueries(config.log_db_query);
request.Clear(); cur.request->Clear();
compress.Init(); compress.Init();
system.Init(); system.Init();
functions.Init(); functions.Init();
@ -143,6 +147,7 @@ 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.InitTmpSession();
session_manager.LoadSessions(); session_manager.LoadSessions();
CreateStaticTree(); CreateStaticTree();
@ -158,7 +163,8 @@ void App::Close()
{ {
session_manager.SaveSessions(); session_manager.SaveSessions();
session_manager.DeleteSessions(); session_manager.DeleteSessions();
request.Clear(); cur.request->Clear();
session_manager.UninitTmpSession();
} }
@ -168,13 +174,13 @@ bool App::BaseUrlRedirect()
if( config.base_url_http_host.empty() ) if( config.base_url_http_host.empty() )
return false; return false;
if( Equal(config.base_url_http_host.c_str(), request.env_http_host) ) if( Equal(config.base_url_http_host.c_str(), cur.request->env_http_host) )
return false; return false;
request.redirect_to = config.base_url; cur.request->redirect_to = config.base_url;
AssignString(request.env_request_uri, request.redirect_to, false); AssignString(cur.request->env_request_uri, cur.request->redirect_to, false);
log << log3 << "RC: BaseUrlRedirect from: " << request.env_http_host << logend; log << log3 << "RC: BaseUrlRedirect from: " << cur.request->env_http_host << logend;
return true; return true;
} }
@ -184,19 +190,23 @@ void App::ProcessRequestThrow()
{ {
ReadRequest(); ReadRequest();
// when BaseUrlRedirect() return true we didn't have to set everything in request.Read() // when BaseUrlRedirect() return true we didn't have to set everything in cur.request->Read()
// in the future request.Read() can be split and at the beginning only environment variables will be read // in the future cur.request->Read() can be split and at the beginning only environment variables will be read
// and then BaseUrlRedirect() will be called (for performance) // and then BaseUrlRedirect() will be called (for performance)
if( !BaseUrlRedirect() ) if( !BaseUrlRedirect() )
{ {
session_manager.SetSession(); // set request.session as well session_manager.SetSession();
// !! dac zeby zwracalo wskaznik (zawsze prawidlowy) na sesje cur.session = session_manager.GetCurSession();
// i tutaj przypisanie do request.session
// !! tutaj dodac to ustawianie request.session if( cur.session->new_session )
{
cur.session->plugin_data.Resize(plugin.Size());
plugin.Call(WINIX_SESSION_CREATED);
}
plugin.Call(WINIX_SESSION_CHANGED);
functions.Parse(); functions.Parse();
system.mounts.CalcCurMount(); system.mounts.CalcCurMount();
Make(); Make();
@ -216,7 +226,6 @@ void App::ProcessRequest()
ProcessRequestThrow(); ProcessRequestThrow();
SaveSessionsIfNeeded(); // !! przerzucic to na watek sesji SaveSessionsIfNeeded(); // !! przerzucic to na watek sesji
request.Clear();
system.load_avg.StopRequest(); system.load_avg.StopRequest();
log << logendrequest; log << logendrequest;
} }
@ -232,6 +241,9 @@ void App::ProcessRequest()
{ {
log << log1 << "App: there was an unknown exception" << logend; log << log1 << "App: there was an unknown exception" << logend;
} }
cur.request->Clear();
cur.session = session_manager.GetTmpSession();
} }
@ -270,20 +282,20 @@ void App::MakePage()
bool sent = false; bool sent = false;
if( !request.redirect_to.empty() || !request.x_sendfile.empty() ) if( !cur.request->redirect_to.empty() || !cur.request->x_sendfile.empty() )
return; return;
if( request.is_item && request.item.file_type == WINIX_ITEM_FILETYPE_NONE && if( cur.request->is_item && cur.request->item.file_type == WINIX_ITEM_FILETYPE_NONE &&
request.item.content_type == Item::ct_raw && request.status == WINIX_ERR_OK && request.function ) cur.request->item.content_type == Item::ct_raw && cur.request->status == WINIX_ERR_OK && cur.request->function )
{ {
if( request.function == &functions.fun_cat ) if( cur.request->function == &functions.fun_cat )
{ {
request.page << request.item.content; cur.request->page << cur.request->item.content;
sent = true; sent = true;
} }
else else
if( request.function == &functions.fun_run ) if( cur.request->function == &functions.fun_run )
{ {
templates.GenerateRunRaw(); templates.GenerateRunRaw();
sent = true; sent = true;
@ -301,35 +313,35 @@ bool sent = false;
// !! ta nazwa chyba juz zajeta... // !! ta nazwa chyba juz zajeta...
void App::Make() void App::Make()
{ {
if( request.dir_tab.empty() ) if( cur.request->dir_tab.empty() )
{ {
log << log1 << "Content: there is no a root dir (dir_tab is empty)" << logend; log << log1 << "Content: there is no a root dir (dir_tab is empty)" << logend;
return; return;
} }
// request.status can be changed by function_parser // cur.request->status can be changed by function_parser
if( request.status == WINIX_ERR_OK ) if( cur.request->status == WINIX_ERR_OK )
plugin.Call(WINIX_PREPARE_REQUEST); plugin.Call(WINIX_PREPARE_REQUEST);
if( request.status == WINIX_ERR_OK ) if( cur.request->status == WINIX_ERR_OK )
functions.CheckFunctionAndSymlink(); functions.CheckFunctionAndSymlink();
if( request.status == WINIX_ERR_OK ) if( cur.request->status == WINIX_ERR_OK )
functions.MakeFunction(); functions.MakeFunction();
if( request.session->spam_score > 0 ) if( cur.session->spam_score > 0 )
log << log1 << "App: spam score: " << request.session->spam_score << logend; log << log1 << "App: spam score: " << cur.session->spam_score << logend;
if( request.IsParam(L"noredirect") ) if( cur.request->IsParam(L"noredirect") )
request.redirect_to.clear(); cur.request->redirect_to.clear();
if( request.status == WINIX_ERR_OK ) if( cur.request->status == WINIX_ERR_OK )
plugin.Call(WINIX_PROCESS_REQUEST); plugin.Call(WINIX_PROCESS_REQUEST);
if( !request.redirect_to.empty() ) if( !cur.request->redirect_to.empty() )
return; return;
if( request.dir_tab.empty() ) if( cur.request->dir_tab.empty() )
{ {
log << log1 << "App: there is no a root dir (dir_tab is empty -- after calling a function)" << logend; log << log1 << "App: there is no a root dir (dir_tab is empty -- after calling a function)" << logend;
return; return;
@ -342,8 +354,8 @@ void App::Make()
{ {
// !! dodac inne informacje (get, post, itp) // !! dodac inne informacje (get, post, itp)
// jesli jest debug_info wlaczone to nie robic przekierowan // jesli jest debug_info wlaczone to nie robic przekierowan
request.PrintGetTab(); cur.request->PrintGetTab();
//request.PrintEnv(); // !! PrintEnv() mozna przeniesc tutaj (do klasy App) //cur.request->PrintEnv(); // !! PrintEnv() mozna przeniesc tutaj (do klasy App)
} }
} }
@ -361,13 +373,13 @@ void App::ReadRequest()
LogAccess(); LogAccess();
ReadGetPostVars(); ReadGetPostVars();
cookie_parser.Parse(request.env_http_cookie, request.cookie_tab); cookie_parser.Parse(cur.request->env_http_cookie, cur.request->cookie_tab);
accept_encoding_parser.Parse(request.env_http_accept_encoding); accept_encoding_parser.Parse(cur.request->env_http_accept_encoding);
CheckIE(); CheckIE();
CheckKonqueror(); CheckKonqueror();
if( request.role == Request::authorizer ) if( cur.request->role == Request::authorizer )
log << log3 << "Request: fast cgi role: authorizer" << logend; log << log3 << "Request: fast cgi role: authorizer" << logend;
} }
@ -380,7 +392,7 @@ const char * v = FCGX_GetParam(name, fcgi_request.envp);
if( v ) if( v )
env = v; env = v;
// by default env is set to an empty string (in request.Clear() method) // by default env is set to an empty string (in cur.request->Clear() method)
} }
@ -390,41 +402,41 @@ void App::ReadEnvVariables()
// we store that values because FCGX_GetParam has O(n) complexity // we store that values because FCGX_GetParam has O(n) complexity
// with this variables (env_*) we have O(1) // with this variables (env_*) we have O(1)
SetEnv(request.env_request_method, "REQUEST_METHOD"); // !! mozna nie uzywac tego, teraz mamy w strukturze fcgi_request SetEnv(cur.request->env_request_method, "REQUEST_METHOD"); // !! mozna nie uzywac tego, teraz mamy w strukturze fcgi_request
SetEnv(request.env_request_uri, "REQUEST_URI"); SetEnv(cur.request->env_request_uri, "REQUEST_URI");
SetEnv(request.env_http_cookie, "HTTP_COOKIE"); SetEnv(cur.request->env_http_cookie, "HTTP_COOKIE");
SetEnv(request.env_remote_addr, "REMOTE_ADDR"); SetEnv(cur.request->env_remote_addr, "REMOTE_ADDR");
SetEnv(request.env_http_host, "HTTP_HOST"); SetEnv(cur.request->env_http_host, "HTTP_HOST");
SetEnv(request.env_http_user_agent, "HTTP_USER_AGENT"); SetEnv(cur.request->env_http_user_agent, "HTTP_USER_AGENT");
SetEnv(request.env_fcgi_role, "FCGI_ROLE"); SetEnv(cur.request->env_fcgi_role, "FCGI_ROLE");
SetEnv(request.env_content_type, "CONTENT_TYPE"); SetEnv(cur.request->env_content_type, "CONTENT_TYPE");
SetEnv(request.env_http_accept_encoding,"HTTP_ACCEPT_ENCODING"); SetEnv(cur.request->env_http_accept_encoding,"HTTP_ACCEPT_ENCODING");
} }
void App::CheckRequestMethod() void App::CheckRequestMethod()
{ {
request.method = Request::none; cur.request->method = Request::none;
if( ToSmall(request.env_request_method[0]) == 'g' ) if( ToSmall(cur.request->env_request_method[0]) == 'g' )
request.method = Request::get; cur.request->method = Request::get;
else else
if( ToSmall(request.env_request_method[0]) == 'p' ) if( ToSmall(cur.request->env_request_method[0]) == 'p' )
request.method = Request::post; cur.request->method = Request::post;
else else
if( ToSmall(request.env_request_method[0]) == 'h' ) if( ToSmall(cur.request->env_request_method[0]) == 'h' )
request.method = Request::head; cur.request->method = Request::head;
} }
void App::CheckFCGIRole() void App::CheckFCGIRole()
{ {
// default we assume 'responder' // default we assume 'responder'
request.role = Request::responder; cur.request->role = Request::responder;
if( ToSmall(request.env_fcgi_role[0]) == 'a' ) if( ToSmall(cur.request->env_fcgi_role[0]) == 'a' )
request.role = Request::authorizer; cur.request->role = Request::authorizer;
} }
@ -433,11 +445,11 @@ void App::LogAccess()
{ {
log.PutDate(log1); log.PutDate(log1);
log << request.env_remote_addr << ' ' log << cur.request->env_remote_addr << ' '
<< request.env_request_method << ' ' << cur.request->env_request_method << ' '
<< request.env_http_host << cur.request->env_http_host
<< request.env_request_uri << ' ' << cur.request->env_request_uri << ' '
<< request.env_http_user_agent << logend; << cur.request->env_http_user_agent << logend;
} }
@ -447,22 +459,22 @@ void App::ReadGetPostVars()
{ {
// get parameters we have always // get parameters we have always
get_parser.UTF8(config.utf8); get_parser.UTF8(config.utf8);
get_parser.Parse(request.env_request_uri, request.get_tab); get_parser.Parse(cur.request->env_request_uri, cur.request->get_tab);
if( request.method == Request::post ) if( cur.request->method == Request::post )
{ {
if( IsSubStringNoCase("multipart/form-data", request.env_content_type) ) if( IsSubStringNoCase("multipart/form-data", cur.request->env_content_type) )
{ {
log << log3 << "Request: post content type: multipart/form-data" << logend; log << log3 << "Request: post content type: multipart/form-data" << logend;
// !! dodac metode UTF8 do post_multi_parsera // !! dodac metode UTF8 do post_multi_parsera
// (narazie bierze bezposrednio z konfigu) // (narazie bierze bezposrednio z konfigu)
// w ogole wywalic zaleznosc od konfiga // w ogole wywalic zaleznosc od konfiga
post_multi_parser.Parse(fcgi_request.in, request.post_tab, request.post_file_tab); post_multi_parser.Parse(fcgi_request.in, cur.request->post_tab, cur.request->post_file_tab);
} }
else else
{ {
post_parser.UTF8(config.utf8); post_parser.UTF8(config.utf8);
post_parser.Parse(fcgi_request.in, request.post_tab); post_parser.Parse(fcgi_request.in, cur.request->post_tab);
} }
} }
} }
@ -472,24 +484,24 @@ void App::ReadGetPostVars()
void App::CheckIE() void App::CheckIE()
{ {
char * msie = strstr(request.env_http_user_agent, "MSIE"); char * msie = strstr(cur.request->env_http_user_agent, "MSIE");
if( msie ) if( msie )
request.browser_msie = true; cur.request->browser_msie = true;
else else
request.browser_msie = false; cur.request->browser_msie = false;
} }
void App::CheckKonqueror() void App::CheckKonqueror()
{ {
char * kon = strstr(request.env_http_user_agent, "Konqueror"); char * kon = strstr(cur.request->env_http_user_agent, "Konqueror");
if( kon ) if( kon )
request.browser_konqueror = true; cur.request->browser_konqueror = true;
else else
request.browser_konqueror = false; cur.request->browser_konqueror = false;
} }
@ -499,18 +511,18 @@ void App::CheckKonqueror()
void App::PrepareSessionCookie() void App::PrepareSessionCookie()
{ {
if( !request.session || request.session->id==0 ) if( !cur.session || cur.session->id==0 )
return; return;
if( !request.session->puser || !request.session->remember_me ) if( !cur.session->puser || !cur.session->remember_me )
{ {
request.SetCookie(config.http_session_id_name.c_str(), request.session->id); cur.request->SetCookie(config.http_session_id_name.c_str(), cur.session->id);
} }
else else
{ {
time_t t = std::time(0) + config.session_remember_max_idle; time_t t = std::time(0) + config.session_remember_max_idle;
tm expires = Time(t); tm expires = Time(t);
request.SetCookie(config.http_session_id_name.c_str(), request.session->id, &expires); cur.request->SetCookie(config.http_session_id_name.c_str(), cur.session->id, &expires);
} }
} }
@ -521,27 +533,27 @@ void App::SendHeaders(bool compressing, Header header)
{ {
PrepareSessionCookie(); PrepareSessionCookie();
if( request.send_as_attachment ) if( cur.request->send_as_attachment )
FCGX_PutS("Content-Disposition: attachment\r\n", fcgi_request.out); FCGX_PutS("Content-Disposition: attachment\r\n", fcgi_request.out);
if( !request.redirect_to.empty() ) if( !cur.request->redirect_to.empty() )
{ {
FCGX_PutS("Status: 301 Moved Permanently\r\n", fcgi_request.out); FCGX_PutS("Status: 301 Moved Permanently\r\n", fcgi_request.out);
UrlEncode(request.redirect_to, request.aredirect_to); UrlEncode(cur.request->redirect_to, cur.request->aredirect_to);
FCGX_FPrintF(fcgi_request.out, "Location: %s\r\n", request.aredirect_to.c_str()); FCGX_FPrintF(fcgi_request.out, "Location: %s\r\n", cur.request->aredirect_to.c_str());
log << log2 << "Redirect to: " << request.aredirect_to << logend; log << log2 << "Redirect to: " << cur.request->aredirect_to << logend;
} }
else else
if( !request.x_sendfile.empty() ) if( !cur.request->x_sendfile.empty() )
{ {
static std::string temp, temp2; // !! wrzucic gdzies to static std::string temp, temp2; // !! wrzucic gdzies to
Ezc::WideToUTF8(config.http_header_send_file, temp); Ezc::WideToUTF8(config.http_header_send_file, temp);
Ezc::WideToUTF8(request.x_sendfile, temp2); Ezc::WideToUTF8(cur.request->x_sendfile, temp2);
FCGX_FPrintF(fcgi_request.out, "%s: %s\r\n", temp.c_str(), temp2.c_str()); FCGX_FPrintF(fcgi_request.out, "%s: %s\r\n", temp.c_str(), temp2.c_str());
FCGX_PutS("Status: 200 OK\r\n", fcgi_request.out); FCGX_PutS("Status: 200 OK\r\n", fcgi_request.out);
log << log2 << "Sending file: " << request.x_sendfile << logend; log << log2 << "Sending file: " << cur.request->x_sendfile << logend;
} }
else else
{ {
@ -562,7 +574,7 @@ void App::SendHeaders(bool compressing, Header header)
default: default:
FCGX_PutS("Status: 200 OK\r\n", fcgi_request.out); FCGX_PutS("Status: 200 OK\r\n", fcgi_request.out);
if( request.role != Request::authorizer ) if( cur.request->role != Request::authorizer )
FCGX_PutS("Content-Type: text/html\r\n", fcgi_request.out); FCGX_PutS("Content-Type: text/html\r\n", fcgi_request.out);
} }
} }
@ -570,7 +582,7 @@ void App::SendHeaders(bool compressing, Header header)
if( compressing ) if( compressing )
FCGX_PutS("Content-Encoding: deflate\r\n", fcgi_request.out); FCGX_PutS("Content-Encoding: deflate\r\n", fcgi_request.out);
FCGX_PutS(request.headers.CStr(), fcgi_request.out); FCGX_PutS(cur.request->headers.CStr(), fcgi_request.out);
FCGX_PutS("\r\n", fcgi_request.out); FCGX_PutS("\r\n", fcgi_request.out);
} }
@ -593,8 +605,8 @@ void App::FilterCompressSend(bool compressing, const std::wstring & source_ref)
{ {
const std::wstring * source = &source_ref; const std::wstring * source = &source_ref;
bool raw = request.is_item && request.item.content_type == Item::ct_raw && request.status == WINIX_ERR_OK && bool raw = cur.request->is_item && cur.request->item.content_type == Item::ct_raw && cur.request->status == WINIX_ERR_OK &&
request.function && (request.function == &functions.fun_cat || request.function == &functions.fun_run); cur.request->function && (cur.request->function == &functions.fun_cat || cur.request->function == &functions.fun_run);
if( config.html_filter && !raw ) if( config.html_filter && !raw )
{ {
@ -626,11 +638,11 @@ void App::FilterCompressSend(bool compressing, const std::wstring & source_ref)
bool App::IsCompressionAllowed(const std::wstring & source) bool App::IsCompressionAllowed(const std::wstring & source)
{ {
return( config.compression && return( config.compression &&
request.role == Request::responder && cur.request->role == Request::responder &&
request.redirect_to.empty() && cur.request->redirect_to.empty() &&
request.x_sendfile.empty() && cur.request->x_sendfile.empty() &&
!request.browser_msie && !cur.request->browser_msie &&
!request.browser_konqueror && !cur.request->browser_konqueror &&
accept_encoding_parser.AcceptDeflate() && accept_encoding_parser.AcceptDeflate() &&
source.size() >= (size_t)config.compression_page_min_size ); source.size() >= (size_t)config.compression_page_min_size );
} }
@ -638,11 +650,11 @@ bool App::IsCompressionAllowed(const std::wstring & source)
bool App::CanSendContent(Header header) bool App::CanSendContent(Header header)
{ {
if( !request.redirect_to.empty() || !request.x_sendfile.empty() ) if( !cur.request->redirect_to.empty() || !cur.request->x_sendfile.empty() )
// if there is a redirect or a file to send then we do not send a content // if there is a redirect or a file to send then we do not send a content
return false; return false;
if( header == h_200 && request.role == Request::authorizer && request.is_item && request.item.file_type != WINIX_ITEM_FILETYPE_NONE ) if( header == h_200 && cur.request->role == Request::authorizer && cur.request->is_item && cur.request->item.file_type != WINIX_ITEM_FILETYPE_NONE )
// if there is an item and the item has 'file' storage we do not send a content // if there is an item and the item has 'file' storage we do not send a content
return false; return false;
@ -650,7 +662,7 @@ bool App::CanSendContent(Header header)
we don't have to check the HEAD method we don't have to check the HEAD method
the server (lighttpd) doesn't send the body of its own the server (lighttpd) doesn't send the body of its own
*/ */
if( request.method == Request::head ) if( cur.request->method == Request::head )
return false; return false;
return true; return true;
@ -661,10 +673,10 @@ void App::AddDebugInfo(std::wstring & out)
{ {
if( config.debug_info ) if( config.debug_info )
{ {
if( !request.debug.Empty() ) if( !cur.request->debug.Empty() )
{ {
out += L"\n<!--\n"; out += L"\n<!--\n";
out += request.debug.Str(); out += cur.request->debug.Str();
out += L"\n-->\n"; out += L"\n-->\n";
} }
} }
@ -674,10 +686,10 @@ void App::AddDebugInfo(std::wstring & out)
void App::SendAnswer() void App::SendAnswer()
{ {
const std::wstring & source = request.page.Str(); const std::wstring & source = cur.request->page.Str();
Header header = h_200; Header header = h_200;
bool compressing = IsCompressionAllowed(source); bool compressing = IsCompressionAllowed(source);
Error status = request.status; Error status = cur.request->status;
if( status == WINIX_ERR_NO_ITEM || status == WINIX_ERR_NO_FUNCTION || status == WINIX_ERR_UNKNOWN_PARAM ) if( status == WINIX_ERR_NO_ITEM || status == WINIX_ERR_NO_FUNCTION || status == WINIX_ERR_UNKNOWN_PARAM )
header = h_404; header = h_404;
@ -964,7 +976,7 @@ void App::WaitForThreads()
//pthread_join(signal_thread, 0); //pthread_join(signal_thread, 0);
system.notify.WaitForThread(); system.notify.WaitForThread();
session_manager.WaitForGC(); session_manager.WaitForThread();
system.thumb.WaitForThread(); system.thumb.WaitForThread();
} }
@ -1000,7 +1012,7 @@ sigset_t set;
FCGX_ShutdownPending(); FCGX_ShutdownPending();
Ezc::WideToUTF8(app->config.base_url, app->url_to_fetch_on_exit); Ezc::WideToUTF8(app->config.base_url, app->url_to_fetch_on_exit);
app->system.notify.PrepareToStopThread(); app->system.notify.PrepareToStopThread();
app->session_manager.PrepareToStopGC(); app->session_manager.WakeUpThread();
app->system.thumb.WakeUpThread(); app->system.thumb.WakeUpThread();
app->Unlock(); app->Unlock();
@ -1033,7 +1045,7 @@ sigset_t set;
system.notify.StartThread(); system.notify.StartThread();
// gc for sessions // gc for sessions
session_manager.StartGC(); session_manager.StartThread();
// thumbnails // thumbnails
system.thumb.StartThread(); system.thumb.StartThread();

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreapp #ifndef headerfile_winix_core_app
#define headerfilecmslucoreapp #define headerfile_winix_core_app
#include <iostream> #include <iostream>
#include <ctime> #include <ctime>
@ -63,8 +63,12 @@ public:
// configuration read from a config file // configuration read from a config file
Config config; Config config;
// pointers to the current request and a session
Cur cur;
// temporary one request object
// current request // current request
Request request; Request req;
// users sessions // users sessions
SessionManager session_manager; SessionManager session_manager;
@ -127,6 +131,7 @@ private:
Synchro synchro; Synchro synchro;
pthread_t signal_thread; pthread_t signal_thread;
std::string url_to_fetch_on_exit; std::string url_to_fetch_on_exit;
void ProcessRequestThrow(); void ProcessRequestThrow();
void ProcessRequest(); void ProcessRequest();

View File

@ -145,6 +145,9 @@ bool BaseThread::WaitForSignalSleep(time_t second)
timespec t; timespec t;
int res; int res;
if( synchro->was_stop_signal )
return true;
t.tv_sec = time(0) + second; t.tv_sec = time(0) + second;
t.tv_nsec = 0; t.tv_nsec = 0;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorebasethread #ifndef headerfile_winix_core_basethread
#define headerfilecmslucorebasethread #define headerfile_winix_core_basethread
#include <pthread.h> #include <pthread.h>
#include "synchro.h" #include "synchro.h"

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorebbcodeparser #ifndef headerfile_winix_core_bbcodeparser
#define headerfilecmslucorebbcodeparser #define headerfile_winix_core_bbcodeparser
#include "htmlfilter.h" #include "htmlfilter.h"

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorecompress #ifndef headerfile_winix_core_compress
#define headerfilecmslucorecompress #define headerfile_winix_core_compress
#include <cstring> #include <cstring>
#include <fcgiapp.h> #include <fcgiapp.h>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreconfig #ifndef headerfile_winix_core_config
#define headerfilecmslucoreconfig #define headerfile_winix_core_config
#include <string> #include <string>
#include "confparser.h" #include "confparser.h"

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorecookieparser #ifndef headerfile_winix_core_cookieparser
#define headerfilecmslucorecookieparser #define headerfile_winix_core_cookieparser
#include <fcgiapp.h> #include <fcgiapp.h>
#include "httpsimpleparser.h" #include "httpsimpleparser.h"

34
core/cur.h Executable file
View File

@ -0,0 +1,34 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* All rights reserved.
*
*/
#ifndef headerfile_winix_core_cur
#define headerfile_winix_core_cur
#include "request.h"
#include "session.h"
/*
current request and session
*/
struct Cur
{
Request * request;
Session * session;
// those pointers are never null, if there is no a session for the user
// the 'session' pointer pointers at a special temporary session
};
#endif

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoredircontainer #ifndef headerfile_winix_core_dircontainer
#define headerfilecmslucoredircontainer #define headerfile_winix_core_dircontainer
#include <list> #include <list>
#include <map> #include <map>

View File

@ -19,9 +19,9 @@ void Dirs::SetDb(Db * pdb)
} }
void Dirs::SetRequest(Request * prequest) void Dirs::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
@ -603,8 +603,8 @@ Error Dirs::AddDirectory(Item & item, bool add_to_dir_tab, Item ** pdir, int not
{ {
Item * d = AddDir(item); Item * d = AddDir(item);
if( add_to_dir_tab && !request->dir_tab.empty() && request->dir_tab.back()->id == item.parent_id ) if( add_to_dir_tab && !cur->request->dir_tab.empty() && cur->request->dir_tab.back()->id == item.parent_id )
request->dir_tab.push_back(d); cur->request->dir_tab.push_back(d);
if( pdir ) if( pdir )
*pdir = d; *pdir = d;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoredirs #ifndef headerfile_winix_core_dirs
#define headerfilecmslucoredirs #define headerfile_winix_core_dirs
#include <vector> #include <vector>
@ -32,7 +32,7 @@ public:
void Clear(); void Clear();
void ReadDirs(); void ReadDirs();
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void SetDb(Db * pdb); void SetDb(Db * pdb);
void SetNotify(Notify * pnotify); void SetNotify(Notify * pnotify);
@ -79,8 +79,8 @@ public:
private: private:
Request * request; Cur * cur;
Db * db; Db * db;
Notify * notify; Notify * notify;
DirContainer dir_tab; DirContainer dir_tab;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreerror #ifndef headerfile_winix_core_error
#define headerfilecmslucoreerror #define headerfile_winix_core_error
#include <iostream> #include <iostream>
#include "log.h" #include "log.h"

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoregetparser #ifndef headerfile_winix_core_getparser
#define headerfilecmslucoregetparser #define headerfile_winix_core_getparser
#include "httpsimpleparser.h" #include "httpsimpleparser.h"
#include "requesttypes.h" #include "requesttypes.h"

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoregroup #ifndef headerfile_winix_core_group
#define headerfilecmslucoregroup #define headerfile_winix_core_group
#include <string> #include <string>
#include <vector> #include <vector>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoregroups #ifndef headerfile_winix_core_groups
#define headerfilecmslucoregroups #define headerfile_winix_core_groups
#include <map> #include <map>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorehtmlfilter #ifndef headerfile_winix_core_htmlfilter
#define headerfilecmslucorehtmlfilter #define headerfile_winix_core_htmlfilter
#include <string> #include <string>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorehttpsimpleparser #ifndef headerfile_winix_core_httpsimpleparser
#define headerfilecmslucorehttpsimpleparser #define headerfile_winix_core_httpsimpleparser
#include <string> #include <string>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreitem #ifndef headerfile_winix_core_item
#define headerfilecmslucoreitem #define headerfile_winix_core_item
#include <string> #include <string>

View File

@ -78,7 +78,7 @@ LastTab::iterator i = FindNotLoggedOut(user_id, session_id);
return; return;
} }
if( last_tab.size() >= LAST_TABLE_SIZE ) // last_tab has O(n) complexity if( last_tab.size() >= WINIX_LASTCONTAINER_TABLE_SIZE ) // last_tab has O(n) complexity
last_tab.erase(last_tab.begin()); last_tab.erase(last_tab.begin());
LastItem li; LastItem li;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorelastcontainer #ifndef headerfile_winix_core_lastcontainer
#define headerfilecmslucorelastcontainer #define headerfile_winix_core_lastcontainer
#include <string> #include <string>
#include <list> #include <list>
@ -18,7 +18,7 @@
// how many items we store in the 'last' function // how many items we store in the 'last' function
#define LAST_TABLE_SIZE 100 #define WINIX_LASTCONTAINER_TABLE_SIZE 100

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreloadavg #ifndef headerfile_winix_core_loadavg
#define headerfilecmslucoreloadavg #define headerfile_winix_core_loadavg
#include <ctime> #include <ctime>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorelog #ifndef headerfile_winix_core_log
#define headerfilecmslucorelog #define headerfile_winix_core_log
#include <sstream> #include <sstream>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoremisc #ifndef headerfile_winix_core_misc
#define headerfilecmslucoremisc #define headerfile_winix_core_misc
#include <string> #include <string>

View File

@ -8,8 +8,8 @@
*/ */
#ifndef headerfilecmslucoremount #ifndef headerfile_winix_core_mount
#define headerfilecmslucoremount #define headerfile_winix_core_mount
#include <map> #include <map>
#include <string> #include <string>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoremountparser #ifndef headerfile_winix_core_mountparser
#define headerfilecmslucoremountparser #define headerfile_winix_core_mountparser
#include <map> #include <map>
#include <string> #include <string>

View File

@ -73,9 +73,9 @@ void Mounts::SetDb(Db * pdb)
db = pdb; db = pdb;
} }
void Mounts::SetRequest(Request * prequest) void Mounts::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
@ -252,10 +252,10 @@ std::vector<Item*>::reverse_iterator i;
// when the program starts (when the dir_tab is empty() // when the program starts (when the dir_tab is empty()
// we don't want to call MountCmsForRoot() // we don't want to call MountCmsForRoot()
if( request->dir_tab.empty() ) if( cur->request->dir_tab.empty() )
return; return;
for(i = request->dir_tab.rbegin() ; i!=request->dir_tab.rend() ; ++i) for(i = cur->request->dir_tab.rbegin() ; i!=cur->request->dir_tab.rend() ; ++i)
{ {
std::map<long, Mount>::iterator m = mount_tab.find( (*i)->id ); std::map<long, Mount>::iterator m = mount_tab.find( (*i)->id );

View File

@ -8,8 +8,8 @@
*/ */
#ifndef headerfilecmslucorecoremounts #ifndef headerfile_winix_core_mounts
#define headerfilecmslucorecoremounts #define headerfile_winix_core_mounts
#include <map> #include <map>
@ -74,7 +74,7 @@ public:
void SetDirs(Dirs * pdirs); void SetDirs(Dirs * pdirs);
void SetDb(Db * pdb); void SetDb(Db * pdb);
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
// dir_id, mount_point // dir_id, mount_point
typedef std::map<long, Mount> MountTab; typedef std::map<long, Mount> MountTab;
@ -97,9 +97,9 @@ public:
private: private:
Db * db; Db * db;
Dirs * dirs; Dirs * dirs;
Request * request; Cur * cur;
Mount empty_mount; Mount empty_mount;
const std::wstring empty_str; const std::wstring empty_str;

View File

@ -35,7 +35,7 @@ Plugin::Plugin()
db = 0; db = 0;
config = 0; config = 0;
request = 0; cur = 0;
system = 0; system = 0;
functions = 0; functions = 0;
templates = 0; templates = 0;
@ -64,9 +64,9 @@ void Plugin::SetConfig(Config * pconfig)
} }
void Plugin::SetRequest(Request * prequest) void Plugin::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
@ -105,14 +105,14 @@ void Plugin::SetSessionManager(SessionManager * psession_manager)
bool Plugin::SetPointers(PluginInfo & info) bool Plugin::SetPointers(PluginInfo & info)
{ {
// for safety we call a plugin function only when all our pointers are not null // for safety we call a plugin function only when all our pointers are not null
bool res = (db && config && request && system && functions && templates && synchro && session_manager); bool res = (db && config && cur && system && functions && templates && synchro && session_manager);
if( !res ) if( !res )
log << log1 << "Plugin: cannot call a function - some of the winix pointers are null" << logend; log << log1 << "Plugin: cannot call a function - some of the winix pointers are null" << logend;
info.db = db; info.db = db;
info.config = config; info.config = config;
info.request = request; info.cur = cur;
info.system = system; info.system = system;
info.functions = functions; info.functions = functions;
info.templates = templates; info.templates = templates;
@ -252,8 +252,8 @@ void Plugin::Call(int message, Slots::iterator & slot)
current_plugin = slot->second.index; current_plugin = slot->second.index;
info.plugin_id = current_plugin; info.plugin_id = current_plugin;
if( request && request->session && current_plugin != -1 ) if( current_plugin != -1 )
info.plugin_data_base = request->session->plugin_data.Get(current_plugin); info.plugin_data_base = cur->session->plugin_data.Get(current_plugin);
else else
info.plugin_data_base = 0; info.plugin_data_base = 0;

View File

@ -60,7 +60,7 @@ struct PluginInfo
// objects from winix which are accessible from a plugin // objects from winix which are accessible from a plugin
Db * db; Db * db;
Config * config; Config * config;
Request * request; Cur * cur;
System * system; System * system;
Functions * functions; Functions * functions;
Templates * templates; Templates * templates;
@ -130,7 +130,7 @@ public:
void SetDb(Db * pdb); void SetDb(Db * pdb);
void SetConfig(Config * pconfig); void SetConfig(Config * pconfig);
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void SetSystem(System * psystem); void SetSystem(System * psystem);
void SetFunctions(Functions * pfunctions); void SetFunctions(Functions * pfunctions);
void SetTemplates(Templates * ptemplates); void SetTemplates(Templates * ptemplates);
@ -178,7 +178,7 @@ private:
Db * db; Db * db;
Config * config; Config * config;
Request * request; Cur * cur;
System * system; System * system;
Functions * functions; Functions * functions;
Templates * templates; Templates * templates;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreplugindata #ifndef headerfile_winix_core_plugindata
#define headerfilecmslucoreplugindata #define headerfile_winix_core_plugindata
#include <vector> #include <vector>

View File

@ -53,7 +53,7 @@
#define WINIX_SESSION_CHANGED 3002 #define WINIX_SESSION_CHANGED 3002
// the winix is closing // the winix is closing
// the is not any session available (request->session is null) // the is not any session available (cur->session is null)
#define WINIX_CLOSE 3004 #define WINIX_CLOSE 3004
// item was removed (rm function) // item was removed (rm function)

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorepostmultiparser #ifndef headerfile_winix_core_postmultiparser
#define headerfilecmslucorepostmultiparser #define headerfile_winix_core_postmultiparser
#include <string> #include <string>
#include <fcgiapp.h> #include <fcgiapp.h>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorepostparser #ifndef headerfile_winix_core_postparser
#define headerfilecmslucorepostparser #define headerfile_winix_core_postparser
#include <fcgiapp.h> #include <fcgiapp.h>
#include <string> #include <string>

View File

@ -12,13 +12,13 @@
#include "log.h" #include "log.h"
#include "rebus.h" #include "rebus.h"
#include "misc.h" #include "misc.h"
#include "request.h" #include "cur.h"
void Rebus::SetRequest(Request * prequest) void Rebus::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
@ -128,29 +128,29 @@ return result;
bool Rebus::CheckRebus() bool Rebus::CheckRebus()
{ {
if( !request->session ) if( !cur->session )
return false; return false;
if( request->session->puser ) if( cur->session->puser )
// logged users don't have to use the rebus // logged users don't have to use the rebus
return true; return true;
if( request->session->rebus_checked ) if( cur->session->rebus_checked )
return true; return true;
request->session->rebus_checked = true; cur->session->rebus_checked = true;
if( !request->session->rebus_item ) if( !cur->session->rebus_item )
{ {
log << log1 << "Rebus: rebus not set" << logend; log << log1 << "Rebus: rebus not set" << logend;
return false; return false;
} }
if( IsAnswerOk(request->session->rebus_item, request->PostVar(L"rebus")) ) if( IsAnswerOk(cur->session->rebus_item, cur->request->PostVar(L"rebus")) )
return true; return true;
log << log1 << "Rebus: rebus has an incorrect answer" << logend; log << log1 << "Rebus: rebus has an incorrect answer" << logend;
// don't add request->session->spam_score when the rebus has incorrect answer // don't add cur->session->spam_score when the rebus has incorrect answer
// a user could have made a mistake // a user could have made a mistake
return false; return false;

View File

@ -7,15 +7,15 @@
* *
*/ */
#ifndef headerfilecmslucorerebus #ifndef headerfile_winix_core_rebus
#define headerfilecmslucorerebus #define headerfile_winix_core_rebus
#include <string> #include <string>
#include <vector> #include <vector>
class Request; struct Cur;
class Rebus class Rebus
@ -31,7 +31,7 @@ public:
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void Init(); void Init();
Item * Rand(); Item * Rand();
bool IsAnswerOk(Item * item, const std::wstring & answer); bool IsAnswerOk(Item * item, const std::wstring & answer);
@ -39,7 +39,7 @@ public:
private: private:
Request * request; Cur * cur;
bool InitPair(int a, int b, Item & item); bool InitPair(int a, int b, Item & item);

View File

@ -78,10 +78,6 @@ void Request::Clear()
env_content_type = &char_empty; env_content_type = &char_empty;
env_http_accept_encoding = &char_empty; env_http_accept_encoding = &char_empty;
temporary_session.Clear();
temporary_session.id = 0;
session = &temporary_session;
item_tab.clear(); item_tab.clear();
item.Clear(); item.Clear();
dir_tab.clear(); dir_tab.clear();

View File

@ -7,14 +7,13 @@
* *
*/ */
#ifndef headerfilecmslucorerequest #ifndef headerfile_winix_core_request
#define headerfilecmslucorerequest #define headerfile_winix_core_request
#include <fcgiapp.h> #include <fcgiapp.h>
#include <sstream> #include <sstream>
#include <vector> #include <vector>
#include "requesttypes.h" #include "requesttypes.h"
#include "session.h"
#include "item.h" #include "item.h"
#include "error.h" #include "error.h"
#include "config.h" #include "config.h"
@ -69,9 +68,6 @@ struct Request
// true if the browser is Konqueror // true if the browser is Konqueror
bool browser_konqueror; bool browser_konqueror;
// current session
Session * session;
// current directory // current directory
std::vector<Item*> dir_tab; std::vector<Item*> dir_tab;
@ -138,9 +134,6 @@ private:
Config * config; Config * config;
// session with id 0
Session temporary_session;
void ClearPostFileTmp(); void ClearPostFileTmp();
// contains '\0' // contains '\0'

View File

@ -7,15 +7,17 @@
* *
*/ */
#ifndef headerfilecmslucorerequesttypes #ifndef headerfile_winix_core_requesttypes
#define headerfilecmslucorerequesttypes #define headerfile_winix_core_requesttypes
#include <string> #include <string>
#include <vector> #include <vector>
#include <map> #include <map>
#define WINIX_POSTTABLE_MAXSIZE 20 // !! narazie uzywane tylko w post multi parserze
// dodac do zwyklego parsera post
#define WINIX_POSTTABLE_MAXSIZE 50
struct PostFile struct PostFile

View File

@ -30,14 +30,15 @@ Session::Session()
void Session::Clear() void Session::Clear()
{ {
id = 0; id = 0;
time = 0; time = 0;
puser = 0; puser = 0;
rebus_item = 0; rebus_item = 0;
rebus_checked = false; rebus_checked = false;
remember_me = false; remember_me = false;
new_session = true; new_session = true;
spam_score = 0; spam_score = 0;
plugin_data.Resize(0);
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoresession #ifndef headerfile_winix_core_session
#define headerfilecmslucoresession #define headerfile_winix_core_session
#include <ctime> #include <ctime>
#include "item.h" #include "item.h"

View File

@ -15,17 +15,13 @@
SessionContainer::SessionContainer() SessionContainer::SessionContainer()
{ {
request = 0;
table_size = 0; table_size = 0;
work_mode = 1; // threading work mode
} }
void SessionContainer::SetCur(Cur * pcur)
void SessionContainer::SetRequest(Request * prequest)
{ {
request = prequest; cur = pcur;
} }
@ -35,32 +31,55 @@ void SessionContainer::SetConfig(Config * pconfig)
} }
void SessionContainer::SetTmpSession(Session * psession)
{
tmp_session = psession;
}
void SessionContainer::Clear() void SessionContainer::Clear()
{ {
Table::iterator i = table.begin(); Table::iterator i = table.begin();
log << log3 << "SC: deleting all sessions" << logend;
// don't use table.clear(); // don't use table.clear();
// because plugins session data would not be erased // because plugins session data would not be erased
// we must set cur->session for each session and then delete it
while( i != table.end() ) while( i != table.end() )
{ {
request->session = &(*i); cur->session = &(*i);
table.erase(i++); table.erase(i++);
} }
// erasing indexes // erasing indexes
index_id.clear(); index_id.clear();
table_size = 0; table_size = 0;
request->session = 0; cur->session = tmp_session;
} }
void SessionContainer::SetLastContainer(LastContainer * plast_container)
void SessionContainer::EraseById(IdIterator i)
{ {
last_container = plast_container; Session * old_session = tmp_session;
if( cur->session != &(*i->second) )
old_session = cur->session;
cur->session = &(*i->second);
log << log4 << "SC: deleting session, id: " << i->second->id << logend;
table.erase(i->second);
index_id.erase(i);
table_size -= 1;
cur->session = old_session;
} }
size_t SessionContainer::Size() size_t SessionContainer::Size()
{ {
// don't use table.size() as it has O(n) complexity on FreeBSD // don't use table.size() as it has O(n) complexity on FreeBSD
@ -86,6 +105,18 @@ Session & SessionContainer::Back()
} }
SessionContainer::IdIterator SessionContainer::IdBegin()
{
return index_id.begin();
}
SessionContainer::IdIterator SessionContainer::IdEnd()
{
return index_id.end();
}
bool SessionContainer::PushBack(const Session & session) bool SessionContainer::PushBack(const Session & session)
{ {
@ -128,93 +159,3 @@ return i->second;
/*
*
*
* sessions gc (another thread)
*
*
*/
void SessionContainer::Work()
{
bool exit = false;
IndexId::iterator i;
Lock();
i = index_id.begin();
Unlock();
while( !exit )
{
Lock();
if( i == index_id.end() )
{
i = index_id.begin();
WaitForSignalSleep(10);
//WaitForSignalSleep(1);
}
else
{
if( IsSessionOutdated(*i->second) )
DeleteSession(i++);
else
++i;
}
exit = synchro->was_stop_signal;
Unlock();
}
}
// it's called from the other thread (with Lock and Unlock)
bool SessionContainer::IsSessionOutdated(const Session & s) const
{
bool outdated;
if( s.remember_me )
outdated = s.last_time < std::time(0) - config->session_remember_max_idle;
else
outdated = s.last_time < std::time(0) - config->session_max_idle;
return outdated;
}
// it's called from the other thread (with Lock and Unlock)
void SessionContainer::DeleteSession(SessionContainer::IndexId::iterator i)
{
Session * old_session = 0;
Session * del_session = &(*i->second);
if( del_session != request->session )
old_session = request->session;
request->session = del_session;
log << log4 << "SessionContainer: deleting outdated session, id: " << del_session->id << logend;
if( del_session->puser )
last_container->UserLogout(del_session->puser->id, del_session->id);
table.erase(i->second);
index_id.erase(i);
table_size -= 1;
// !! tu moze byc zero
request->session = old_session;
}
/*
*
*
* end of sessions gc
*
*
*/

View File

@ -7,22 +7,20 @@
* *
*/ */
#ifndef headerfilecmslucoresessioncontainer #ifndef headerfile_winix_core_sessioncontainer
#define headerfilecmslucoresessioncontainer #define headerfile_winix_core_sessioncontainer
#include <list> #include <list>
#include <map> #include <map>
#include <ctime> #include <ctime>
#include "session.h" #include "session.h"
#include "lastcontainer.h" #include "cur.h"
#include "request.h"
#include "basethread.h"
#include "config.h" #include "config.h"
class SessionContainer : public BaseThread class SessionContainer
{ {
public: public:
@ -33,13 +31,14 @@ public:
typedef std::list<Session> Table; typedef std::list<Session> Table;
typedef Table::iterator Iterator; typedef Table::iterator Iterator;
typedef std::map<long, Iterator> IndexId; typedef std::map<long, Iterator> IndexId;
typedef IndexId::iterator IdIterator;
SessionContainer(); SessionContainer();
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void SetConfig(Config * pconfig); void SetConfig(Config * pconfig);
void SetLastContainer(LastContainer * plast_container); void SetTmpSession(Session * psession);
void Clear(); void Clear();
@ -50,20 +49,19 @@ public:
bool PushBack(const Session & session); bool PushBack(const Session & session);
Iterator FindById(long); Iterator FindById(long);
IdIterator IdBegin();
IdIterator IdEnd();
void EraseById(IdIterator i);
private: private:
LastContainer * last_container;
Table table; Table table;
IndexId index_id; IndexId index_id;
Request * request; Cur * cur;
Config * config; Config * config;
//void DelFromIdIndex(Iterator iter); Session * tmp_session;
virtual void Work();
bool IsSessionOutdated(const Session & s) const;
void DeleteSession(IndexId::iterator i);
// in FreeBSD implementation (GCC) list::size() has linear complexity // in FreeBSD implementation (GCC) list::size() has linear complexity
// so we use our own table_size with O(1) // so we use our own table_size with O(1)

View File

@ -22,13 +22,19 @@
SessionManager::SessionManager() SessionManager::SessionManager()
{ {
temporary_session.id = 0;
session = &temporary_session;
session_tab.SetTmpSession(&temporary_session);
// thread work mode
work_mode = 1;
} }
void SessionManager::SetRequest(Request * prequest) void SessionManager::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
session_tab.SetRequest(prequest); session_tab.SetCur(pcur);
} }
@ -44,17 +50,13 @@ void SessionManager::SetSystem(System * psystem)
system = psystem; system = psystem;
} }
void SessionManager::SetLastContainer(LastContainer * plast_container) void SessionManager::SetLastContainer(LastContainer * plast_container)
{ {
session_tab.SetLastContainer(plast_container); last_container = plast_container;
} }
void SessionManager::SetSynchro(Synchro * psynchro)
{
session_tab.SetSynchro(psynchro);
}
size_t SessionManager::Size() size_t SessionManager::Size()
{ {
@ -103,52 +105,20 @@ return id;
void SessionManager::CreateTemporarySession()
{
SessionContainer::Iterator i = session_tab.FindById( 0 );
if( i == session_tab.End() )
{
Session s;
s.id = 0;
s.new_session = true;
session_tab.PushBack(s);
request->session = &session_tab.Back();
}
else
{
request->session = &(*i);
request->session->Clear(); // !! what about session.plugin_data?
request->session->id = 0;
request->session->new_session = false;
}
}
void SessionManager::CreateSession() void SessionManager::CreateSession()
{ {
Session s; int attempts = 100;
int attempts = 100; bool added = false;
if( config->session_max == 0 || session_tab.Size() < config->session_max - 1 ) // -1 for the temporary session new_session.Clear();
if( config->session_max == 0 || session_tab.Size() < config->session_max )
{ {
for( ; attempts > 0 ; --attempts ) for( ; !added && attempts > 0 ; --attempts )
{ {
s.id = CreateSessionId(); new_session.id = CreateSessionId();
added = session_tab.PushBack(new_session);
bool added = session_tab.PushBack(s);
if( added )
{
request->session = &session_tab.Back();
request->session->new_session = true;
log << log2 << "SM: created a new session: " << request->session->id << logend;
return;
}
} }
} }
else else
@ -156,10 +126,21 @@ int attempts = 100;
log << log2 << "SM: sessions limit exceeded (" << config->session_max << ")" << logend; log << log2 << "SM: sessions limit exceeded (" << config->session_max << ")" << logend;
} }
// there is a problem with generating a new session id if( added )
// we do not set a session cookie {
CreateTemporarySession(); session = &session_tab.Back();
log << log1 << "SM: cannot create a session id (temporary used: with id 0)" << logend; session->new_session = true;
log << log2 << "SM: created a new session: " << session->id << logend;
}
else
{
// there is a problem with generating a new session id
// we do not set a session cookie
session = &temporary_session;
session->Clear();
session->new_session = false; // temporary session was initialized at the beginning
log << log1 << "SM: cannot create a session id (temporary used: with id 0)" << logend;
}
} }
@ -174,18 +155,18 @@ bool SessionManager::SetSessionFromCookie(const std::string & cookie)
return false; return false;
// that session is in the table // that session is in the table
request->session = &(*s); session = &(*s);
request->session->new_session = false; session->new_session = false;
request->session->last_time = std::time(0); session->last_time = std::time(0);
request->session->tm_last_time = Time(request->session->last_time); session->tm_last_time = Time(session->last_time);
if( request->method == Request::get ) if( cur->request->method == Request::get )
request->session->last_time_get = request->session->last_time; session->last_time_get = session->last_time;
log << log2 << "SM: session: " << s->id; log << log2 << "SM: session: " << session->id;
if( request->session->puser ) if( session->puser )
log << log2 << ", user: " << request->session->puser->name << ", id: " << request->session->puser->id; log << log2 << ", user: " << session->puser->name << ", id: " << session->puser->id;
log << log2 << logend; log << log2 << logend;
@ -196,9 +177,9 @@ return true;
void SessionManager::SetSession() void SessionManager::SetSession()
{ {
CookieTab::iterator i = request->cookie_tab.find(config->http_session_id_name); CookieTab::iterator i = cur->request->cookie_tab.find(config->http_session_id_name);
if( i == request->cookie_tab.end() ) if( i == cur->request->cookie_tab.end() )
{ {
CreateSession(); CreateSession();
} }
@ -208,22 +189,12 @@ void SessionManager::SetSession()
{ {
// there is no such a session // there is no such a session
// deleting the old cookie // deleting the old cookie
request->cookie_tab.erase(i); cur->request->cookie_tab.erase(i);
// and creating a new one // and creating a new one
CreateSession(); CreateSession();
} }
} }
// request->session is set now
if( request->session->new_session )
{
request->session->plugin_data.Resize(plugin.Size());
plugin.Call(WINIX_SESSION_CREATED);
}
plugin.Call(WINIX_SESSION_CHANGED);
} }
@ -252,6 +223,31 @@ void SessionManager::DeleteSessions()
void SessionManager::InitTmpSession()
{
Session * old_session = cur->session;
log << log4 << "SM: initializing temporary session" << logend;
cur->session = &temporary_session;
plugin.Call(WINIX_SESSION_CREATED);
cur->session = old_session;
}
void SessionManager::UninitTmpSession()
{
Session * old_session = cur->session;
log << log4 << "SM: uninitializing temporary session" << logend;
cur->session = &temporary_session;
cur->session->plugin_data.DeleteAll(); // this will call plugin.Call(WINIX_SESSION_REMOVE);
cur->session->plugin_data.Resize(0);
cur->session = old_session;
}
void SessionManager::LoadSessions() void SessionManager::LoadSessions()
@ -259,20 +255,20 @@ void SessionManager::LoadSessions()
SessionParser sp; SessionParser sp;
SessionContainer::Iterator i; SessionContainer::Iterator i;
// sessions will be overwritten (pointers are invalidated)
cur->session = &temporary_session;
sp.SetUsers(&system->users); sp.SetUsers(&system->users);
Session * old_session = request->session;
sp.Parse(config->session_file, session_tab); sp.Parse(config->session_file, session_tab);
i = session_tab.Begin();
for( ; i!=session_tab.End() ; ++i ) for(i=session_tab.Begin() ; i != session_tab.End() ; ++i)
{ {
i->plugin_data.Resize(plugin.Size()); i->plugin_data.Resize(plugin.Size());
request->session = &(*i); cur->session = &(*i);
plugin.Call(WINIX_SESSION_CREATED); plugin.Call(WINIX_SESSION_CREATED);
} }
request->session = old_session; cur->session = &temporary_session;
} }
@ -316,24 +312,125 @@ void SessionManager::SaveSessions()
void SessionManager::StartGC()
Session * SessionManager::GetTmpSession()
{ {
session_tab.StartThread(); return &temporary_session;
} }
// use it with Lock() and Unlock(); Session * SessionManager::GetCurSession()
void SessionManager::PrepareToStopGC()
{ {
session_tab.WakeUpThread(); return session;
}
void SessionManager::WaitForGC()
{
session_tab.WaitForThread();
} }
/*
*
*
* sessions gc (second thread)
*
*
*/
void SessionManager::Work()
{
bool exit = false;
SessionContainer::IndexId::iterator i;
deleted = 0;
Lock();
i = session_tab.IdBegin();
Unlock();
while( !exit )
{
Lock();
CheckSession(i);
exit = synchro->was_stop_signal;
Unlock();
}
}
// it's called from the other thread (with Lock and Unlock)
void SessionManager::CheckSession(SessionContainer::IndexId::iterator & i)
{
const int deleted_max_at_once = 10;
if( i == session_tab.IdEnd() )
{
if( deleted > 0 )
{
deleted = 0;
log << logsave;
}
i = session_tab.IdBegin();
WaitForSignalSleep(10);
}
else
{
if( IsSessionOutdated(*i->second) )
{
DeleteSession(i++);
++deleted;
}
else
{
++i;
}
if( deleted >= deleted_max_at_once )
{
log << logsave;
WaitForSignalSleep(1);
deleted = 0;
}
}
}
// it's called from the other thread (with Lock and Unlock)
bool SessionManager::IsSessionOutdated(const Session & s) const
{
bool outdated;
if( s.remember_me )
outdated = s.last_time < std::time(0) - config->session_remember_max_idle;
else
outdated = s.last_time < std::time(0) - config->session_max_idle;
return outdated;
}
// it's called from the other thread (with Lock and Unlock)
void SessionManager::DeleteSession(SessionContainer::IdIterator i)
{
Session * del_session = &(*i->second);
if( del_session->puser )
last_container->UserLogout(del_session->puser->id, del_session->id);
session_tab.EraseById(i);
}
/*
*
*
* end of sessions gc
*
*
*/

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoresessionmanager #ifndef headerfile_winix_core_sessionmanager
#define headerfilecmslucoresessionmanager #define headerfile_winix_core_sessionmanager
#include <set> #include <set>
#include <ctime> #include <ctime>
@ -19,39 +19,29 @@
#include "lastcontainer.h" #include "lastcontainer.h"
#include "system.h" #include "system.h"
#include "synchro.h" #include "synchro.h"
#include "basethread.h"
class SessionManager class SessionManager : public BaseThread
{ {
Config * config;
Request * request;
System * system;
SessionContainer session_tab;
bool IsSession(long s);
long CreateSessionId();
void CreateTemporarySession();
void CreateSession();
bool SetSessionFromCookie(const std::string & cookie);
public: public:
SessionManager(); SessionManager();
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void SetConfig(Config * pconfig); void SetConfig(Config * pconfig);
void SetSystem(System * psystem); void SetSystem(System * psystem);
void SetLastContainer(LastContainer * plast_container); void SetLastContainer(LastContainer * plast_container);
void SetSynchro(Synchro * psynchro);
void SetSession(); void SetSession();
void DeleteSessions(); // deleting all sessions void DeleteSessions(); // deleting all sessions
void StartGC();
void PrepareToStopGC(); void InitTmpSession();
void WaitForGC(); void UninitTmpSession();
Session * GetTmpSession();
Session * GetCurSession();
void LoadSessions(); void LoadSessions();
void SaveSessions(); void SaveSessions();
@ -60,6 +50,40 @@ public:
SessionContainer::Iterator SessionEnd(); SessionContainer::Iterator SessionEnd();
size_t Size(); size_t Size();
private:
Config * config;
Cur * cur;
System * system;
LastContainer * last_container;
// current session - set by SetSession()
Session * session;
SessionContainer session_tab;
// session with id 0
Session temporary_session;
// for adding a new session to the container
Session new_session;
bool IsSession(long s);
long CreateSessionId();
void CreateSession();
bool SetSessionFromCookie(const std::string & cookie);
// second thread
int deleted;
virtual void Work();
void CheckSession(SessionContainer::IndexId::iterator & i);
bool IsSessionOutdated(const Session & s) const;
void DeleteSession(SessionContainer::IdIterator i);
}; };

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoresessionparser #ifndef headerfile_winix_core_sessionparser
#define headerfilecmslucoresessionparser #define headerfile_winix_core_sessionparser
#include <fstream> #include <fstream>
#include <string> #include <string>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoresynchro #ifndef headerfile_winix_core_synchro
#define headerfilecmslucoresynchro #define headerfile_winix_core_synchro
#include <pthread.h> #include <pthread.h>

View File

@ -15,9 +15,9 @@
void System::SetRequest(Request * prequest) void System::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
@ -44,26 +44,26 @@ void System::SetSynchro(Synchro * psynchro)
void System::Init() void System::Init()
{ {
dirs.SetDb(db); dirs.SetDb(db);
dirs.SetRequest(request); dirs.SetCur(cur);
dirs.SetNotify(&notify); dirs.SetNotify(&notify);
dirs.ReadDirs(); dirs.ReadDirs();
mounts.SetDirs(&dirs); mounts.SetDirs(&dirs);
mounts.SetDb(db); mounts.SetDb(db);
mounts.SetRequest(request); mounts.SetCur(cur);
mounts.CreateMounts(); mounts.CreateMounts();
mounts.ReadMounts(); mounts.ReadMounts();
users.SetRequest(request); users.SetCur(cur);
users.ReadUsers(db); users.ReadUsers(db);
users.SetTimeZoneOffset(config->time_zone_offset); users.SetTimeZoneOffset(config->time_zone_offset);
groups.ReadGroups(db); // !! chwilowe przekazanie argumentu, db bedzie zmienione groups.ReadGroups(db); // !! chwilowe przekazanie argumentu, db bedzie zmienione
rebus.SetRequest(request); rebus.SetCur(cur);
rebus.Init(); rebus.Init();
notify.SetSynchro(synchro); notify.SetSynchro(synchro);
notify.SetRequest(request); notify.SetCur(cur);
notify.SetConfig(config); notify.SetConfig(config);
notify.SetUsers(&users); notify.SetUsers(&users);
notify.SetDirs(&dirs); notify.SetDirs(&dirs);
@ -80,35 +80,35 @@ void System::Init()
// !! moze zwracac jakas wartosc? // !! moze zwracac jakas wartosc?
void System::RedirectTo(const Item & item, const wchar_t * postfix) void System::RedirectTo(const Item & item, const wchar_t * postfix)
{ {
request->redirect_to = config->base_url; cur->request->redirect_to = config->base_url;
if( item.type == Item::dir ) if( item.type == Item::dir )
{ {
// item_id is pointing to a directory // item_id is pointing to a directory
dirs.MakePath(item.id, request->redirect_to, false); dirs.MakePath(item.id, cur->request->redirect_to, false);
} }
else else
{ {
// item_id is pointing to a file or a symlink // item_id is pointing to a file or a symlink
if( dirs.MakePath(item.parent_id, request->redirect_to, false) ) if( dirs.MakePath(item.parent_id, cur->request->redirect_to, false) )
request->redirect_to += item.url; cur->request->redirect_to += item.url;
} }
if( postfix ) if( postfix )
request->redirect_to += postfix; cur->request->redirect_to += postfix;
} }
void System::RedirectTo(long item_id, const wchar_t * postfix) void System::RedirectTo(long item_id, const wchar_t * postfix)
{ {
request->redirect_to = config->base_url; cur->request->redirect_to = config->base_url;
Item * pdir = dirs.GetDir(item_id); Item * pdir = dirs.GetDir(item_id);
if( pdir ) if( pdir )
{ {
// item_id is pointing to a directory // item_id is pointing to a directory
dirs.MakePath(pdir->id, request->redirect_to, false); dirs.MakePath(pdir->id, cur->request->redirect_to, false);
} }
else else
{ {
@ -122,8 +122,8 @@ void System::RedirectTo(long item_id, const wchar_t * postfix)
if( db->GetItem(item_temp, iq) == WINIX_ERR_OK ) if( db->GetItem(item_temp, iq) == WINIX_ERR_OK )
{ {
if( dirs.MakePath(item_temp.parent_id, request->redirect_to, false) ) if( dirs.MakePath(item_temp.parent_id, cur->request->redirect_to, false) )
request->redirect_to += item_temp.url; cur->request->redirect_to += item_temp.url;
} }
else else
{ {
@ -132,31 +132,31 @@ void System::RedirectTo(long item_id, const wchar_t * postfix)
} }
if( postfix ) if( postfix )
request->redirect_to += postfix; cur->request->redirect_to += postfix;
} }
void System::RedirectTo(const std::wstring & url) void System::RedirectTo(const std::wstring & url)
{ {
request->redirect_to = config->base_url; cur->request->redirect_to = config->base_url;
if( !url.empty() && url[0] == '/' ) if( !url.empty() && url[0] == '/' )
{ {
// absolute path // absolute path
request->redirect_to += url; cur->request->redirect_to += url;
} }
else else
{ {
// relative path // relative path
if( !request->dir_tab.empty() ) if( !cur->request->dir_tab.empty() )
{ {
if( dirs.MakePath(request->dir_tab.back()->id, request->redirect_to, false) ) if( dirs.MakePath(cur->request->dir_tab.back()->id, cur->request->redirect_to, false) )
request->redirect_to += url; cur->request->redirect_to += url;
} }
else else
{ {
request->redirect_to += '/'; cur->request->redirect_to += '/';
request->redirect_to += url; cur->request->redirect_to += url;
} }
} }
} }
@ -186,38 +186,38 @@ void System::RedirectWithFunctionAndParamsTo(const std::wstring & url)
{ {
RedirectTo(url); RedirectTo(url);
if( !request->function ) if( !cur->request->function )
return; return;
request->redirect_to += '/'; cur->request->redirect_to += '/';
request->redirect_to += request->function->fun.url; cur->request->redirect_to += cur->request->function->fun.url;
AddParams(request->param_tab, request->redirect_to, false); AddParams(cur->request->param_tab, cur->request->redirect_to, false);
} }
void System::RedirectToLastDir() void System::RedirectToLastDir()
{ {
if( !request->dir_tab.empty() ) if( !cur->request->dir_tab.empty() )
RedirectTo( *request->dir_tab.back() ); RedirectTo( *cur->request->dir_tab.back() );
} }
void System::RedirectToLastItem() void System::RedirectToLastItem()
{ {
if( request->last_item ) if( cur->request->last_item )
RedirectTo( *request->last_item ); RedirectTo( *cur->request->last_item );
} }
bool System::CanChangeUser(const Item & item, long new_user_id) bool System::CanChangeUser(const Item & item, long new_user_id)
{ {
if( !request->session ) if( !cur->session )
// session must be set // session must be set
return false; return false;
if( request->session->puser && request->session->puser->super_user ) if( cur->session->puser && cur->session->puser->super_user )
// super user is allowed everything // super user is allowed everything
return true; return true;
@ -233,11 +233,11 @@ return true;
bool System::CanChangeGroup(const Item & item, long new_group_id) bool System::CanChangeGroup(const Item & item, long new_group_id)
{ {
if( !request->session ) if( !cur->session )
// session must be set // session must be set
return false; return false;
if( request->session->puser && request->session->puser->super_user ) if( cur->session->puser && cur->session->puser->super_user )
// super user is allowed everything // super user is allowed everything
return true; return true;
@ -246,16 +246,16 @@ bool System::CanChangeGroup(const Item & item, long new_group_id)
// user is allowed to change the group only if he is an owner of the item // user is allowed to change the group only if he is an owner of the item
// he can change only into a group in which he is a member of, or into a 'no_group' // he can change only into a group in which he is a member of, or into a 'no_group'
if( !request->session->puser ) if( !cur->session->puser )
return false; return false;
if( request->session->puser->id != item.user_id ) if( cur->session->puser->id != item.user_id )
return false; return false;
if( new_group_id == -1 ) if( new_group_id == -1 )
return true; return true;
if( !request->session->puser->IsMemberOf(new_group_id) ) if( !cur->session->puser->IsMemberOf(new_group_id) )
return false; return false;
// is logged, is the owner of the item, is the member of the new group // is logged, is the owner of the item, is the member of the new group
@ -267,11 +267,11 @@ return true;
bool System::CanChangePrivileges(const Item & item, int new_priv) bool System::CanChangePrivileges(const Item & item, int new_priv)
{ {
if( !request->session ) if( !cur->session )
// session must be set // session must be set
return false; return false;
if( request->session->puser && request->session->puser->super_user ) if( cur->session->puser && cur->session->puser->super_user )
// super user is allowed everything // super user is allowed everything
return true; return true;
@ -279,10 +279,10 @@ bool System::CanChangePrivileges(const Item & item, int new_priv)
{ {
// the owner of an item is allowed to change the privileges // the owner of an item is allowed to change the privileges
if( !request->session->puser ) if( !cur->session->puser )
return false; return false;
if( request->session->puser->id != item.user_id ) if( cur->session->puser->id != item.user_id )
return false; return false;
} }
@ -293,21 +293,21 @@ return true;
bool System::HasAccess(const Item & item, int mask) bool System::HasAccess(const Item & item, int mask)
{ {
if( !request->session ) if( !cur->session )
// session must be set // session must be set
return false; return false;
if( request->session->puser && request->session->puser->super_user ) if( cur->session->puser && cur->session->puser->super_user )
// super user is allowed everything // super user is allowed everything
return true; return true;
if( request->session->puser && request->session->puser->id == item.user_id ) if( cur->session->puser && cur->session->puser->id == item.user_id )
{ {
// the owner // the owner
return ((item.privileges >> 6) & mask) == mask; return ((item.privileges >> 6) & mask) == mask;
} }
if( request->session->puser && request->session->puser->IsMemberOf(item.group_id) ) if( cur->session->puser && cur->session->puser->IsMemberOf(item.group_id) )
{ {
// group // group
return ((item.privileges >> 3) & mask) == mask; return ((item.privileges >> 3) & mask) == mask;
@ -339,7 +339,7 @@ bool System::HasReadWriteAccess(const Item & item)
bool System::HasReadExecAccess(const Item & item) bool System::HasReadExecAccess(const Item & item)
{ {
if( request->session && request->session->puser && request->session->puser->super_user ) if( cur->session && cur->session->puser && cur->session->puser->super_user )
{ {
// there must be at least one 'x' (for the root) // there must be at least one 'x' (for the root)
@ -387,7 +387,7 @@ return true;
bool System::DirsHaveReadExecPerm() bool System::DirsHaveReadExecPerm()
{ {
return HasReadExecAccessToPath(request->dir_tab); return HasReadExecAccessToPath(cur->request->dir_tab);
} }
@ -642,10 +642,10 @@ Error System::EditFile(Item & item, bool with_url, int notify_code)
if( item.type != Item::file ) if( item.type != Item::file )
return WINIX_ERR_FILE_EXPECTED; return WINIX_ERR_FILE_EXPECTED;
if( request->session && request->session->puser ) if( cur->session && cur->session->puser )
request->item.modification_user_id = request->session->puser->id; cur->request->item.modification_user_id = cur->session->puser->id;
else else
request->item.modification_user_id = -1; cur->request->item.modification_user_id = -1;
item.SetDateModifyToNow(); item.SetDateModifyToNow();
Error status = db->EditItemById(item, with_url); Error status = db->EditItemById(item, with_url);
@ -669,8 +669,8 @@ time_t System::LocalTime(time_t gmt_time)
{ {
int time_offset; int time_offset;
if( request->session && request->session->puser ) if( cur->session && cur->session->puser )
time_offset = request->session->puser->time_zone_offset; time_offset = cur->session->puser->time_zone_offset;
else else
time_offset = config->time_zone_offset_guest; time_offset = config->time_zone_offset_guest;
@ -909,40 +909,40 @@ int System::FollowAllLinks(const std::wstring & link_to,
// the same as FollowAllLinks but operates on request->dir_tab and request->item // the same as FollowAllLinks but operates on cur->request->dir_tab and cur->request->item
// and returns bool // and returns bool
// the method is making a redirection if needed // the method is making a redirection if needed
bool System::FollowAllLinks(const std::wstring & link_to, bool System::FollowAllLinks(const std::wstring & link_to,
bool follow_dir_default, bool stop_on_link_redirect, bool check_access) bool follow_dir_default, bool stop_on_link_redirect, bool check_access)
{ {
int res = FollowAllLinks(request->dir_tab, link_to, temp_follow_dir_tab, temp_follow_item, int res = FollowAllLinks(cur->request->dir_tab, link_to, temp_follow_dir_tab, temp_follow_item,
follow_dir_default, stop_on_link_redirect, check_access); follow_dir_default, stop_on_link_redirect, check_access);
bool ok = (res == 0 || res == 1); bool ok = (res == 0 || res == 1);
if( ok ) if( ok )
{ {
request->dir_tab = temp_follow_dir_tab; cur->request->dir_tab = temp_follow_dir_tab;
if( res == 0 ) if( res == 0 )
{ {
request->is_item = false; cur->request->is_item = false;
request->item.Clear(); cur->request->item.Clear();
request->last_item = request->dir_tab.back(); cur->request->last_item = cur->request->dir_tab.back();
if( !request->dir_tab.back()->link_to.empty() ) if( !cur->request->dir_tab.back()->link_to.empty() )
RedirectTo(request->dir_tab.back()->link_to); RedirectTo(cur->request->dir_tab.back()->link_to);
log << log3 << "System: current directory changed" << logend; log << log3 << "System: current directory changed" << logend;
} }
else else
{ {
request->is_item = true; cur->request->is_item = true;
request->item = temp_follow_item; cur->request->item = temp_follow_item;
request->last_item = &request->item; cur->request->last_item = &cur->request->item;
if( request->item.type == Item::symlink ) if( cur->request->item.type == Item::symlink )
RedirectTo(request->item.link_to); // request->item.link_to is not empty RedirectTo(cur->request->item.link_to); // cur->request->item.link_to is not empty
log << log3 << "System: current directory changed and the new file loaded" << logend; log << log3 << "System: current directory changed and the new file loaded" << logend;
} }
@ -952,9 +952,9 @@ bool System::FollowAllLinks(const std::wstring & link_to,
else else
{ {
if( res == 5 || res == 6 ) if( res == 5 || res == 6 )
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
else else
request->status = WINIX_ERR_NO_ITEM; cur->request->status = WINIX_ERR_NO_ITEM;
} }
return ok; return ok;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoresystem #ifndef headerfile_winix_core_system
#define headerfilecmslucoresystem #define headerfile_winix_core_system
#include <ctime> #include <ctime>
#include "dirs.h" #include "dirs.h"
@ -60,7 +60,7 @@ public:
time_t system_start; time_t system_start;
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void SetConfig(Config * pconfig); void SetConfig(Config * pconfig);
void SetDb(Db * pdb); void SetDb(Db * pdb);
void SetSynchro(Synchro * psynchro); void SetSynchro(Synchro * psynchro);
@ -120,15 +120,16 @@ public:
std::vector<Item*> & out_dir_tab, Item & out_item, std::vector<Item*> & out_dir_tab, Item & out_item,
bool follow_dir_default = false, bool stop_on_link_redirect = false, bool check_access = true); bool follow_dir_default = false, bool stop_on_link_redirect = false, bool check_access = true);
// using request->dir_tab and request->item // using cur->request->dir_tab and cur->request->item
bool FollowAllLinks(const std::wstring & link_to, bool FollowAllLinks(const std::wstring & link_to,
bool follow_dir_default = false, bool stop_on_link_redirect = false, bool check_access = true); bool follow_dir_default = false, bool stop_on_link_redirect = false, bool check_access = true);
private: private:
Request * request;
Config * config; Cur * cur;
Db * db; Db * db;
Synchro * synchro; Config * config;
Synchro * synchro;
Item item_temp; Item item_temp;
std::wstring link_to_temp, name_temp; std::wstring link_to_temp, name_temp;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucorethumb #ifndef headerfile_winix_core_thumb
#define headerfilecmslucorethumb #define headerfile_winix_core_thumb
#include <string> #include <string>
#include <list> #include <list>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreugcontainer #ifndef headerfile_winix_core_ugcontainer
#define headerfilecmslucoreugcontainer #define headerfile_winix_core_ugcontainer
#include <vector> #include <vector>
#include <map> #include <map>

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreuser #ifndef headerfile_winix_core_user
#define headerfilecmslucoreuser #define headerfile_winix_core_user
#include <string> #include <string>
#include <vector> #include <vector>

View File

@ -19,9 +19,9 @@ Users::Users()
} }
void Users::SetRequest(Request * prequest) void Users::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
@ -128,30 +128,30 @@ User & Users::operator[](Users::SizeType pos)
void Users::LoginUser(long user_id, bool remember_me) void Users::LoginUser(long user_id, bool remember_me)
{ {
if( !request->session ) if( !cur->session )
return; return;
if( request->session->id == 0 ) if( cur->session->id == 0 )
{ {
log << log1 << "Users: cannot login a user on a temporary session" << logend; log << log1 << "Users: cannot login a user on a temporary session" << logend;
return; return;
} }
request->session->puser = GetUser(user_id); cur->session->puser = GetUser(user_id);
request->session->spam_score = 0; cur->session->spam_score = 0;
if( !request->session->puser ) if( !cur->session->puser )
{ {
log << log1 << "Users: user id: " << user_id << " is not in system.users table" << logend; log << log1 << "Users: user id: " << user_id << " is not in system.users table" << logend;
return; return;
} }
request->session->remember_me = remember_me; cur->session->remember_me = remember_me;
last.UserLogin(user_id, request->session->puser->name, inet_addr(request->env_remote_addr), request->session->id); last.UserLogin(user_id, cur->session->puser->name, inet_addr(cur->request->env_remote_addr), cur->session->id);
how_many_logged += 1; how_many_logged += 1;
log << log2 << "User " << request->session->puser->name << " (id: " << user_id << ") logged" << logend; log << log2 << "User " << cur->session->puser->name << " (id: " << user_id << ") logged" << logend;
} }
@ -159,19 +159,19 @@ void Users::LoginUser(long user_id, bool remember_me)
void Users::LogoutCurrentUser() void Users::LogoutCurrentUser()
{ {
if( !request->session || !request->session->puser ) if( !cur->session || !cur->session->puser )
return; return;
log << log2 << "Users: user " << request->session->puser->name << ", id: " log << log2 << "Users: user " << cur->session->puser->name << ", id: "
<< request->session->puser->id << " logged out" << logend; << cur->session->puser->id << " logged out" << logend;
last.UserLogout(request->session->puser->id, request->session->id); last.UserLogout(cur->session->puser->id, cur->session->id);
if( how_many_logged > 0 ) // for safety if( how_many_logged > 0 ) // for safety
how_many_logged -= 1; how_many_logged -= 1;
request->session->puser = 0; cur->session->puser = 0;
request->session->remember_me = 0; cur->session->remember_me = 0;
} }

View File

@ -7,14 +7,14 @@
* *
*/ */
#ifndef headerfilecmslucoreusers #ifndef headerfile_winix_core_users
#define headerfilecmslucoreusers #define headerfile_winix_core_users
#include <map> #include <map>
#include "user.h" #include "user.h"
#include "ugcontainer.h" #include "ugcontainer.h"
#include "lastcontainer.h" #include "lastcontainer.h"
#include "request.h" #include "cur.h"
#include "db/db.h" #include "db/db.h"
@ -23,7 +23,7 @@ class Users
typedef UGContainer<User> Table; typedef UGContainer<User> Table;
Table table; Table table;
Request * request; Cur * cur;
long how_many_logged; long how_many_logged;
public: public:
@ -35,7 +35,7 @@ public:
Users(); Users();
void SetRequest(Request * request); void SetCur(Cur * pcur);
void Clear(); void Clear();
void ReadUsers(Db * db); void ReadUsers(Db * db);

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucoreversion #ifndef headerfile_winix_core_version
#define headerfilecmslucoreversion #define headerfile_winix_core_version
#define WINIX_VER_MAJOR 0 #define WINIX_VER_MAJOR 0

File diff suppressed because it is too large Load Diff

View File

@ -25,25 +25,25 @@ bool AddUser::CheckAddUserVars(const std::wstring & login, const std::wstring &
{ {
if( login.empty() ) if( login.empty() )
{ {
request->status = WINIX_ERR_LOGIN_EMPTY; cur->request->status = WINIX_ERR_LOGIN_EMPTY;
return false; return false;
} }
if( pass != conf_pass ) if( pass != conf_pass )
{ {
request->status = WINIX_ERR_PASSWORDS_DIFFERENT; cur->request->status = WINIX_ERR_PASSWORDS_DIFFERENT;
return false; return false;
} }
if( pass.size() < config->password_min_size ) if( pass.size() < config->password_min_size )
{ {
request->status = WINIX_ERR_PASSWORD_TOO_SHORT; cur->request->status = WINIX_ERR_PASSWORD_TOO_SHORT;
return false; return false;
} }
if( system->users.IsUser(login) ) if( system->users.IsUser(login) )
{ {
request->status = WINIX_ERR_USER_EXISTS; cur->request->status = WINIX_ERR_USER_EXISTS;
return false; return false;
} }
@ -59,23 +59,23 @@ void AddUser::MakePost()
{ {
User user; User user;
const std::wstring & login = request->PostVar(L"login"); const std::wstring & login = cur->request->PostVar(L"login");
const std::wstring & pass = request->PostVar(L"password"); const std::wstring & pass = cur->request->PostVar(L"password");
const std::wstring & conf_pass = request->PostVar(L"confirmpassword"); const std::wstring & conf_pass = cur->request->PostVar(L"confirmpassword");
if( !CheckAddUserVars(login, pass, conf_pass) ) if( !CheckAddUserVars(login, pass, conf_pass) )
return; return;
user.name = login; user.name = login;
user.email = request->PostVar(L"email"); user.email = cur->request->PostVar(L"email");
request->status = db->AddUser(user, pass); cur->request->status = db->AddUser(user, pass);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
{ {
if( system->users.AddUser(user) ) if( system->users.AddUser(user) )
{ {
if( !request->session->puser ) if( !cur->session->puser )
system->users.LoginUser(user.id, false); system->users.LoginUser(user.id, false);
log << log2 << "Adduser: added a new user: " << user.name << logend; log << log2 << "Adduser: added a new user: " << user.name << logend;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentadduser #ifndef headerfile_winix_functions_adduser
#define headerfilecmslucontentadduser #define headerfile_winix_functions_adduser
#include "functionbase.h" #include "functionbase.h"

View File

@ -22,21 +22,21 @@ Cat::Cat()
void Cat::MakeGet() void Cat::MakeGet()
{ {
if( !request->is_item ) if( !cur->request->is_item )
{ {
log << log1 << "Content: cat function requires an item" << logend; log << log1 << "Content: cat function requires an item" << logend;
request->status = WINIX_ERR_NO_ITEM; cur->request->status = WINIX_ERR_NO_ITEM;
return; return;
} }
if( !system->HasReadAccess(request->item) ) if( !system->HasReadAccess(cur->request->item) )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return; return;
} }
request->send_as_attachment = request->IsParam(L"attachment"); cur->request->send_as_attachment = cur->request->IsParam(L"attachment");
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentfuncatcat #ifndef headerfile_winix_functions_cat
#define headerfilecmslucontentfuncatcat #define headerfile_winix_functions_cat
#include "functionbase.h" #include "functionbase.h"

View File

@ -23,7 +23,7 @@ Chmod::Chmod()
void Chmod::MakePost() void Chmod::MakePost()
{ {
priv_changer.SetRequest(request); priv_changer.SetCur(cur);
priv_changer.SetSystem(system); priv_changer.SetSystem(system);
priv_changer.SetDb(db); priv_changer.SetDb(db);
@ -33,7 +33,7 @@ void Chmod::MakePost()
void Chmod::MakeGet() void Chmod::MakeGet()
{ {
priv_changer.SetRequest(request); priv_changer.SetCur(cur);
priv_changer.SetSystem(system); priv_changer.SetSystem(system);
priv_changer.SetDb(db); priv_changer.SetDb(db);

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentchmod #ifndef headerfile_winix_functions_chmod
#define headerfilecmslucontentchmod #define headerfile_winix_functions_chmod
#include "functionbase.h" #include "functionbase.h"
#include "privchanger.h" #include "privchanger.h"

View File

@ -23,7 +23,7 @@ Chown::Chown()
void Chown::MakePost() void Chown::MakePost()
{ {
priv_changer.SetRequest(request); priv_changer.SetCur(cur);
priv_changer.SetSystem(system); priv_changer.SetSystem(system);
priv_changer.SetDb(db); priv_changer.SetDb(db);
@ -33,7 +33,7 @@ void Chown::MakePost()
void Chown::MakeGet() void Chown::MakeGet()
{ {
priv_changer.SetRequest(request); priv_changer.SetCur(cur);
priv_changer.SetSystem(system); priv_changer.SetSystem(system);
priv_changer.SetDb(db); priv_changer.SetDb(db);

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentchown #ifndef headerfile_winix_functions_chown
#define headerfilecmslucontentchown #define headerfile_winix_functions_chown
#include "functionbase.h" #include "functionbase.h"
#include "privchanger.h" #include "privchanger.h"

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentckeditor #ifndef headerfile_winix_functions_ckeditor
#define headerfilecmslucontentckeditor #define headerfile_winix_functions_ckeditor
#include "functionbase.h" #include "functionbase.h"

View File

@ -29,19 +29,19 @@ bool Cp::HasAccess()
bool Cp::CheckAccessFrom() bool Cp::CheckAccessFrom()
{ {
if( request->is_item ) if( cur->request->is_item )
{ {
if( !system->HasReadAccess(request->item) || request->item.type == Item::symlink ) if( !system->HasReadAccess(cur->request->item) || cur->request->item.type == Item::symlink )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false; return false;
} }
} }
else else
if( !request->IsParam(L"r") ) if( !cur->request->IsParam(L"r") )
{ {
// directories need 'r' parameter // directories need 'r' parameter
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
} }
return true; return true;
@ -54,7 +54,7 @@ bool Cp::CheckAccessTo()
!system->HasReadExecAccessToPath(dir_tab) || !system->HasReadExecAccessToPath(dir_tab) ||
!system->HasWriteAccess(*dir_tab.back()) ) !system->HasWriteAccess(*dir_tab.back()) )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false; return false;
} }
@ -65,14 +65,14 @@ return true;
bool Cp::ParseDir() bool Cp::ParseDir()
{ {
const std::wstring & new_dir = request->PostVar(L"to"); const std::wstring & new_dir = cur->request->PostVar(L"to");
int res = system->dirs.FollowLink(request->dir_tab, new_dir, dir_tab, file); int res = system->dirs.FollowLink(cur->request->dir_tab, new_dir, dir_tab, file);
if( res == 3 ) if( res == 3 )
request->status = WINIX_ERR_NO_ROOT_DIR; cur->request->status = WINIX_ERR_NO_ROOT_DIR;
else else
if( res != 0 && res != 1 ) if( res != 0 && res != 1 )
request->status = WINIX_ERR_INCORRECT_DIR; cur->request->status = WINIX_ERR_INCORRECT_DIR;
return res == 0 || res == 1; return res == 0 || res == 1;
} }
@ -94,7 +94,7 @@ bool Cp::CopyStaticFile(const std::wstring & from, const std::wstring & to)
else else
{ {
log << log1 << "Cp: can't copy a file from: " << from << ", to: " << to << logend; log << log1 << "Cp: can't copy a file from: " << from << ", to: " << to << logend;
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false; return false;
} }
} }
@ -113,13 +113,13 @@ bool res1, res2, res3, res4, res5;
if( !res1 || !res2 || !res3 || !res4 || !res5 ) if( !res1 || !res2 || !res3 || !res4 || !res5 )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return; return;
} }
if( CopyStaticFile(old_path, new_path) ) if( CopyStaticFile(old_path, new_path) )
{ {
request->status = db->EditFileById(item, item.id); cur->request->status = db->EditFileById(item, item.id);
if( item.has_thumb ) if( item.has_thumb )
CopyStaticFile(old_path_thumb, new_path_thumb); CopyStaticFile(old_path_thumb, new_path_thumb);
@ -142,9 +142,9 @@ void Cp::CopyFile(Item & item, long dst_dir_id)
SetNewAttributes(item); SetNewAttributes(item);
item.parent_id = dst_dir_id; item.parent_id = dst_dir_id;
request->status = db->AddItem(item); cur->request->status = db->AddItem(item);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
{ {
if( item.file_type != WINIX_ITEM_FILETYPE_NONE ) if( item.file_type != WINIX_ITEM_FILETYPE_NONE )
CopyStaticFile(item); CopyStaticFile(item);
@ -187,8 +187,8 @@ void Cp::Prepare()
new_user = -1; new_user = -1;
new_group = dir_tab.back()->group_id; new_group = dir_tab.back()->group_id;
if( request->session->puser ) if( cur->session->puser )
new_user = request->session->puser->id; new_user = cur->session->puser->id;
loop_checker.clear(); loop_checker.clear();
} }
@ -261,7 +261,7 @@ long Cp::CopyDirTree(const Item & dir, long dst_dir_id)
temp.link_redirect = 0; temp.link_redirect = 0;
} }
request->status = system->dirs.AddDirectory(temp); cur->request->status = system->dirs.AddDirectory(temp);
loop_checker.push_back(temp.id); loop_checker.push_back(temp.id);
// remember the new dir_id because temp can be changed // remember the new dir_id because temp can be changed
@ -311,7 +311,7 @@ void Cp::PostCopyFile(Item & item, bool redirect)
CopyFileOrSymlink(item, dir_tab.back()->id); CopyFileOrSymlink(item, dir_tab.back()->id);
if( request->status == WINIX_ERR_OK && redirect ) if( cur->request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(item); system->RedirectTo(item);
} }
@ -323,7 +323,7 @@ void Cp::PostCopyDirContent(const Item & dir, bool redirect)
{ {
if( !file.empty() ) if( !file.empty() )
{ {
request->status = WINIX_ERR_INCORRECT_DIR; cur->request->status = WINIX_ERR_INCORRECT_DIR;
return; return;
} }
@ -332,7 +332,7 @@ void Cp::PostCopyDirContent(const Item & dir, bool redirect)
CopyDirContentTree(dir, dir_tab.back()->id); CopyDirContentTree(dir, dir_tab.back()->id);
if( request->status == WINIX_ERR_OK && redirect ) if( cur->request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(dir_tab.back()->id); system->RedirectTo(dir_tab.back()->id);
} }
@ -347,7 +347,7 @@ void Cp::PostCopyDir(const Item & dir, bool redirect)
long new_dir_id = CopyDirTree(dir, dir_id); long new_dir_id = CopyDirTree(dir, dir_id);
if( new_dir_id != -1 && request->status == WINIX_ERR_OK && redirect ) if( new_dir_id != -1 && cur->request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(new_dir_id); system->RedirectTo(new_dir_id);
} }
@ -367,20 +367,20 @@ void Cp::MakePost()
{ {
Prepare(); Prepare();
preserve_attr = request->IsPostVar(L"preserveattr"); preserve_attr = cur->request->IsPostVar(L"preserveattr");
remove_defaults = request->IsPostVar(L"removedefaults"); remove_defaults = cur->request->IsPostVar(L"removedefaults");
follow_symlinks = request->IsPostVar(L"followsymlinks"); follow_symlinks = cur->request->IsPostVar(L"followsymlinks");
if( request->is_item ) if( cur->request->is_item )
{ {
PostCopyFile(request->item); PostCopyFile(cur->request->item);
} }
else else
{ {
if( request->IsPostVar(L"onlycontent") ) if( cur->request->IsPostVar(L"onlycontent") )
PostCopyDirContent(*request->dir_tab.back()); PostCopyDirContent(*cur->request->dir_tab.back());
else else
PostCopyDir(*request->dir_tab.back()); PostCopyDir(*cur->request->dir_tab.back());
} }
Clear(); Clear();

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentcp #ifndef headerfile_winix_functions_cp
#define headerfilecmslucontentcp #define headerfile_winix_functions_cp
#include "functionbase.h" #include "functionbase.h"

View File

@ -22,24 +22,24 @@ Default::Default()
bool Default::HasAccess() bool Default::HasAccess()
{ {
return !request->is_item && system->HasWriteAccess(*request->dir_tab.back()); return !cur->request->is_item && system->HasWriteAccess(*cur->request->dir_tab.back());
} }
void Default::MakePost() void Default::MakePost()
{ {
Item & dir = *request->dir_tab.back(); Item & dir = *cur->request->dir_tab.back();
dir.link_to = request->PostVar(L"linkto"); dir.link_to = cur->request->PostVar(L"linkto");
dir.link_redirect = request->IsPostVar(L"makeredirect") ? 1 : 0; dir.link_redirect = cur->request->IsPostVar(L"makeredirect") ? 1 : 0;
TrimWhite(dir.link_to); TrimWhite(dir.link_to);
// !! dodac sprawdzenie czy link_to jest pusty teraz // !! dodac sprawdzenie czy link_to jest pusty teraz
request->status = db->EditLinkItem(dir.id, dir.link_to, dir.link_redirect); cur->request->status = db->EditLinkItem(dir.id, dir.link_to, dir.link_redirect);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
{ {
log << log2 << "Default: changed link_to: " << dir.link_to << ", for dir_id: " << dir.id << logend; log << log2 << "Default: changed link_to: " << dir.link_to << ", for dir_id: " << dir.id << logend;
system->RedirectToLastDir(); system->RedirectToLastDir();

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentdefault #ifndef headerfile_winix_functions_default
#define headerfilecmslucontentdefault #define headerfile_winix_functions_default
#include "functionbase.h" #include "functionbase.h"

View File

@ -24,28 +24,28 @@ Download::Download()
void Download::MakeGet() void Download::MakeGet()
{ {
// !! moze wywalic to no_item i wszedzie w takich miejscach dac poprostu permission_denied? // !! moze wywalic to no_item i wszedzie w takich miejscach dac poprostu permission_denied?
if( !request->is_item ) if( !cur->request->is_item )
{ {
log << log1 << "Content: download function requires an item" << logend; log << log1 << "Content: download function requires an item" << logend;
request->status = WINIX_ERR_NO_ITEM; cur->request->status = WINIX_ERR_NO_ITEM;
return; return;
} }
if( !system->HasReadAccess(request->item) || if( !system->HasReadAccess(cur->request->item) ||
request->item.file_type == WINIX_ITEM_FILETYPE_NONE || cur->request->item.file_type == WINIX_ITEM_FILETYPE_NONE ||
request->item.file_path.empty() ) cur->request->item.file_path.empty() )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return; return;
} }
request->send_as_attachment = request->IsParam(L"attachment"); cur->request->send_as_attachment = cur->request->IsParam(L"attachment");
if( request->item.has_thumb && request->IsParam(L"thumb") ) if( cur->request->item.has_thumb && cur->request->IsParam(L"thumb") )
system->MakeFilePath(request->item, request->x_sendfile, true); system->MakeFilePath(cur->request->item, cur->request->x_sendfile, true);
else else
system->MakeFilePath(request->item, request->x_sendfile); system->MakeFilePath(cur->request->item, cur->request->x_sendfile);
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentdownload #ifndef headerfile_winix_functions_download
#define headerfilecmslucontentdownload #define headerfile_winix_functions_download
#include "functionbase.h" #include "functionbase.h"

View File

@ -25,7 +25,7 @@ Emacs::Emacs()
bool Emacs::HasAccess(const Item & item) bool Emacs::HasAccess(const Item & item)
{ {
if( request->session->puser && request->session->puser->super_user ) if( cur->session->puser && cur->session->puser->super_user )
// super user can use emacs everywhere // super user can use emacs everywhere
return true; return true;
@ -35,7 +35,7 @@ bool Emacs::HasAccess(const Item & item)
if( !system->mounts.pmount->IsPar(system->mounts.MountParEmacsOn()) ) if( !system->mounts.pmount->IsPar(system->mounts.MountParEmacsOn()) )
return true; return true;
if( system->mounts.pmount->IsArg(system->mounts.MountParEmacsOn(), request->dir_tab.size()) ) if( system->mounts.pmount->IsArg(system->mounts.MountParEmacsOn(), cur->request->dir_tab.size()) )
return true; return true;
return false; return false;
@ -45,7 +45,7 @@ return false;
bool Emacs::HasAccess() bool Emacs::HasAccess()
{ {
return HasAccess(*request->last_item); return HasAccess(*cur->request->last_item);
} }
@ -56,16 +56,16 @@ bool Emacs::PostEmacsCheckAbuse(bool adding)
{ {
if( !system->rebus.CheckRebus() ) if( !system->rebus.CheckRebus() )
{ {
request->status = WINIX_ERR_INCORRECT_REBUS; cur->request->status = WINIX_ERR_INCORRECT_REBUS;
return false; return false;
} }
// !! is tested in createthread once // !! is tested in createthread once
functions->CheckGetPostTimes(); functions->CheckGetPostTimes();
if( request->session->spam_score > 0 ) if( cur->session->spam_score > 0 )
{ {
request->status = WINIX_ERR_SPAM; cur->request->status = WINIX_ERR_SPAM;
log << log1 << "Emacs: ignoring due to suspected spamming" << logend; log << log1 << "Emacs: ignoring due to suspected spamming" << logend;
return false; return false;
} }
@ -109,39 +109,39 @@ return WINIX_NOTIFY_CODE_FILE_ADD;
void Emacs::MakePost() void Emacs::MakePost()
{ {
bool adding = !request->is_item; bool adding = !cur->request->is_item;
if( !adding ) if( !adding )
old_url = request->item.url; old_url = cur->request->item.url;
functions->ReadItem(request->item, Item::file); functions->ReadItem(cur->request->item, Item::file);
if( adding ) if( adding )
functions->SetUser(request->item); // set user before checking the rebus functions->SetUser(cur->request->item); // set user before checking the rebus
if( !PostEmacsCheckAbuse(adding) ) if( !PostEmacsCheckAbuse(adding) )
return; return;
if( adding ) if( adding )
{ {
request->is_item = true; // !! moze lepiej nie ustawiac is_item? (bo jak wystapi blad np dodania do bazy danych cur->request->is_item = true; // !! moze lepiej nie ustawiac is_item? (bo jak wystapi blad np dodania do bazy danych
// to formularz edycji zmieni sie z 'dodaj' na 'edytuj' // to formularz edycji zmieni sie z 'dodaj' na 'edytuj'
request->item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask cur->request->item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
request->status = system->AddFile(request->item, NotifyCodeAdd()); cur->request->status = system->AddFile(cur->request->item, NotifyCodeAdd());
} }
else else
{ {
request->status = system->EditFile(request->item, request->item.url != old_url, NotifyCodeEdit()); cur->request->status = system->EditFile(cur->request->item, cur->request->item.url != old_url, NotifyCodeEdit());
} }
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
{ {
PostFunEmacsModifyMountPoint(adding); PostFunEmacsModifyMountPoint(adding);
functions->CheckSpecialFile(request->item); functions->CheckSpecialFile(cur->request->item);
} }
else else
{ {
log << log1 << "Emacs: error: " << request->status << logend; log << log1 << "Emacs: error: " << cur->request->status << logend;
} }
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentemacs #ifndef headerfile_winix_functions_emacs
#define headerfilecmslucontentemacs #define headerfile_winix_functions_emacs
#include "functionbase.h" #include "functionbase.h"

View File

@ -33,12 +33,13 @@ void FunctionBase::SetConfig(Config * pconfig)
} }
void FunctionBase::SetRequest(Request * prequest) void FunctionBase::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
void FunctionBase::SetDb(Db * pdb) void FunctionBase::SetDb(Db * pdb)
{ {
db = pdb; db = pdb;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentfunctionbase #ifndef headerfile_winix_functions_functionbase
#define headerfilecmslucontentfunctionbase #define headerfile_winix_functions_functionbase
#include <string> #include <string>
#include <vector> #include <vector>
@ -51,7 +51,7 @@ public:
virtual void MakeGet(); virtual void MakeGet();
void SetConfig(Config * pconfig); void SetConfig(Config * pconfig);
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void SetDb(Db * pdb); void SetDb(Db * pdb);
void SetSystem(System * psystem); void SetSystem(System * psystem);
void SetFunctions(Functions * pfunctions); void SetFunctions(Functions * pfunctions);
@ -60,13 +60,13 @@ public:
protected: protected:
Config * config; Config * config;
Request * request; Cur * cur;
Db * db; Db * db;
System * system; System * system;
Functions * functions; Functions * functions;
Templates * templates; Templates * templates;
Synchro * synchro; Synchro * synchro;
}; };

View File

@ -17,7 +17,7 @@
void FunctionParser::SkipEmptyString(const char * msg) void FunctionParser::SkipEmptyString(const char * msg)
{ {
for( ; get_index != get_tab_len && request->get_tab[get_index].empty() ; ++get_index ) for( ; get_index != get_tab_len && cur->request->get_tab[get_index].empty() ; ++get_index )
log << log3 << msg << logend; log << log3 << msg << logend;
} }
@ -31,14 +31,14 @@ void FunctionParser::ParseDirectories()
if( !pdir ) if( !pdir )
{ {
// there is no the root dir // there is no the root dir
request->status = WINIX_ERR_NO_ROOT_DIR; cur->request->status = WINIX_ERR_NO_ROOT_DIR;
return; return;
} }
while( true ) while( true )
{ {
request->dir_tab.push_back( pdir ); cur->request->dir_tab.push_back( pdir );
log << log3 << "FP: Directory: "; log << log3 << "FP: Directory: ";
if( pdir->parent_id == -1 ) if( pdir->parent_id == -1 )
@ -51,7 +51,7 @@ void FunctionParser::ParseDirectories()
if( get_index == get_tab_len ) if( get_index == get_tab_len )
break; break;
pdir = system->dirs.GetDir(request->get_tab[get_index], pdir->id); pdir = system->dirs.GetDir(cur->request->get_tab[get_index], pdir->id);
if( !pdir ) if( !pdir )
break; break;
@ -59,7 +59,7 @@ void FunctionParser::ParseDirectories()
++get_index; ++get_index;
} }
request->last_item = request->dir_tab.back(); cur->request->last_item = cur->request->dir_tab.back();
} }
@ -71,26 +71,26 @@ void FunctionParser::ParseItem()
if( get_index == get_tab_len ) if( get_index == get_tab_len )
return; return;
// request->dir_tab has at least one element // cur->request->dir_tab has at least one element
long parent_id = request->dir_tab.back()->id; long parent_id = cur->request->dir_tab.back()->id;
const std::wstring & url = request->get_tab[get_index]; const std::wstring & url = cur->request->get_tab[get_index];
request->status = db->GetItem(parent_id, url, request->item); cur->request->status = db->GetItem(parent_id, url, cur->request->item);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
{ {
request->last_item = &request->item; cur->request->last_item = &cur->request->item;
if( request->role == Request::authorizer && request->item.file_type == WINIX_ITEM_FILETYPE_NONE ) if( cur->request->role == Request::authorizer && cur->request->item.file_type == WINIX_ITEM_FILETYPE_NONE )
{ {
log << log1 << "FP: item.url: " << url << " exists but has not a static content (authorizer role)" << logend; log << log1 << "FP: item.url: " << url << " exists but has not a static content (authorizer role)" << logend;
request->status = WINIX_ERR_NO_ITEM; cur->request->status = WINIX_ERR_NO_ITEM;
return; return;
} }
++get_index; ++get_index;
request->is_item = true; cur->request->is_item = true;
log << log3 << "FP: Item: id: " << request->item.id << ", url: " << request->item.url << logend; log << log3 << "FP: Item: id: " << cur->request->item.id << ", url: " << cur->request->item.url << logend;
} }
else else
{ {
@ -107,13 +107,13 @@ void FunctionParser::ParseFunction()
if( get_index == get_tab_len ) if( get_index == get_tab_len )
return; return;
request->function = functions->Find(request->get_tab[get_index]); cur->request->function = functions->Find(cur->request->get_tab[get_index]);
if( request->function ) if( cur->request->function )
{ {
++get_index; ++get_index;
log << log3 << "FP: Function: " << request->function->fun.url << logend; log << log3 << "FP: Function: " << cur->request->function->fun.url << logend;
} }
} }
@ -144,7 +144,7 @@ size_t i;
param.value = par.substr(i+1); param.value = par.substr(i+1);
} }
request->param_tab.push_back(param); cur->request->param_tab.push_back(param);
log << log3 << "FP: Param: name=" << param.name; log << log3 << "FP: Param: name=" << param.name;
@ -165,45 +165,45 @@ void FunctionParser::ParseParams()
if( get_index == get_tab_len ) if( get_index == get_tab_len )
break; break;
ParseParams(request->get_tab[get_index]); ParseParams(cur->request->get_tab[get_index]);
} }
} }
void FunctionParser::Parse(Request * prequest, Db * pdb, Functions * pfunctions, System * psystem) void FunctionParser::Parse(Cur * pcur, Db * pdb, Functions * pfunctions, System * psystem)
{ {
request = prequest;
db = pdb; db = pdb;
functions = pfunctions; cur = pcur;
system = psystem; system = psystem;
functions = pfunctions;
request->status = WINIX_ERR_OK; cur->request->status = WINIX_ERR_OK;
get_index = 0; get_index = 0;
get_tab_len = request->get_tab.size(); get_tab_len = cur->request->get_tab.size();
request->function = 0; cur->request->function = 0;
request->is_item = false; cur->request->is_item = false;
ParseDirectories(); ParseDirectories();
if( request->status != WINIX_ERR_OK ) if( cur->request->status != WINIX_ERR_OK )
return; return;
ParseFunction(); ParseFunction();
if( !request->function ) if( !cur->request->function )
{ {
ParseItem(); ParseItem();
if( request->status != WINIX_ERR_OK ) if( cur->request->status != WINIX_ERR_OK )
return; return;
ParseFunction(); ParseFunction();
if( !request->function && get_index != get_tab_len ) if( !cur->request->function && get_index != get_tab_len )
{ {
request->status = WINIX_ERR_NO_FUNCTION; cur->request->status = WINIX_ERR_NO_FUNCTION;
log << log3 << "FP: Parse: unknown function: \"" << request->get_tab[get_index] << "\"" << logend; log << log3 << "FP: Parse: unknown function: \"" << cur->request->get_tab[get_index] << "\"" << logend;
return; return;
} }
} }

View File

@ -7,11 +7,11 @@
* *
*/ */
#ifndef headerfilecmslucorefunctionparser #ifndef headerfile_winix_functions_functionparser
#define headerfilecmslucorefunctionparser #define headerfile_winix_functions_functionparser
#include "core/request.h"
#include "db/db.h" #include "db/db.h"
#include "core/cur.h"
#include "core/system.h" #include "core/system.h"
@ -21,10 +21,10 @@ class Functions;
class FunctionParser class FunctionParser
{ {
Request * request;
Db * db; Db * db;
Functions * functions; Cur * cur;
System * system; System * system;
Functions * functions;
GetTab::size_type get_index; GetTab::size_type get_index;
GetTab::size_type get_tab_len; GetTab::size_type get_tab_len;
@ -40,7 +40,7 @@ class FunctionParser
public: public:
void Parse(Request * prequest, Db * pdb, Functions * pfunctions, System * psystem); void Parse(Cur * pcur, Db * pdb, Functions * pfunctions, System * psystem);
}; };

View File

@ -21,12 +21,13 @@ void Functions::SetConfig(Config * pconfig)
} }
void Functions::SetRequest(Request * prequest) void Functions::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
void Functions::SetDb(Db * pdb) void Functions::SetDb(Db * pdb)
{ {
db = pdb; db = pdb;
@ -135,7 +136,7 @@ return WINIX_NOTHING_TO_DO;
void Functions::SetObjects(FunctionBase * fun) void Functions::SetObjects(FunctionBase * fun)
{ {
fun->SetConfig(config); fun->SetConfig(config);
fun->SetRequest(request); fun->SetCur(cur);
fun->SetDb(db); fun->SetDb(db);
fun->SetSystem(system); fun->SetSystem(system);
fun->SetFunctions(this); fun->SetFunctions(this);
@ -224,22 +225,22 @@ void Functions::Init()
void Functions::Parse() void Functions::Parse()
{ {
function_parser.Parse(request, db, this, system); function_parser.Parse(cur, db, this, system);
} }
void Functions::SetDefaultFunctionForFile() void Functions::SetDefaultFunctionForFile()
{ {
if( request->item.file_type != WINIX_ITEM_FILETYPE_NONE ) if( cur->request->item.file_type != WINIX_ITEM_FILETYPE_NONE )
request->function = &fun_download; cur->request->function = &fun_download;
else else
if( system->HasReadExecAccess(request->item) ) if( system->HasReadExecAccess(cur->request->item) )
request->function = &fun_run; cur->request->function = &fun_run;
else else
request->function = &fun_cat; cur->request->function = &fun_cat;
log << log3 << "Functions: default function: " << request->function->fun.url << logend; log << log3 << "Functions: default function: " << cur->request->function->fun.url << logend;
} }
@ -249,30 +250,30 @@ void Functions::SetDefaultFunctionForDir()
{ {
// !! nie potrzebne // !! nie potrzebne
// if( system->mounts.pmount->type == system->mounts.MountTypeThread() ) // if( system->mounts.pmount->type == system->mounts.MountTypeThread() )
// request->function = &fun_thread; // cur->request->function = &fun_thread;
// else // else
request->function = &fun_ls; cur->request->function = &fun_ls;
log << log3 << "Functions: default function: " << request->function->fun.url << logend; log << log3 << "Functions: default function: " << cur->request->function->fun.url << logend;
} }
void Functions::SetDefaultFunction() void Functions::SetDefaultFunction()
{ {
request->function = 0; cur->request->function = 0;
plugin.Call(WINIX_SELECT_DEFAULT_FUNCTION); plugin.Call(WINIX_SELECT_DEFAULT_FUNCTION);
if( request->function ) if( cur->request->function )
{ {
log << log3 << "Functions: default function: " << request->function->fun.url log << log3 << "Functions: default function: " << cur->request->function->fun.url
<< " (set by a plugin)" << logend; << " (set by a plugin)" << logend;
return; return;
} }
if( request->is_item ) if( cur->request->is_item )
SetDefaultFunctionForFile(); SetDefaultFunctionForFile();
else else
SetDefaultFunctionForDir(); SetDefaultFunctionForDir();
@ -288,13 +289,13 @@ void Functions::CheckFunctionFollowDir(bool was_default_function)
if( was_default_function ) if( was_default_function )
{ {
if( request->dir_tab.back()->link_redirect == 1 ) if( cur->request->dir_tab.back()->link_redirect == 1 )
{ {
system->RedirectTo(request->dir_tab.back()->link_to); system->RedirectTo(cur->request->dir_tab.back()->link_to);
} }
else else
{ {
if( system->FollowAllLinks(request->dir_tab.back()->link_to, true, true) ) if( system->FollowAllLinks(cur->request->dir_tab.back()->link_to, true, true) )
SetDefaultFunction(); SetDefaultFunction();
} }
} }
@ -304,25 +305,25 @@ void Functions::CheckFunctionFollowDir(bool was_default_function)
void Functions::CheckFunctionFollowSymlink(bool was_default_function) void Functions::CheckFunctionFollowSymlink(bool was_default_function)
{ {
if( request->item.link_redirect == 1 ) if( cur->request->item.link_redirect == 1 )
{ {
if( was_default_function ) if( was_default_function )
system->RedirectTo(request->item.link_to); system->RedirectTo(cur->request->item.link_to);
else else
system->RedirectWithFunctionAndParamsTo(request->item.link_to); system->RedirectWithFunctionAndParamsTo(cur->request->item.link_to);
} }
else else
if( system->FollowAllLinks(request->item.link_to, true, true) ) if( system->FollowAllLinks(cur->request->item.link_to, true, true) )
{ {
if( was_default_function ) if( was_default_function )
SetDefaultFunction(); SetDefaultFunction();
if( request->status == WINIX_ERR_OK && !request->redirect_to.empty() && !was_default_function && request->function ) if( cur->request->status == WINIX_ERR_OK && !cur->request->redirect_to.empty() && !was_default_function && cur->request->function )
{ {
// !! nie jestem pewny dodania tej nowej funkcji do redirecta... (sprawdzic to) // !! nie jestem pewny dodania tej nowej funkcji do redirecta... (sprawdzic to)
request->redirect_to += '/'; cur->request->redirect_to += '/';
request->redirect_to += request->function->fun.url; cur->request->redirect_to += cur->request->function->fun.url;
system->AddParams(request->param_tab, request->redirect_to, false); system->AddParams(cur->request->param_tab, cur->request->redirect_to, false);
} }
} }
} }
@ -334,19 +335,19 @@ void Functions::CheckFunctionAndSymlink()
{ {
bool was_default_function = false; bool was_default_function = false;
if( !request->function || request->function == &fun_special_default ) if( !cur->request->function || cur->request->function == &fun_special_default )
{ {
was_default_function = true; was_default_function = true;
SetDefaultFunction(); SetDefaultFunction();
} }
if( request->status != WINIX_ERR_OK || !request->redirect_to.empty() ) if( cur->request->status != WINIX_ERR_OK || !cur->request->redirect_to.empty() )
return; return;
if( !request->is_item && !request->dir_tab.back()->link_to.empty() ) if( !cur->request->is_item && !cur->request->dir_tab.back()->link_to.empty() )
CheckFunctionFollowDir(was_default_function); CheckFunctionFollowDir(was_default_function);
else else
if( request->is_item && request->item.type == Item::symlink && request->function && request->function->follow_symlinks ) if( cur->request->is_item && cur->request->item.type == Item::symlink && cur->request->function && cur->request->function->follow_symlinks )
CheckFunctionFollowSymlink(was_default_function); CheckFunctionFollowSymlink(was_default_function);
} }
@ -354,38 +355,38 @@ bool was_default_function = false;
void Functions::MakeFunction() void Functions::MakeFunction()
{ {
if( !request->function ) if( !cur->request->function )
{ {
request->status = WINIX_ERR_NO_FUNCTION; cur->request->status = WINIX_ERR_NO_FUNCTION;
log << log1 << "Functions: no function (neither cat nor ls)" << logend; log << log1 << "Functions: no function (neither cat nor ls)" << logend;
return; return;
} }
if( !system->DirsHaveReadExecPerm() || if( !system->DirsHaveReadExecPerm() ||
!system->HasReadExecAccess(request->function->fun) || !system->HasReadExecAccess(cur->request->function->fun) ||
!request->function->HasAccess() ) !cur->request->function->HasAccess() )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return; return;
} }
if( request->method == Request::get ) if( cur->request->method == Request::get )
{ {
if( request->redirect_to.empty() ) if( cur->request->redirect_to.empty() )
request->function->MakeGet(); cur->request->function->MakeGet();
} }
else else
if( request->method == Request::post ) if( cur->request->method == Request::post )
{ {
// we don't use post with redirecting (the post variables would be lost) // we don't use post with redirecting (the post variables would be lost)
if( request->redirect_to.empty() ) if( cur->request->redirect_to.empty() )
request->function->MakePost(); cur->request->function->MakePost();
else else
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
} }
else else
if( request->method == Request::head ) if( cur->request->method == Request::head )
{ {
// do nothing // do nothing
} }
@ -401,19 +402,19 @@ void Functions::CheckGetPostTimes(time_t difference)
{ {
time_t now = std::time(0); time_t now = std::time(0);
if( request->session->puser ) if( cur->session->puser )
return; return;
if( request->method != Request::post ) if( cur->request->method != Request::post )
return; return;
if( now - request->session->last_time_get >= (time_t)difference ) if( now - cur->session->last_time_get >= (time_t)difference )
return; return;
if( request->AllPostVarEmpty() ) if( cur->request->AllPostVarEmpty() )
return; return;
request->session->spam_score += 1; cur->session->spam_score += 1;
log << log1 << "Functions: spam +1: POST after GET sent too fast" << logend; log << log1 << "Functions: spam +1: POST after GET sent too fast" << logend;
} }
@ -424,15 +425,15 @@ bool Functions::CheckAbuse()
{ {
if( !system->rebus.CheckRebus() ) if( !system->rebus.CheckRebus() )
{ {
request->status = WINIX_ERR_INCORRECT_REBUS; cur->request->status = WINIX_ERR_INCORRECT_REBUS;
return true; return true;
} }
CheckGetPostTimes(); CheckGetPostTimes();
if( request->session->spam_score > 0 ) if( cur->session->spam_score > 0 )
{ {
request->status = WINIX_ERR_SPAM; cur->request->status = WINIX_ERR_SPAM;
log << log1 << "Functions: ignoring due to suspected spamming" << logend; log << log1 << "Functions: ignoring due to suspected spamming" << logend;
return true; return true;
} }
@ -446,17 +447,17 @@ return false;
// returning true if the 'url' has to be changed // returning true if the 'url' has to be changed
void Functions::ReadItemUrlSubject(Item & item, Item::Type item_type) void Functions::ReadItemUrlSubject(Item & item, Item::Type item_type)
{ {
std::wstring * new_subject = request->PostVarp(L"subject"); std::wstring * new_subject = cur->request->PostVarp(L"subject");
std::wstring * new_url = request->PostVarp(L"url"); std::wstring * new_url = cur->request->PostVarp(L"url");
if( new_subject ) if( new_subject )
item.subject = *new_subject; item.subject = *new_subject;
if( item.subject.empty() ) if( item.subject.empty() )
{ {
item.subject = request->dir_tab.back()->subject; item.subject = cur->request->dir_tab.back()->subject;
item.subject += L"_msg_"; item.subject += L"_msg_";
Toa(db->Size(request->dir_tab.back()->id, Item::file), item.subject, 10, false); Toa(db->Size(cur->request->dir_tab.back()->id, Item::file), item.subject, 10, false);
} }
if( new_url ) if( new_url )
@ -475,13 +476,13 @@ void Functions::ReadItemFilterHtml(Item & item)
html_filter.CheckOrphans(HTMLFilter::lang_none); html_filter.CheckOrphans(HTMLFilter::lang_none);
html_filter.SafeMode(true); html_filter.SafeMode(true);
html_filter.Filter(request->PostVar(L"itemcontent"), item.content); html_filter.Filter(cur->request->PostVar(L"itemcontent"), item.content);
} }
void Functions::ReadItemContent(Item & item, const std::wstring & content_type) void Functions::ReadItemContent(Item & item, const std::wstring & content_type)
{ {
bool is_root = request->session->puser && request->session->puser->super_user; bool is_root = cur->session->puser && cur->session->puser->super_user;
bool filter_html = (content_type == L"2") && config->editors_html_safe_mode; bool filter_html = (content_type == L"2") && config->editors_html_safe_mode;
if( filter_html && is_root && config->editors_html_safe_mode_skip_root ) if( filter_html && is_root && config->editors_html_safe_mode_skip_root )
@ -490,14 +491,14 @@ void Functions::ReadItemContent(Item & item, const std::wstring & content_type)
if( filter_html ) if( filter_html )
ReadItemFilterHtml(item); ReadItemFilterHtml(item);
else else
request->PostVar(L"itemcontent", item.content); cur->request->PostVar(L"itemcontent", item.content);
} }
void Functions::ReadItemContentWithType(Item & item) void Functions::ReadItemContentWithType(Item & item)
{ {
item.content_type = Item::ct_formatted_text; // default is formatted text item.content_type = Item::ct_formatted_text; // default is formatted text
request->PostVar(L"contenttype", temp); cur->request->PostVar(L"contenttype", temp);
ReadItemContent(item, temp); ReadItemContent(item, temp);
@ -513,10 +514,10 @@ void Functions::ReadItemContentWithType(Item & item)
// those below need special privileges // those below need special privileges
if( !request->session->puser ) if( !cur->session->puser )
return; return;
long user_id = request->session->puser->id; long user_id = cur->session->puser->id;
if( temp == L"2" ) if( temp == L"2" )
@ -551,7 +552,7 @@ void Functions::ReadItem(Item & item, Item::Type item_type)
return; return;
item.type = item_type; item.type = item_type;
item.parent_id = request->dir_tab.back()->id; // !! moze to dac jako parametr? item.parent_id = cur->request->dir_tab.back()->id; // !! moze to dac jako parametr?
ReadItemUrlSubject(item, item_type); ReadItemUrlSubject(item, item_type);
@ -562,16 +563,16 @@ void Functions::ReadItem(Item & item, Item::Type item_type)
void Functions::SetUser(Item & item) void Functions::SetUser(Item & item)
{ {
if( request->session && request->session->puser ) if( cur->session && cur->session->puser )
{ {
item.user_id = request->session->puser->id; item.user_id = cur->session->puser->id;
item.guest_name.clear(); item.guest_name.clear();
} }
else else
{ {
item.user_id = -1; item.user_id = -1;
request->PostVar(L"guestname", item.guest_name); cur->request->PostVar(L"guestname", item.guest_name);
} }
item.group_id = request->dir_tab.back()->group_id; item.group_id = cur->request->dir_tab.back()->group_id;
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentfunctions #ifndef headerfile_winix_functions_functions
#define headerfilecmslucontentfunctions #define headerfile_winix_functions_functions
#include <string> #include <string>
#include "functionbase.h" #include "functionbase.h"
@ -102,7 +102,7 @@ public:
void SetConfig(Config * pconfig); void SetConfig(Config * pconfig);
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void SetDb(Db * pdb); void SetDb(Db * pdb);
void SetSystem(System * psystem); void SetSystem(System * psystem);
void SetTemplates(Templates * ptemplates); void SetTemplates(Templates * ptemplates);
@ -136,7 +136,7 @@ public:
private: private:
Config * config; Config * config;
Request * request; Cur * cur;
Db * db; Db * db;
System * system; System * system;
Synchro * synchro; Synchro * synchro;

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentlast #ifndef headerfile_winix_functions_last
#define headerfilecmslucontentlast #define headerfile_winix_functions_last
#include "functionbase.h" #include "functionbase.h"

View File

@ -25,7 +25,7 @@ Ln::Ln()
bool Ln::HasAccess() bool Ln::HasAccess()
{ {
return system->HasWriteAccess(*request->dir_tab.back()); return system->HasWriteAccess(*cur->request->dir_tab.back());
} }
@ -33,53 +33,53 @@ void Ln::CreateSymbolicLink(const std::wstring & link_to)
{ {
item.Clear(); // setting the date to now item.Clear(); // setting the date to now
item.type = Item::symlink; item.type = Item::symlink;
item.parent_id = request->dir_tab.back()->id; item.parent_id = cur->request->dir_tab.back()->id;
item.url = request->PostVar(L"url"); item.url = cur->request->PostVar(L"url");
item.link_to = link_to; item.link_to = link_to;
item.link_redirect = request->IsPostVar(L"makeredirect") ? 1 : 0; item.link_redirect = cur->request->IsPostVar(L"makeredirect") ? 1 : 0;
item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
functions->SetUser(item); functions->SetUser(item);
functions->PrepareUrl(item); functions->PrepareUrl(item);
request->status = db->AddItem(item); cur->request->status = db->AddItem(item);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
log << log3 << "Ln: created a symbolic link to: " << link_to << logend; log << log3 << "Ln: created a symbolic link to: " << link_to << logend;
} }
void Ln::CreateHardLink(const std::wstring & link_to) void Ln::CreateHardLink(const std::wstring & link_to)
{ {
int res = system->FollowAllLinks(request->dir_tab, link_to, dir_tab, item, false, false); int res = system->FollowAllLinks(cur->request->dir_tab, link_to, dir_tab, item, false, false);
if( res == 0 ) if( res == 0 )
{ {
log << log2 << "Ln: " << link_to << " is a directory (can't create a hard link)" << logend; log << log2 << "Ln: " << link_to << " is a directory (can't create a hard link)" << logend;
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
} }
else else
if( res == 1 ) if( res == 1 )
{ {
item.SetDateToNow(); item.SetDateToNow();
item.type = Item::file; item.type = Item::file;
item.parent_id = request->dir_tab.back()->id; item.parent_id = cur->request->dir_tab.back()->id;
item.url = request->PostVar(L"url"); item.url = cur->request->PostVar(L"url");
item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
functions->SetUser(item); functions->SetUser(item);
functions->PrepareUrl(item); functions->PrepareUrl(item);
request->status = db->AddHardLink(item); cur->request->status = db->AddHardLink(item);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
log << log3 << "Ln: created a hard link to: " << link_to << logend; log << log3 << "Ln: created a hard link to: " << link_to << logend;
} }
else else
if( res == 5 || res == 6 ) if( res == 5 || res == 6 )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
} }
else else
{ {
request->status = WINIX_ERR_NO_ITEM; cur->request->status = WINIX_ERR_NO_ITEM;
} }
} }
@ -88,20 +88,20 @@ void Ln::CreateHardLink(const std::wstring & link_to)
// we do not use notifications for links // we do not use notifications for links
void Ln::MakePost() void Ln::MakePost()
{ {
link_to = request->PostVar(L"linkto"); link_to = cur->request->PostVar(L"linkto");
TrimWhite(link_to); TrimWhite(link_to);
if( link_to.empty() ) if( link_to.empty() )
return; return;
int type = Toi(request->PostVar(L"linktype")); int type = Toi(cur->request->PostVar(L"linktype"));
if( type == 0 ) if( type == 0 )
CreateHardLink(link_to); CreateHardLink(link_to);
else else
CreateSymbolicLink(link_to); CreateSymbolicLink(link_to);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
system->RedirectTo(item); system->RedirectTo(item);
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentln #ifndef headerfile_winix_functions_ln
#define headerfilecmslucontentln #define headerfile_winix_functions_ln
#include "functionbase.h" #include "functionbase.h"

View File

@ -22,15 +22,15 @@ Login::Login()
void Login::MakePost() void Login::MakePost()
{ {
if( request->session->id == 0 ) if( cur->session->id == 0 )
{ {
log << log1 << "Login: can't login in a temporary session (skipped)" << logend; log << log1 << "Login: can't login in a temporary session (skipped)" << logend;
return; return;
} }
const std::wstring & login = request->PostVar(L"login"); const std::wstring & login = cur->request->PostVar(L"login");
const std::wstring & pass = request->PostVar(L"password"); const std::wstring & pass = cur->request->PostVar(L"password");
const std::wstring & remem = request->PostVar(L"rememberme"); const std::wstring & remem = cur->request->PostVar(L"rememberme");
long user_id; long user_id;
if( db->CheckUser(login, pass, user_id) ) if( db->CheckUser(login, pass, user_id) )

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentlogin #ifndef headerfile_winix_functions_login
#define headerfilecmslucontentlogin #define headerfile_winix_functions_login
#include "functionbase.h" #include "functionbase.h"

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentlogout #ifndef headerfile_winix_functions_logout
#define headerfilecmslucontentlogout #define headerfile_winix_functions_logout
#include "functionbase.h" #include "functionbase.h"

View File

@ -23,23 +23,23 @@ Ls::Ls()
void Ls::MakeGet() void Ls::MakeGet()
{ {
if( !request->is_item ) if( !cur->request->is_item )
{ {
DbItemQuery iq; DbItemQuery iq;
iq.sel_content = false; iq.sel_content = false;
iq.WhereParentId(request->dir_tab.back()->id); iq.WhereParentId(cur->request->dir_tab.back()->id);
iq.WhereType(Item::dir, false); iq.WhereType(Item::dir, false);
if( request->IsParam(L"ckeditor_browse") ) if( cur->request->IsParam(L"ckeditor_browse") )
{ {
iq.WhereFileType(WINIX_ITEM_FILETYPE_IMAGE); iq.WhereFileType(WINIX_ITEM_FILETYPE_IMAGE);
db->GetItems(request->item_tab, iq); db->GetItems(cur->request->item_tab, iq);
} }
else else
{ {
db->GetItems(request->item_tab, iq); db->GetItems(cur->request->item_tab, iq);
} }
} }
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentls #ifndef headerfile_winix_functions_ls
#define headerfilecmslucontentls #define headerfile_winix_functions_ls
#include "functionbase.h" #include "functionbase.h"

View File

@ -30,7 +30,7 @@ bool Mkdir::HasAccess(const Item & item)
if( item.type != Item::dir ) if( item.type != Item::dir )
return false; return false;
if( request->session->puser && request->session->puser->super_user ) if( cur->session->puser && cur->session->puser->super_user )
// super user can use mkdir everywhere // super user can use mkdir everywhere
return true; return true;
@ -40,7 +40,7 @@ bool Mkdir::HasAccess(const Item & item)
if( !system->mounts.pmount->IsPar(system->mounts.MountParMkdirOn()) ) if( !system->mounts.pmount->IsPar(system->mounts.MountParMkdirOn()) )
return true; return true;
if( system->mounts.pmount->IsArg(system->mounts.MountParMkdirOn(), request->dir_tab.size()) ) if( system->mounts.pmount->IsArg(system->mounts.MountParMkdirOn(), cur->request->dir_tab.size()) )
return true; return true;
return false; return false;
@ -49,7 +49,7 @@ return false;
bool Mkdir::HasAccess() bool Mkdir::HasAccess()
{ {
if( request->is_item || !HasAccess(*request->dir_tab.back()) ) if( cur->request->is_item || !HasAccess(*cur->request->dir_tab.back()) )
return false; return false;
return true; return true;
@ -60,19 +60,19 @@ return true;
void Mkdir::PostFunMkdir(bool add_to_dir_tab, int privileges) void Mkdir::PostFunMkdir(bool add_to_dir_tab, int privileges)
{ {
functions->ReadItem(request->item, Item::dir); functions->ReadItem(cur->request->item, Item::dir);
functions->SetUser(request->item); functions->SetUser(cur->request->item);
request->item.privileges = privileges; cur->request->item.privileges = privileges;
request->status = system->dirs.AddDirectory(request->item, add_to_dir_tab); cur->request->status = system->dirs.AddDirectory(cur->request->item, add_to_dir_tab);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
{ {
system->RedirectTo(request->item); system->RedirectTo(cur->request->item);
} }
else else
{ {
log << log1 << "Content: PostFunMkdir: Error: " << request->status << logend; log << log1 << "Content: PostFunMkdir: Error: " << cur->request->status << logend;
} }
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentmkdir #ifndef headerfile_winix_functions_mkdir
#define headerfilecmslucontentmkdir #define headerfile_winix_functions_mkdir
#include "functionbase.h" #include "functionbase.h"

View File

@ -35,15 +35,15 @@ Item * last;
Item * last_but_one = 0; Item * last_but_one = 0;
size_t dir_tab_size; size_t dir_tab_size;
last = request->dir_tab.back(); last = cur->request->dir_tab.back();
dir_tab_size = request->dir_tab.size(); dir_tab_size = cur->request->dir_tab.size();
if( dir_tab_size <= 1 ) if( dir_tab_size <= 1 )
return false; // you cannot move the root directory return false; // you cannot move the root directory
last_but_one = request->dir_tab[dir_tab_size - 2]; last_but_one = cur->request->dir_tab[dir_tab_size - 2];
if( request->method != Request::post ) if( cur->request->method != Request::post )
{ {
// used in GET or HEAD // used in GET or HEAD
// we don't now whether we move the last directory or the last but one // we don't now whether we move the last directory or the last but one
@ -56,7 +56,7 @@ size_t dir_tab_size;
{ {
// used in POST when the moving is performed // used in POST when the moving is performed
if( request->IsPostVar(L"onlycontent") ) if( cur->request->IsPostVar(L"onlycontent") )
return system->HasWriteAccess(*last); return system->HasWriteAccess(*last);
else else
return system->HasWriteAccess(*last_but_one); return system->HasWriteAccess(*last_but_one);
@ -70,13 +70,13 @@ return true;
bool Mv::CheckAccessFrom() bool Mv::CheckAccessFrom()
{ {
if( request->is_item ) if( cur->request->is_item )
{ {
// moving a file // moving a file
if( !system->HasWriteAccess(*request->dir_tab.back()) ) if( !system->HasWriteAccess(*cur->request->dir_tab.back()) )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false; return false;
} }
} }
@ -84,7 +84,7 @@ bool Mv::CheckAccessFrom()
{ {
if( !CheckAccessFromToDir() ) if( !CheckAccessFromToDir() )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false; return false;
} }
} }
@ -99,7 +99,7 @@ bool Mv::CheckAccessTo()
!system->HasReadExecAccessToPath(dir_tab) || !system->HasReadExecAccessToPath(dir_tab) ||
!system->HasWriteAccess(*dir_tab.back()) ) !system->HasWriteAccess(*dir_tab.back()) )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false; return false;
} }
@ -112,14 +112,14 @@ return true;
bool Mv::ParseDir() bool Mv::ParseDir()
{ {
const std::wstring & new_dir = request->PostVar(L"to"); const std::wstring & new_dir = cur->request->PostVar(L"to");
int res = system->dirs.FollowLink(request->dir_tab, new_dir, dir_tab, file); int res = system->dirs.FollowLink(cur->request->dir_tab, new_dir, dir_tab, file);
if( res == 3 ) if( res == 3 )
request->status = WINIX_ERR_NO_ROOT_DIR; cur->request->status = WINIX_ERR_NO_ROOT_DIR;
else else
if( res != 0 && res != 1 ) if( res != 0 && res != 1 )
request->status = WINIX_ERR_INCORRECT_DIR; cur->request->status = WINIX_ERR_INCORRECT_DIR;
return res == 0 || res == 1; return res == 0 || res == 1;
} }
@ -142,7 +142,7 @@ bool Mv::MoveStaticFile(const std::wstring & from, const std::wstring & to)
else else
{ {
log << log1 << "Mv: can't move a file from: " << from << ", to: " << to << logend; log << log1 << "Mv: can't move a file from: " << from << ", to: " << to << logend;
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false; return false;
} }
} }
@ -161,13 +161,13 @@ bool res1, res2, res3, res4, res5;
if( !res1 || !res2 || !res3 || !res4 || !res5 ) if( !res1 || !res2 || !res3 || !res4 || !res5 )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return; return;
} }
if( MoveStaticFile(old_path, new_path) ) if( MoveStaticFile(old_path, new_path) )
{ {
request->status = db->EditFileById(item, item.id); cur->request->status = db->EditFileById(item, item.id);
if( item.has_thumb ) if( item.has_thumb )
MoveStaticFile(old_path_thumb, new_path_thumb); MoveStaticFile(old_path_thumb, new_path_thumb);
@ -189,9 +189,9 @@ void Mv::MoveFileOrSymlink(Item & item)
} }
item.parent_id = dir_tab.back()->id; item.parent_id = dir_tab.back()->id;
request->status = db->EditParentUrlById(item, item.id); cur->request->status = db->EditParentUrlById(item, item.id);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
{ {
if( item.type == Item::file ) if( item.type == Item::file )
log << log3 << "Mv: file: "; log << log3 << "Mv: file: ";
@ -280,13 +280,13 @@ void Mv::MoveDir(Item & dir)
if( dst_dir_id == dir.id || system->dirs.HasParent(dst_dir_id, dir.id) ) if( dst_dir_id == dir.id || system->dirs.HasParent(dst_dir_id, dir.id) )
{ {
log << log1 << "Mv: cannot move directory to inside it" << logend; log << log1 << "Mv: cannot move directory to inside it" << logend;
request->status = WINIX_ERR_INCORRECT_DIR; cur->request->status = WINIX_ERR_INCORRECT_DIR;
return; return;
} }
if( !system->dirs.ChangeParent(dir.id, dst_dir_id) ) if( !system->dirs.ChangeParent(dir.id, dst_dir_id) )
{ {
request->status = WINIX_ERR_INCORRECT_DIR; cur->request->status = WINIX_ERR_INCORRECT_DIR;
return; return;
} }
@ -299,9 +299,9 @@ void Mv::MoveDir(Item & dir)
file.clear(); file.clear();
} }
request->status = db->EditParentUrlById(dir, dir.id); cur->request->status = db->EditParentUrlById(dir, dir.id);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
{ {
log << log3 << "Mv: directory: " << old_url << " was moved to: "; log << log3 << "Mv: directory: " << old_url << " was moved to: ";
system->dirs.LogDir(dir_tab); system->dirs.LogDir(dir_tab);
@ -334,13 +334,13 @@ return false;
void Mv::PostMoveFile() void Mv::PostMoveFile()
{ {
if( IsTheSameFile(request->item) ) if( IsTheSameFile(cur->request->item) )
return; return;
MoveFileOrSymlink(request->item); MoveFileOrSymlink(cur->request->item);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
system->RedirectTo(request->item); system->RedirectTo(cur->request->item);
} }
@ -349,14 +349,14 @@ void Mv::PostMoveDirContent()
{ {
if( !file.empty() ) if( !file.empty() )
{ {
request->status = WINIX_ERR_INCORRECT_DIR; cur->request->status = WINIX_ERR_INCORRECT_DIR;
return; return;
} }
if( request->dir_tab.back()->id == dir_tab.back()->id ) if( cur->request->dir_tab.back()->id == dir_tab.back()->id )
return; // nothing to do return; // nothing to do
MoveDirContent(*request->dir_tab.back()); MoveDirContent(*cur->request->dir_tab.back());
system->RedirectToLastDir(); system->RedirectToLastDir();
} }
@ -364,7 +364,7 @@ void Mv::PostMoveDirContent()
void Mv::PostMoveDir() void Mv::PostMoveDir()
{ {
Item & last_dir = *request->dir_tab.back(); Item & last_dir = *cur->request->dir_tab.back();
Item & new_dir = *dir_tab.back(); Item & new_dir = *dir_tab.back();
if( file.empty() && new_dir.id == last_dir.id ) if( file.empty() && new_dir.id == last_dir.id )
@ -372,7 +372,7 @@ void Mv::PostMoveDir()
MoveDir(last_dir); MoveDir(last_dir);
if( request->status == WINIX_ERR_OK ) if( cur->request->status == WINIX_ERR_OK )
system->RedirectToLastDir(); system->RedirectToLastDir();
} }
@ -387,13 +387,13 @@ void Mv::MakePost()
{ {
Prepare(); Prepare();
if( request->is_item ) if( cur->request->is_item )
{ {
PostMoveFile(); PostMoveFile();
} }
else else
{ {
if( request->IsPostVar(L"onlycontent") ) if( cur->request->IsPostVar(L"onlycontent") )
PostMoveDirContent(); PostMoveDirContent();
else else
PostMoveDir(); PostMoveDir();

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentmv #ifndef headerfile_winix_functions_mv
#define headerfilecmslucontentmv #define headerfile_winix_functions_mv
#include "functionbase.h" #include "functionbase.h"

View File

@ -21,14 +21,14 @@ Node::Node()
void Node::MakeGet() void Node::MakeGet()
{ {
if( request->param_tab.empty() ) if( cur->request->param_tab.empty() )
{ {
//request->status = Error //cur->request->status = Error
//!!zglosic 404 //!!zglosic 404
return; return;
} }
long id = Tol(request->param_tab[0].name); long id = Tol(cur->request->param_tab[0].name);
system->RedirectTo(id); system->RedirectTo(id);
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentnode #ifndef headerfile_winix_functions_node
#define headerfilecmslucontentnode #define headerfile_winix_functions_node
#include "functionbase.h" #include "functionbase.h"

View File

@ -23,7 +23,7 @@ Priv::Priv()
void Priv::MakePost() void Priv::MakePost()
{ {
priv_changer.SetRequest(request); priv_changer.SetCur(cur);
priv_changer.SetSystem(system); priv_changer.SetSystem(system);
priv_changer.SetDb(db); priv_changer.SetDb(db);
@ -33,7 +33,7 @@ void Priv::MakePost()
void Priv::MakeGet() void Priv::MakeGet()
{ {
priv_changer.SetRequest(request); priv_changer.SetCur(cur);
priv_changer.SetSystem(system); priv_changer.SetSystem(system);
priv_changer.SetDb(db); priv_changer.SetDb(db);

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentpriv #ifndef headerfile_winix_functions_priv
#define headerfilecmslucontentpriv #define headerfile_winix_functions_priv
#include "functionbase.h" #include "functionbase.h"
#include "privchanger.h" #include "privchanger.h"

View File

@ -10,9 +10,9 @@
#include "privchanger.h" #include "privchanger.h"
void PrivChanger::SetRequest(Request * prequest) void PrivChanger::SetCur(Cur * pcur)
{ {
request = prequest; cur = pcur;
} }
@ -34,9 +34,9 @@ bool PrivChanger::CheckAccess()
// but we cannot use parameter 'r' on files // but we cannot use parameter 'r' on files
// and only logged users can change permissions // and only logged users can change permissions
if( !request->session->puser || (request->is_item && request->IsParam(L"r")) ) if( !cur->session->puser || (cur->request->is_item && cur->request->IsParam(L"r")) )
{ {
request->status = WINIX_ERR_PERMISSION_DENIED; cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false; return false;
} }
@ -102,7 +102,7 @@ void PrivChanger::ChangePriv(Item & item, long user_id, long group_id, int privi
return; return;
} }
request->status = db->EditPrivById(item, item.id); cur->request->status = db->EditPrivById(item, item.id);
} }
@ -174,12 +174,12 @@ void PrivChanger::PrivFilesInDir(long parent_id)
iq.WhereParentId(parent_id); iq.WhereParentId(parent_id);
iq.WhereType(Item::dir, false); iq.WhereType(Item::dir, false);
db->GetItems(request->item_tab, iq); db->GetItems(cur->request->item_tab, iq);
std::vector<Item>::iterator i = request->item_tab.begin(); std::vector<Item>::iterator i = cur->request->item_tab.begin();
for( ; i != request->item_tab.end() ; ++i) for( ; i != cur->request->item_tab.end() ; ++i)
{ {
PrivLog(L"changed file: ", -1, i->url); PrivLog(L"changed file: ", -1, i->url);
ChangePriv(*i, user_id_file, group_id_file, priv_file); ChangePriv(*i, user_id_file, group_id_file, priv_file);
@ -210,9 +210,9 @@ void PrivChanger::PrivDir(long parent_id)
void PrivChanger::ReadPriv(const wchar_t * user_in, const wchar_t * group_in, const wchar_t * priv_in, void PrivChanger::ReadPriv(const wchar_t * user_in, const wchar_t * group_in, const wchar_t * priv_in,
long & user_id, long & group_id, int & priv) long & user_id, long & group_id, int & priv)
{ {
const std::wstring & user_str = request->PostVar(user_in); const std::wstring & user_str = cur->request->PostVar(user_in);
const std::wstring & group_str = request->PostVar(group_in); const std::wstring & group_str = cur->request->PostVar(group_in);
const std::wstring & priv_str = request->PostVar(priv_in); const std::wstring & priv_str = cur->request->PostVar(priv_in);
if( change_owner ) if( change_owner )
{ {
@ -234,18 +234,18 @@ void PrivChanger::PrivDir()
PrivLogStart(L"Content: changes for dirs: ", user_id_dir, group_id_dir, priv_dir); PrivLogStart(L"Content: changes for dirs: ", user_id_dir, group_id_dir, priv_dir);
if( request->IsPostVar(L"changecurrentdir") ) if( cur->request->IsPostVar(L"changecurrentdir") )
{ {
Item & last_dir = *request->dir_tab.back(); Item & last_dir = *cur->request->dir_tab.back();
PrivLog(L"changed dir: ", last_dir.id, last_dir.url); PrivLog(L"changed dir: ", last_dir.id, last_dir.url);
ChangePriv(*request->dir_tab.back(), user_id_dir, group_id_dir, priv_dir); ChangePriv(*cur->request->dir_tab.back(), user_id_dir, group_id_dir, priv_dir);
} }
subdirectories = request->IsPostVar(L"changesubdirs"); subdirectories = cur->request->IsPostVar(L"changesubdirs");
// go through all directories // go through all directories
PrivDir(request->dir_tab.back()->id); PrivDir(cur->request->dir_tab.back()->id);
system->RedirectToLastDir(); system->RedirectToLastDir();
} }
@ -258,14 +258,14 @@ void PrivChanger::PrivOneItem()
ReadPriv(L"user", L"group", L"privileges", user_id_file, group_id_file, priv_file); ReadPriv(L"user", L"group", L"privileges", user_id_file, group_id_file, priv_file);
PrivLogStart(L"Content: changes: ", user_id_file, group_id_file, priv_file); PrivLogStart(L"Content: changes: ", user_id_file, group_id_file, priv_file);
if( request->is_item ) if( cur->request->is_item )
{ {
ChangePriv(request->item, user_id_file, group_id_file, priv_file); ChangePriv(cur->request->item, user_id_file, group_id_file, priv_file);
system->RedirectTo(request->item); system->RedirectTo(cur->request->item);
} }
else else
{ {
ChangePriv(*request->dir_tab.back(), user_id_file, group_id_file, priv_file); ChangePriv(*cur->request->dir_tab.back(), user_id_file, group_id_file, priv_file);
system->RedirectToLastDir(); system->RedirectToLastDir();
} }
} }
@ -280,7 +280,7 @@ void PrivChanger::Change(bool change_owner_, bool change_priv_)
change_owner = change_owner_; change_owner = change_owner_;
change_priv = change_priv_; change_priv = change_priv_;
if( request->IsParam(L"r") ) if( cur->request->IsParam(L"r") )
{ {
PrivDir(); PrivDir();
} }

View File

@ -7,8 +7,8 @@
* *
*/ */
#ifndef headerfilecmslucontentprivchanger #ifndef headerfile_winix_functions_privchanger
#define headerfilecmslucontentprivchanger #define headerfile_winix_functions_privchanger
#include "core/request.h" #include "core/request.h"
@ -24,13 +24,13 @@ public:
bool CheckAccess(); bool CheckAccess();
void Change(bool change_owner_, bool change_priv_); void Change(bool change_owner_, bool change_priv_);
void SetRequest(Request * prequest); void SetCur(Cur * pcur);
void SetSystem(System * psystem); void SetSystem(System * psystem);
void SetDb(Db * pdb); void SetDb(Db * pdb);
private: private:
Request * request; Cur * cur;
System * system; System * system;
Db * db; Db * db;

Some files were not shown because too many files have changed in this diff Show More