added: to the Item: auth_path - a path to a static file (if auth is different from auth_none)

added: function 'mv' (move)



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@596 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
Tomasz Sowa 2010-03-15 01:47:26 +00:00
parent ebd868fa33
commit 6fbcffe63b
33 changed files with 1122 additions and 319 deletions

View File

@ -5,29 +5,29 @@ adduser.o: ../templates/patterncacher.h ../templates/misc.h
adduser.o: ../templates/localefilter.h ../core/locale.h
adduser.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
adduser.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
adduser.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
adduser.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
adduser.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
adduser.o: ../core/compress.h ../core/acceptencodingparser.h
adduser.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
adduser.o: ../core/postmultiparser.h ../core/ticket.h ../core/data.h
adduser.o: ../core/dirs.h ../core/dircontainer.h ../core/users.h
adduser.o: ../core/ugcontainer.h ../core/groups.h ../core/group.h
adduser.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
adduser.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
adduser.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
adduser.o: ../core/request.h ../core/requesttypes.h ../core/session.h
adduser.o: ../core/rebus.h ../core/function.h ../core/compress.h
adduser.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
adduser.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/data.h
adduser.o: ../core/dirs.h ../core/users.h ../core/groups.h
adduser.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
adduser.o: ../core/mount.h ../core/loadavg.h ../core/db.h
adduser.o: ../core/mount.h ../core/loadavg.h
cat.o: content.h ../core/item.h ../templates/templates.h
cat.o: ../templates/patterncacher.h ../templates/misc.h
cat.o: ../templates/localefilter.h ../core/locale.h
cat.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
cat.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
cat.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
cat.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
cat.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
cat.o: ../core/compress.h ../core/acceptencodingparser.h
cat.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
cat.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
cat.o: ../core/data.h ../core/dirs.h ../core/dircontainer.h ../core/users.h
cat.o: ../core/ugcontainer.h ../core/groups.h ../core/group.h
cat.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
cat.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
cat.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
cat.o: ../core/request.h ../core/requesttypes.h ../core/session.h
cat.o: ../core/rebus.h ../core/function.h ../core/compress.h
cat.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
cat.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
cat.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
cat.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
cat.o: ../core/mount.h ../core/loadavg.h
content.o: content.h ../core/item.h ../templates/templates.h
@ -35,31 +35,30 @@ content.o: ../templates/patterncacher.h ../templates/misc.h
content.o: ../templates/localefilter.h ../core/locale.h
content.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
content.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
content.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
content.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
content.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
content.o: ../core/compress.h ../core/acceptencodingparser.h
content.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
content.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
content.o: ../core/db.h ../core/group.h ../core/dircontainer.h
content.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h
content.o: ../core/users.h ../core/groups.h ../core/functions.h
content.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
content.o: ../core/loadavg.h ../core/misc.h ../core/plugin.h
content.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
content.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
content.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
content.o: ../core/request.h ../core/requesttypes.h ../core/session.h
content.o: ../core/rebus.h ../core/function.h ../core/compress.h
content.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
content.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
content.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
content.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
content.o: ../core/mount.h ../core/loadavg.h ../core/misc.h ../core/plugin.h
content.o: ../core/request.h ../core/data.h ../core/pluginmsg.h
createthread.o: content.h ../core/item.h ../templates/templates.h
createthread.o: ../templates/patterncacher.h ../templates/misc.h
createthread.o: ../templates/localefilter.h ../core/locale.h
createthread.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
createthread.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
createthread.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
createthread.o: ../core/group.h ../core/thread.h ../core/error.h
createthread.o: ../core/log.h ../core/dircontainer.h ../core/ugcontainer.h
createthread.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
createthread.o: ../core/session.h ../core/item.h ../core/error.h
createthread.o: ../core/log.h ../core/user.h ../core/rebus.h
createthread.o: ../core/function.h ../core/thread.h ../core/compress.h
createthread.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
createthread.o: ../core/htmlfilter.h ../core/postmultiparser.h
createthread.o: ../core/ticket.h ../core/error.h ../core/db.h ../core/group.h
createthread.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/mount.h
createthread.o: ../core/session.h ../core/rebus.h ../core/function.h
createthread.o: ../core/compress.h ../core/acceptencodingparser.h
createthread.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
createthread.o: ../core/postmultiparser.h ../core/error.h ../core/mount.h
createthread.o: ../core/data.h ../core/dirs.h ../core/users.h
createthread.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
createthread.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h
@ -68,14 +67,14 @@ createticket.o: ../templates/patterncacher.h ../templates/misc.h
createticket.o: ../templates/localefilter.h ../core/locale.h
createticket.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
createticket.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
createticket.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
createticket.o: ../core/group.h ../core/thread.h ../core/error.h
createticket.o: ../core/log.h ../core/dircontainer.h ../core/ugcontainer.h
createticket.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
createticket.o: ../core/session.h ../core/item.h ../core/error.h
createticket.o: ../core/log.h ../core/user.h ../core/rebus.h
createticket.o: ../core/function.h ../core/thread.h ../core/compress.h
createticket.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
createticket.o: ../core/htmlfilter.h ../core/postmultiparser.h
createticket.o: ../core/ticket.h ../core/error.h ../core/db.h ../core/group.h
createticket.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/mount.h
createticket.o: ../core/session.h ../core/rebus.h ../core/function.h
createticket.o: ../core/compress.h ../core/acceptencodingparser.h
createticket.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
createticket.o: ../core/postmultiparser.h ../core/error.h ../core/mount.h
createticket.o: ../core/data.h ../core/dirs.h ../core/users.h
createticket.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
createticket.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h
@ -84,63 +83,61 @@ default.o: ../templates/patterncacher.h ../templates/misc.h
default.o: ../templates/localefilter.h ../core/locale.h
default.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
default.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
default.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
default.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
default.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
default.o: ../core/compress.h ../core/acceptencodingparser.h
default.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
default.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
default.o: ../core/db.h ../core/group.h ../core/dircontainer.h
default.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h
default.o: ../core/users.h ../core/groups.h ../core/functions.h
default.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
default.o: ../core/loadavg.h
default.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
default.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
default.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
default.o: ../core/request.h ../core/requesttypes.h ../core/session.h
default.o: ../core/rebus.h ../core/function.h ../core/compress.h
default.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
default.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
default.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
default.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
default.o: ../core/mount.h ../core/loadavg.h
download.o: content.h ../core/item.h ../templates/templates.h
download.o: ../templates/patterncacher.h ../templates/misc.h
download.o: ../templates/localefilter.h ../core/locale.h
download.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
download.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
download.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
download.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
download.o: ../core/user.h ../core/rebus.h ../core/function.h
download.o: ../core/thread.h ../core/compress.h
download.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
download.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
download.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
download.o: ../core/request.h ../core/requesttypes.h ../core/session.h
download.o: ../core/rebus.h ../core/function.h ../core/compress.h
download.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
download.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/ticket.h
download.o: ../core/data.h ../core/dirs.h ../core/dircontainer.h
download.o: ../core/users.h ../core/ugcontainer.h ../core/groups.h
download.o: ../core/group.h ../core/functions.h ../core/lastcontainer.h
download.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h
download.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/data.h
download.o: ../core/dirs.h ../core/users.h ../core/groups.h
download.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
download.o: ../core/mount.h ../core/loadavg.h
editticket.o: content.h ../core/item.h ../templates/templates.h
editticket.o: ../templates/patterncacher.h ../templates/misc.h
editticket.o: ../templates/localefilter.h ../core/locale.h
editticket.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
editticket.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
editticket.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
editticket.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
editticket.o: ../core/user.h ../core/rebus.h ../core/function.h
editticket.o: ../core/thread.h ../core/compress.h
editticket.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
editticket.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
editticket.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
editticket.o: ../core/request.h ../core/requesttypes.h ../core/session.h
editticket.o: ../core/rebus.h ../core/function.h ../core/compress.h
editticket.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
editticket.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/ticket.h
editticket.o: ../core/error.h ../core/db.h ../core/group.h
editticket.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/mount.h
editticket.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
editticket.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
editticket.o: ../core/mount.h ../core/loadavg.h
editticket.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
editticket.o: ../core/mount.h ../core/data.h ../core/dirs.h ../core/users.h
editticket.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
editticket.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h
emacs.o: content.h ../core/item.h ../templates/templates.h
emacs.o: ../templates/patterncacher.h ../templates/misc.h
emacs.o: ../templates/localefilter.h ../core/locale.h
emacs.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
emacs.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
emacs.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
emacs.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
emacs.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
emacs.o: ../core/compress.h ../core/acceptencodingparser.h
emacs.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
emacs.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
emacs.o: ../core/db.h ../core/group.h ../core/dircontainer.h
emacs.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
emacs.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
emacs.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h ../core/notify.h
emacs.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
emacs.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
emacs.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
emacs.o: ../core/request.h ../core/requesttypes.h ../core/session.h
emacs.o: ../core/rebus.h ../core/function.h ../core/compress.h
emacs.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
emacs.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
emacs.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
emacs.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
emacs.o: ../core/mount.h ../core/loadavg.h ../core/notify.h
emacs.o: ../templatesnotify/templatesnotify.h ../core/mount.h
emacs.o: ../templates/misc.h ../core/misc.h
last.o: content.h ../core/item.h ../templates/templates.h
@ -148,207 +145,230 @@ last.o: ../templates/patterncacher.h ../templates/misc.h
last.o: ../templates/localefilter.h ../core/locale.h
last.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
last.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
last.o: ../core/ticket.h
last.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
last.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
last.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
login.o: content.h ../core/item.h ../templates/templates.h
login.o: ../templates/patterncacher.h ../templates/misc.h
login.o: ../templates/localefilter.h ../core/locale.h
login.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
login.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
login.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
login.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
login.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
login.o: ../core/compress.h ../core/acceptencodingparser.h
login.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
login.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
login.o: ../core/db.h ../core/group.h ../core/dircontainer.h
login.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
login.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
login.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h
login.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
login.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
login.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
login.o: ../core/request.h ../core/requesttypes.h ../core/session.h
login.o: ../core/rebus.h ../core/function.h ../core/compress.h
login.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
login.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
login.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
login.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
login.o: ../core/mount.h ../core/loadavg.h
logout.o: content.h ../core/item.h ../templates/templates.h
logout.o: ../templates/patterncacher.h ../templates/misc.h
logout.o: ../templates/localefilter.h ../core/locale.h
logout.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
logout.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
logout.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
logout.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
logout.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
logout.o: ../core/compress.h ../core/acceptencodingparser.h
logout.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
logout.o: ../core/postmultiparser.h ../core/ticket.h ../core/data.h
logout.o: ../core/dirs.h ../core/dircontainer.h ../core/users.h
logout.o: ../core/ugcontainer.h ../core/groups.h ../core/group.h
logout.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
logout.o: ../core/mount.h ../core/loadavg.h
logout.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
logout.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
logout.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
logout.o: ../core/request.h ../core/requesttypes.h ../core/session.h
logout.o: ../core/rebus.h ../core/function.h ../core/compress.h
logout.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
logout.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/data.h
logout.o: ../core/dirs.h ../core/users.h ../core/groups.h ../core/functions.h
logout.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
logout.o: ../core/loadavg.h
ls.o: content.h ../core/item.h ../templates/templates.h
ls.o: ../templates/patterncacher.h ../templates/misc.h
ls.o: ../templates/localefilter.h ../core/locale.h ../confparser/confparser.h
ls.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
ls.o: ../core/log.h ../core/thread.h ../core/ticket.h ../core/request.h
ls.o: ../core/requesttypes.h ../core/session.h ../core/item.h ../core/error.h
ls.o: ../core/log.h ../core/user.h ../core/rebus.h ../core/function.h
ls.o: ../core/thread.h ../core/compress.h ../core/acceptencodingparser.h
ls.o: ../core/log.h ../core/thread.h ../core/ticket.h ../core/db.h
ls.o: ../core/item.h ../core/user.h ../core/group.h ../core/thread.h
ls.o: ../core/error.h ../core/log.h ../core/dircontainer.h
ls.o: ../core/ugcontainer.h ../core/ticket.h ../core/request.h
ls.o: ../core/requesttypes.h ../core/session.h ../core/rebus.h
ls.o: ../core/function.h ../core/compress.h ../core/acceptencodingparser.h
ls.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
ls.o: ../core/postmultiparser.h ../core/ticket.h ../core/db.h ../core/group.h
ls.o: ../core/dircontainer.h ../core/ugcontainer.h
ls.o: ../core/postmultiparser.h
misc_item.o: content.h ../core/item.h ../templates/templates.h
misc_item.o: ../templates/patterncacher.h ../templates/misc.h
misc_item.o: ../templates/localefilter.h ../core/locale.h
misc_item.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
misc_item.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
misc_item.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
misc_item.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
misc_item.o: ../core/user.h ../core/rebus.h ../core/function.h
misc_item.o: ../core/thread.h ../core/compress.h
misc_item.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
misc_item.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
misc_item.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
misc_item.o: ../core/request.h ../core/requesttypes.h ../core/session.h
misc_item.o: ../core/rebus.h ../core/function.h ../core/compress.h
misc_item.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
misc_item.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/ticket.h
misc_item.o: ../core/misc.h ../core/db.h ../core/group.h
misc_item.o: ../core/dircontainer.h ../core/ugcontainer.h
misc_item.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/misc.h
misc_specialfile.o: content.h ../core/item.h ../templates/templates.h
misc_specialfile.o: ../templates/patterncacher.h ../templates/misc.h
misc_specialfile.o: ../templates/localefilter.h ../core/locale.h
misc_specialfile.o: ../confparser/confparser.h
misc_specialfile.o: ../templates/ckeditorgetparser.h
misc_specialfile.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
misc_specialfile.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
misc_specialfile.o: ../core/session.h ../core/item.h ../core/error.h
misc_specialfile.o: ../core/log.h ../core/user.h ../core/rebus.h
misc_specialfile.o: ../core/function.h ../core/thread.h ../core/compress.h
misc_specialfile.o: ../core/ticket.h ../core/db.h ../core/item.h
misc_specialfile.o: ../core/user.h ../core/group.h ../core/thread.h
misc_specialfile.o: ../core/error.h ../core/log.h ../core/dircontainer.h
misc_specialfile.o: ../core/ugcontainer.h ../core/ticket.h ../core/request.h
misc_specialfile.o: ../core/requesttypes.h ../core/session.h ../core/rebus.h
misc_specialfile.o: ../core/function.h ../core/compress.h
misc_specialfile.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
misc_specialfile.o: ../core/htmlfilter.h ../core/postmultiparser.h
misc_specialfile.o: ../core/ticket.h ../core/data.h ../core/dirs.h
misc_specialfile.o: ../core/dircontainer.h ../core/users.h
misc_specialfile.o: ../core/ugcontainer.h ../core/groups.h ../core/group.h
misc_specialfile.o: ../core/functions.h ../core/lastcontainer.h
misc_specialfile.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h
misc_specialfile.o: ../core/data.h ../core/dirs.h ../core/users.h
misc_specialfile.o: ../core/groups.h ../core/functions.h
misc_specialfile.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
misc_specialfile.o: ../core/loadavg.h
mkdir.o: content.h ../core/item.h ../templates/templates.h
mkdir.o: ../templates/patterncacher.h ../templates/misc.h
mkdir.o: ../templates/localefilter.h ../core/locale.h
mkdir.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
mkdir.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
mkdir.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
mkdir.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
mkdir.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
mkdir.o: ../core/compress.h ../core/acceptencodingparser.h
mkdir.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
mkdir.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
mkdir.o: ../core/db.h ../core/group.h ../core/dircontainer.h
mkdir.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
mkdir.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
mkdir.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h ../core/notify.h
mkdir.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
mkdir.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
mkdir.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
mkdir.o: ../core/request.h ../core/requesttypes.h ../core/session.h
mkdir.o: ../core/rebus.h ../core/function.h ../core/compress.h
mkdir.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
mkdir.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
mkdir.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
mkdir.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
mkdir.o: ../core/mount.h ../core/loadavg.h ../core/notify.h
mkdir.o: ../templatesnotify/templatesnotify.h ../core/mount.h
mkdir.o: ../templates/misc.h
mv.o: content.h ../core/item.h ../templates/templates.h
mv.o: ../templates/patterncacher.h ../templates/misc.h
mv.o: ../templates/localefilter.h ../core/locale.h ../confparser/confparser.h
mv.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
mv.o: ../core/log.h ../core/thread.h ../core/ticket.h ../core/db.h
mv.o: ../core/item.h ../core/user.h ../core/group.h ../core/thread.h
mv.o: ../core/error.h ../core/log.h ../core/dircontainer.h
mv.o: ../core/ugcontainer.h ../core/ticket.h ../core/request.h
mv.o: ../core/requesttypes.h ../core/session.h ../core/rebus.h
mv.o: ../core/function.h ../core/compress.h ../core/acceptencodingparser.h
mv.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
mv.o: ../core/postmultiparser.h ../core/data.h ../core/dirs.h ../core/users.h
mv.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
mv.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h
node.o: content.h ../core/item.h ../templates/templates.h
node.o: ../templates/patterncacher.h ../templates/misc.h
node.o: ../templates/localefilter.h ../core/locale.h
node.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
node.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
node.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
node.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
node.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
node.o: ../core/compress.h ../core/acceptencodingparser.h
node.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
node.o: ../core/postmultiparser.h ../core/ticket.h
node.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
node.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
node.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
node.o: ../core/request.h ../core/requesttypes.h ../core/session.h
node.o: ../core/rebus.h ../core/function.h ../core/compress.h
node.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
node.o: ../core/htmlfilter.h ../core/postmultiparser.h
priv.o: content.h ../core/item.h ../templates/templates.h
priv.o: ../templates/patterncacher.h ../templates/misc.h
priv.o: ../templates/localefilter.h ../core/locale.h
priv.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
priv.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
priv.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
priv.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
priv.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
priv.o: ../core/compress.h ../core/acceptencodingparser.h
priv.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
priv.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
priv.o: ../core/db.h ../core/group.h ../core/dircontainer.h
priv.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
priv.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
priv.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h
priv.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
priv.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
priv.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
priv.o: ../core/request.h ../core/requesttypes.h ../core/session.h
priv.o: ../core/rebus.h ../core/function.h ../core/compress.h
priv.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
priv.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
priv.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
priv.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
priv.o: ../core/mount.h ../core/loadavg.h
reload.o: content.h ../core/item.h ../templates/templates.h
reload.o: ../templates/patterncacher.h ../templates/misc.h
reload.o: ../templates/localefilter.h ../core/locale.h
reload.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
reload.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
reload.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
reload.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
reload.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
reload.o: ../core/compress.h ../core/acceptencodingparser.h
reload.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
reload.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
reload.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
reload.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
reload.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
reload.o: ../core/request.h ../core/requesttypes.h ../core/session.h
reload.o: ../core/rebus.h ../core/function.h ../core/compress.h
reload.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
reload.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
reload.o: ../core/notify.h ../templatesnotify/templatesnotify.h
reload.o: ../core/mount.h ../templates/misc.h
rm.o: content.h ../core/item.h ../templates/templates.h
rm.o: ../templates/patterncacher.h ../templates/misc.h
rm.o: ../templates/localefilter.h ../core/locale.h ../confparser/confparser.h
rm.o: ../templates/ckeditorgetparser.h ../core/httpsimpleparser.h
rm.o: ../core/log.h ../core/thread.h ../core/ticket.h ../core/request.h
rm.o: ../core/requesttypes.h ../core/session.h ../core/item.h ../core/error.h
rm.o: ../core/log.h ../core/user.h ../core/rebus.h ../core/function.h
rm.o: ../core/thread.h ../core/compress.h ../core/acceptencodingparser.h
rm.o: ../core/log.h ../core/thread.h ../core/ticket.h ../core/db.h
rm.o: ../core/item.h ../core/user.h ../core/group.h ../core/thread.h
rm.o: ../core/error.h ../core/log.h ../core/dircontainer.h
rm.o: ../core/ugcontainer.h ../core/ticket.h ../core/request.h
rm.o: ../core/requesttypes.h ../core/session.h ../core/rebus.h
rm.o: ../core/function.h ../core/compress.h ../core/acceptencodingparser.h
rm.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
rm.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h ../core/db.h
rm.o: ../core/group.h ../core/dircontainer.h ../core/ugcontainer.h
rm.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
rm.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
rm.o: ../core/mount.h ../core/loadavg.h
rm.o: ../core/postmultiparser.h ../core/error.h ../core/data.h ../core/dirs.h
rm.o: ../core/users.h ../core/groups.h ../core/functions.h
rm.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
rm.o: ../core/loadavg.h
run.o: content.h ../core/item.h ../templates/templates.h
run.o: ../templates/patterncacher.h ../templates/misc.h
run.o: ../templates/localefilter.h ../core/locale.h
run.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
run.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
run.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
run.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
run.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
run.o: ../core/compress.h ../core/acceptencodingparser.h
run.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
run.o: ../core/postmultiparser.h ../core/ticket.h ../core/error.h
run.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
run.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
run.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
run.o: ../core/request.h ../core/requesttypes.h ../core/session.h
run.o: ../core/rebus.h ../core/function.h ../core/compress.h
run.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
run.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/error.h
thread.o: content.h ../core/item.h ../templates/templates.h
thread.o: ../templates/patterncacher.h ../templates/misc.h
thread.o: ../templates/localefilter.h ../core/locale.h
thread.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
thread.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
thread.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
thread.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
thread.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
thread.o: ../core/compress.h ../core/acceptencodingparser.h
thread.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
thread.o: ../core/postmultiparser.h ../core/ticket.h ../core/db.h
thread.o: ../core/group.h ../core/dircontainer.h ../core/ugcontainer.h
thread.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
thread.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
thread.o: ../core/mount.h ../core/loadavg.h ../core/mount.h
thread.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
thread.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
thread.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
thread.o: ../core/request.h ../core/requesttypes.h ../core/session.h
thread.o: ../core/rebus.h ../core/function.h ../core/compress.h
thread.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
thread.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/data.h
thread.o: ../core/dirs.h ../core/users.h ../core/groups.h ../core/functions.h
thread.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
thread.o: ../core/loadavg.h ../core/mount.h
ticket.o: content.h ../core/item.h ../templates/templates.h
ticket.o: ../templates/patterncacher.h ../templates/misc.h
ticket.o: ../templates/localefilter.h ../core/locale.h
ticket.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
ticket.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
ticket.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
ticket.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
ticket.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
ticket.o: ../core/compress.h ../core/acceptencodingparser.h
ticket.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
ticket.o: ../core/postmultiparser.h ../core/ticket.h ../core/db.h
ticket.o: ../core/group.h ../core/dircontainer.h ../core/ugcontainer.h
ticket.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
ticket.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
ticket.o: ../core/mount.h ../core/loadavg.h ../core/mount.h
ticket.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
ticket.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
ticket.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
ticket.o: ../core/request.h ../core/requesttypes.h ../core/session.h
ticket.o: ../core/rebus.h ../core/function.h ../core/compress.h
ticket.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
ticket.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/data.h
ticket.o: ../core/dirs.h ../core/users.h ../core/groups.h ../core/functions.h
ticket.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
ticket.o: ../core/loadavg.h ../core/mount.h
upload.o: content.h ../core/item.h ../templates/templates.h
upload.o: ../templates/patterncacher.h ../templates/misc.h
upload.o: ../templates/localefilter.h ../core/locale.h
upload.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
upload.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
upload.o: ../core/ticket.h ../core/request.h ../core/requesttypes.h
upload.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
upload.o: ../core/user.h ../core/rebus.h ../core/function.h ../core/thread.h
upload.o: ../core/compress.h ../core/acceptencodingparser.h
upload.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
upload.o: ../core/postmultiparser.h ../core/ticket.h ../core/data.h
upload.o: ../core/dirs.h ../core/dircontainer.h ../core/users.h
upload.o: ../core/ugcontainer.h ../core/groups.h ../core/group.h
upload.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
upload.o: ../core/mount.h ../core/loadavg.h ../core/misc.h
upload.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
upload.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
upload.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
upload.o: ../core/request.h ../core/requesttypes.h ../core/session.h
upload.o: ../core/rebus.h ../core/function.h ../core/compress.h
upload.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
upload.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/data.h
upload.o: ../core/dirs.h ../core/users.h ../core/groups.h ../core/functions.h
upload.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
upload.o: ../core/loadavg.h ../core/misc.h
who.o: content.h ../core/item.h ../templates/templates.h
who.o: ../templates/patterncacher.h ../templates/misc.h
who.o: ../templates/localefilter.h ../core/locale.h
who.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
who.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
who.o: ../core/ticket.h
who.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
who.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
who.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h

View File

@ -1 +1 @@
o = adduser.o cat.o content.o createthread.o createticket.o default.o download.o editticket.o emacs.o last.o login.o logout.o ls.o misc_item.o misc_specialfile.o mkdir.o node.o priv.o reload.o rm.o run.o thread.o ticket.o upload.o who.o
o = adduser.o cat.o content.o createthread.o createticket.o default.o download.o editticket.o emacs.o last.o login.o logout.o ls.o misc_item.o misc_specialfile.o mkdir.o mv.o node.o priv.o reload.o rm.o run.o thread.o ticket.o upload.o who.o

View File

@ -211,10 +211,10 @@ void Content::MakeStandardFunction()
else
if( request.pfunction->code == FUN_UPTIME )
{ /* do nothing */ }
/* else
else
if( request.pfunction->code == FUN_MV )
FunMv();
else
/* else
if( request.pfunction->code == FUN_UNAME )
FunUname();
*/
@ -309,6 +309,10 @@ void Content::MakePost()
PostFunAddUser();
break;
case FUN_MV:
PostFunMv();
break;
default:
log << log1 << "Content: unknown post function" << logend;
break;
@ -375,6 +379,9 @@ void Content::Make()
if( request.session->spam_score > 0 )
log << log1 << "Content: spam score: " << request.session->spam_score << logend;
if( request.IsParam("noredirect") )
request.redirect_to.clear();
if( !request.redirect_to.empty() )
return;
@ -397,7 +404,7 @@ void Content::Make()
// !! mozna zrobic jakas obsluge kiedy nie mozemy sie redirectnac, np gdy wystapil blad
// !! moze zwracac jakas wartosc?
void Content::RedirectTo(const Item & item)
void Content::RedirectTo(const Item & item, const char * postfix)
{
std::string path;
@ -418,11 +425,14 @@ std::string path;
request.redirect_to += path;
request.redirect_to += item.url;
}
if( postfix )
request.redirect_to += postfix;
}
void Content::RedirectTo(long item_id)
void Content::RedirectTo(long item_id, const char * postfix)
{
std::string path;
Item * pdir;
@ -455,6 +465,9 @@ Item * pdir;
log << log1 << "Content: Can't redirect: no such item: id: " << item_id << logend;
}
}
if( postfix )
request.redirect_to += postfix;
}

View File

@ -18,6 +18,7 @@
#include "../templates/templates.h"
#include "../core/thread.h"
#include "../core/ticket.h"
#include "../core/db.h"
@ -39,6 +40,34 @@ class Content
void PostFunAddUser();
void FunAddUser();
/*
mv
*/
bool MoveIsTheSameFile(const Item & item);
void MoveAuth(Item & item);
void MoveFile(Item & item, bool redirect = true);
void MoveDir(Item & item, bool redirect = true);
void MoveAuthPrepareQuery();
void MoveAuthContentOfDir(const Item & item);
bool MoveParseDir(long & dir_id, std::string & dir, std::string & file);
bool MoveCheckAccessFromToDir();
bool MoveCheckAccessFrom();
bool MoveCheckAccessTo(long dir_id);
bool MoveCheckMountPoints(long dir_id);
void MoveContentOfDir();
void PostFunMv();
void FunMv();
std::string mv_dir;
std::string mv_file;
std::string mv_new_path;
long mv_dir_id;
std::vector<Item> mv_auth;
Db::ItemQuery mv_auth_iq;
void SetDefaultFunctionForFile();
void SetDefaultFunctionForDir();
void SetDefaultFunction();
@ -143,13 +172,13 @@ class Content
void PostFunCreateThreadLogAndRedirect();
void PostFunCreateThread();
bool UploadCreatePath(std::string & path);
bool UploadCreatePath();
void UploadSaveFile(const std::string & tmp_filename, const std::string & destination);
void UploadMulti();
void UploadSingle();
bool FunUploadCheckAbuse();
void PostFunUpload();
std::string tmp_path;
bool FunCreateTicketCheckAccess();
void FunCreateTicket();
@ -177,8 +206,8 @@ class Content
void ReadTicketExpected(Ticket & ticket);
void ReadTicketProgress(Ticket & ticket);
void RedirectTo(const Item & item);
void RedirectTo(long item_id);
void RedirectTo(const Item & item, const char * postfix = 0);
void RedirectTo(long item_id, const char * postfix = 0);
void RedirectToLastDir();
void CheckGetPostTimes(time_t difference = 10);

View File

@ -20,7 +20,7 @@ void Content::FunDownload()
// !! moze wywalic to no_item i wszedzie w takich miejscach dac poprostu permission_denied?
if( !request.is_item )
{
log << log1 << "Content: pv function requires an item" << logend;
log << log1 << "Content: download function requires an item" << logend;
request.status = WINIX_ERR_NO_ITEM;
return;
}
@ -28,19 +28,14 @@ void Content::FunDownload()
if( !request.HasReadAccess(request.item) ||
request.item.auth == Item::auth_none ||
data.auth_simplefs_dir.empty() )
request.item.auth_path.empty() )
{
request.status = WINIX_ERR_PERMISSION_DENIED;
return;
}
request.send_as_attachment = request.IsParam("attachment");
if( !request.MakePath(request.x_sendfile) )
{
request.status = WINIX_ERR_PERMISSION_DENIED;
return;
}
request.x_sendfile = request.item.auth_path;
}

361
content/mv.cpp Executable file
View File

@ -0,0 +1,361 @@
/*
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* All rights reserved.
*
*/
#include <errno.h>
#include "content.h"
#include "../core/request.h"
#include "../core/data.h"
bool Content::MoveCheckAccessFromToDir()
{
Item * last;
Item * last_but_one = 0;
last = request.dir_table[request.dir_table.size()-1];
if( request.dir_table.size() >= 2 )
last_but_one = request.dir_table[request.dir_table.size()-2];
if( request.method != Request::post )
{
// used in GET (HEAD in the future?)
if( !request.HasWriteAccess(*last) &&
(!last_but_one || !request.HasWriteAccess(*last_but_one)) )
return false;
}
else
{
// used in POST when the moving is performed
if( request.IsPostVar("onlycontent") )
return request.HasWriteAccess(*last);
else
if( last_but_one )
return request.HasWriteAccess(*last_but_one);
else
return false; // you cannot move the root directory
}
return true;
}
bool Content::MoveCheckAccessFrom()
{
if( request.is_item )
{
// moving a file
if( !request.HasWriteAccess(*request.dir_table.back()) )
{
request.status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
else
{
if( !MoveCheckAccessFromToDir() )
{
request.status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
return true;
}
bool Content::MoveCheckAccessTo(long dir_id)
{
Item * pdir = data.dirs.GetDir(dir_id);
if( !pdir )
{
request.status = WINIX_ERR_INCORRECT_DIR;
return false;
}
if( !request.HasReadExecAccessToPath(dir_id) || !request.HasWriteAccess(*pdir) )
{
request.status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
return true;
}
bool Content::MoveCheckMountPoints(long dir_id)
{
/*
Mount * new_mount = data.mounts.CalcMount(dir_id);
if( !new_mount )
{
if( data.mounts.pmount->type != Mount::cms )
{
request.status = WINIX_DIFFERENT_MOUNT_POINTS;
return false;
}
return true;
}
if( new_mount->type != data.mounts.pmount->type )
{
request.status = WINIX_DIFFERENT_MOUNT_POINTS;
return false;
}
*/
return true;
}
bool Content::MoveParseDir(long & dir_id, std::string & dir, std::string & file)
{
std::string * move_to = request.PostVar("moveto");
if( !move_to )
{
request.status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
int res = data.dirs.AnalyzePath(*move_to, dir_id, dir, file);
if( res == 1 )
request.status = WINIX_ERR_NO_ROOT_DIR;
else
if( res != 0 )
request.status = WINIX_ERR_INCORRECT_DIR;
return res == 0;
}
void Content::MoveAuth(Item & item)
{
if( !request.MakePath(item, mv_new_path, true) )
{
request.status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( rename(item.auth_path.c_str(), mv_new_path.c_str()) == 0 )
{
log << log1 << "Content: moved static file from: " << item.auth_path << ", to: " << mv_new_path << logend;
item.auth_path = mv_new_path;
request.status = db.EditAuthById(item, item.id);
}
else
{
int err = errno;
log << log1 << "Content: can't move a file from: " << item.auth_path << ", to: " << mv_new_path << ", ";
log.SystemErr(err);
log << logend;
request.status = WINIX_ERR_PERMISSION_DENIED;
}
}
bool Content::MoveIsTheSameFile(const Item & item)
{
if( mv_file.empty() )
{
if( item.parent_id == mv_dir_id )
return true; // nothing to do
}
else
{
if( item.parent_id == mv_dir_id && item.url == mv_file )
return true; // nothing to do
}
return false;
}
void Content::MoveFile(Item & item, bool redirect)
{
if( MoveIsTheSameFile(item) )
return;
if( !mv_file.empty() )
{
item.url = mv_file;
PrepareUrl(item);
}
item.parent_id = mv_dir_id;
request.status = db.EditParentUrlById(item, item.id);
if( request.status == WINIX_ERR_OK )
{
log << log2 << "Content: the file was moved to: " << mv_dir << item.url << logend;
if( item.auth != Item::auth_none )
MoveAuth(item);
if( redirect )
RedirectTo(item);
}
}
void Content::MoveContentOfDir()
{
Db::ItemQuery iq;
iq.sel_parent_id = true;
iq.sel_type = true;
iq.sel_url = true;
iq.sel_auth = true;
iq.WhereParentId(request.dir_table.back()->id);
db.GetItems(request.item_table, iq);
for(size_t i=0 ; i<request.item_table.size() ; ++i)
{
if( request.item_table[i].type == Item::dir )
MoveDir(request.item_table[i], false);
else
MoveFile(request.item_table[i], false);
}
RedirectToLastDir();
}
void Content::MoveAuthPrepareQuery()
{
mv_auth_iq.SetAll(true, false);
mv_auth_iq.sel_parent_id = true;
mv_auth_iq.sel_type = true;
mv_auth_iq.sel_url = true;
mv_auth_iq.sel_auth = true;
mv_auth_iq.WhereType(Item::file);
mv_auth_iq.WhereAuth(Item::auth_none, false);
}
void Content::MoveAuthContentOfDir(const Item & item)
{
DirContainer::ParentIterator i = data.dirs.FindFirstParent(item.id);
// go through all directories
for( ; i != data.dirs.ParentEnd() ; i = data.dirs.NextParent(i) )
MoveAuthContentOfDir(*(i->second));
mv_auth_iq.WhereParentId(item.id);
// don't use request.item here (is used in MoveContentOfDir())
db.GetItems(mv_auth, mv_auth_iq);
for(size_t i=0 ; i<mv_auth.size() ; ++i)
MoveAuth(mv_auth[i]);
}
void Content::MoveDir(Item & item, bool redirect)
{
if( mv_file.empty() && mv_dir_id == item.id )
return; // nothing to do
if( mv_dir_id == item.id || data.dirs.HasParent(mv_dir_id, item.id) )
{
log << log1 << "Content: cannot move directory to inside it" << logend;
request.status = WINIX_ERR_INCORRECT_DIR;
return;
}
if( !data.dirs.ChangeParent(item.id, mv_dir_id) )
{
request.status = WINIX_ERR_INCORRECT_DIR;
return;
}
item.parent_id = mv_dir_id;
if( !mv_file.empty() )
{
item.url = mv_file;
PrepareUrl(item);
}
request.status = db.EditParentUrlById(item, item.id);
if( request.status == WINIX_ERR_OK )
{
log << log2 << "Content: the directory was moved to: " << mv_dir << item.url << logend;
MoveAuthContentOfDir(item);
if( redirect )
RedirectToLastDir();
}
}
void Content::PostFunMv()
{
if( MoveCheckAccessFrom() &&
MoveParseDir(mv_dir_id, mv_dir, mv_file) &&
MoveCheckAccessTo(mv_dir_id) &&
MoveCheckMountPoints(mv_dir_id) )
{
if( request.is_item )
{
MoveFile(request.item);
}
else
{
MoveAuthPrepareQuery();
if( request.IsPostVar("onlycontent") )
{
if( mv_file.empty() )
MoveContentOfDir();
else
request.status = WINIX_ERR_INCORRECT_DIR;
}
else
{
MoveDir(*request.dir_table.back());
}
}
}
}
void Content::FunMv()
{
MoveCheckAccessFrom();
}

View File

@ -33,9 +33,9 @@ return true;
bool Content::UploadCreatePath(std::string & path)
bool Content::UploadCreatePath()
{
if( !request.MakePath(path, true) )
if( !request.MakePath(request.item, true) )
{
request.status = WINIX_ERR_PERMISSION_DENIED;
return false;
@ -107,18 +107,21 @@ void Content::UploadMulti()
{
const char * file_name = i->second.filename.c_str();
request.item.subject = file_name;
request.item.url = file_name;
request.item.auth = SelectFileType(file_name);
request.item.subject = file_name;
request.item.url = file_name;
request.item.auth = SelectFileType(file_name);
PrepareUrl(request.item);
PostFunEmacsAdd(); // always adding a new item
if( !UploadCreatePath(tmp_path) )
if( !UploadCreatePath() )
return;
if( request.status == WINIX_ERR_OK )
UploadSaveFile(i->second.tmp_filename, tmp_path);
{
UploadSaveFile(i->second.tmp_filename, request.item.auth_path);
request.status = db.EditAuthById(request.item, request.item.id);
}
}
RedirectToLastDir();
@ -149,23 +152,19 @@ void Content::UploadSingle()
PostFunEmacsAdd(); // always adding a new item
// url can be changed by PostFunEmacsAdd()
if( !UploadCreatePath() )
return;
if( request.status == WINIX_ERR_OK )
{
const std::string & tmp_filename = request.post_file_table.begin()->second.tmp_filename;
if( !UploadCreatePath(tmp_path) )
return;
UploadSaveFile(tmp_filename, tmp_path);
UploadSaveFile(tmp_filename, request.item.auth_path);
request.status = db.EditAuthById(request.item, request.item.id);
}
if( request.status == WINIX_ERR_OK )
{
if( !request.IsParam("ckeditor_upload") )
RedirectTo(request.item);
}
RedirectTo(request.item, "/cat");
}

View File

@ -83,15 +83,15 @@ requestcontroller.o: ../templates/templates.h ../templates/patterncacher.h
requestcontroller.o: misc.h item.h ../templates/ckeditorgetparser.h
requestcontroller.o: ../core/httpsimpleparser.h ../core/log.h
requestcontroller.o: ../core/locale.h ../confparser/confparser.h
requestcontroller.o: ../core/thread.h ../core/ticket.h sessionmanager.h
requestcontroller.o: sessioncontainer.h session.h error.h log.h user.h
requestcontroller.o: rebus.h functionparser.h requesttypes.h data.h dirs.h
requestcontroller.o: dircontainer.h users.h ugcontainer.h groups.h group.h
requestcontroller.o: ../core/thread.h ../core/ticket.h ../core/db.h user.h
requestcontroller.o: group.h thread.h error.h log.h dircontainer.h
requestcontroller.o: ugcontainer.h ticket.h sessionmanager.h
requestcontroller.o: sessioncontainer.h session.h rebus.h functionparser.h
requestcontroller.o: requesttypes.h data.h dirs.h users.h groups.h
requestcontroller.o: functions.h function.h lastcontainer.h mounts.h mount.h
requestcontroller.o: loadavg.h request.h thread.h compress.h
requestcontroller.o: acceptencodingparser.h acceptbaseparser.h htmlfilter.h
requestcontroller.o: postmultiparser.h ticket.h postparser.h
requestcontroller.o: httpsimpleparser.h cookieparser.h notify.h
requestcontroller.o: loadavg.h request.h compress.h acceptencodingparser.h
requestcontroller.o: acceptbaseparser.h htmlfilter.h postmultiparser.h
requestcontroller.o: postparser.h httpsimpleparser.h cookieparser.h notify.h
requestcontroller.o: ../templatesnotify/templatesnotify.h ../core/mount.h
requestcontroller.o: ../templates/misc.h ../templates/localefilter.h
session.o: session.h item.h error.h log.h user.h rebus.h

View File

@ -301,7 +301,8 @@ return status;
//!! wywalic z nazwy 'Subject' nic nie jest robione z tytulem
// ta metoda uzywana tez jest w EditParentUrlById()
bool Db::AddItemCreateUrlSubject(Item & item)
{
bool is_that_url;
@ -455,7 +456,7 @@ Error Db::AddItemIntoItem(Item & item)
AssertConnection();
std::ostringstream query;
query << "insert into core.item (user_id, group_id, privileges, date_creation, date_modification, type, "
"parent_id, content_id, auth, default_item, subject, guest_name, url) values (";
"parent_id, content_id, auth, auth_path, default_item, subject, guest_name, url) values (";
query << '\'' << item.user_id << "', ";
query << '\'' << item.group_id << "', ";
query << '\'' << item.privileges << "', ";
@ -464,7 +465,8 @@ Error Db::AddItemIntoItem(Item & item)
query << '\'' << static_cast<int>(item.type) << "', ";
query << '\'' << item.parent_id << "', ";
query << '\'' << item.content_id << "', ";
query << '\'' << static_cast<int>(item.auth) << "', ";
query << '\'' << static_cast<int>(item.auth) << "', ";
query << '\'' << Escape(item.auth_path) << "', ";
query << '\'' << item.default_item << "', ";
query << '\'' << Escape(item.subject) << "', ";
query << '\'' << Escape(item.guest_name) << "', ";
@ -561,7 +563,7 @@ Error Db::EditItemInItem(Item & item, bool with_url)
AssertConnection();
std::ostringstream query;
query << "update core.item set (user_id, group_id, privileges, date_creation, date_modification, type, "
"default_item, parent_id, subject, guest_name, auth";
"default_item, parent_id, subject, guest_name, auth, auth_path";
if( with_url )
query << ", url";
@ -577,7 +579,8 @@ Error Db::EditItemInItem(Item & item, bool with_url)
query << '\'' << item.parent_id << "', ";
query << '\'' << Escape(item.subject) << "', ";
query << '\'' << Escape(item.guest_name) << "', ";
query << '\'' << static_cast<int>(item.auth) << "' ";
query << '\'' << static_cast<int>(item.auth) << "', ";
query << '\'' << Escape(item.auth_path) << "' ";
if( with_url )
{
@ -802,7 +805,7 @@ PGresult * Db::GetItemsQuery(const ItemQuery & iq)
if( iq.sel_url ) query << " ,url";
if( iq.sel_type ) query << " ,type";
if( iq.sel_default_item ) query << " ,default_item";
if( iq.sel_auth ) query << " ,auth";
if( iq.sel_auth ) query << " ,auth, auth_path";
query << " from core.item";
@ -818,7 +821,19 @@ PGresult * Db::GetItemsQuery(const ItemQuery & iq)
if( iq.where_id ) { query << if_and << "id='" << iq.id << "'" ; if_and = add_and; }
if( iq.where_parent_id ) { query << if_and << "parent_id='" << iq.parent_id << "'" ; if_and = add_and; }
if( iq.where_type ) { query << if_and << "type='" << static_cast<int>(iq.type) << "'" ; if_and = add_and; }
if( iq.where_auth ) { query << if_and << "auth='" << static_cast<int>(iq.auth) << "'" ; if_and = add_and; }
if( iq.where_auth )
{
query << if_and << "auth";
if(iq.auth_equal )
query << "=";
else
query << "!=";
query << "'" << static_cast<int>(iq.auth) << "'";
if_and = add_and;
}
}
@ -1138,6 +1153,71 @@ return result;
Error Db::EditParentUrlById(Item & item, long id)
{
PGresult * r = 0;
Error result = WINIX_ERR_OK;
bool url_without_id = false;
try
{
AssertConnection();
std::ostringstream query;
query << "update core.item set (parent_id, url) = (";
query << '\'' << item.parent_id << "', ";
url_without_id = AddItemCreateUrlSubject(item);
if( url_without_id )
query << '\'' << Escape(item.url) << "'";
else
query << '\'' << item.id << "'"; ;
query << ") where id='" << id << "';";
r = AssertQuery(query.str());
AssertResultStatus(r, PGRES_COMMAND_OK);
}
catch(const Error & e)
{
result = e;
}
ClearResult(r);
return result;
}
Error Db::EditAuthById(Item & item, long id)
{
PGresult * r = 0;
Error result = WINIX_ERR_OK;
try
{
AssertConnection();
std::ostringstream query;
query << "update core.item set (auth, auth_path) = (";
query << '\'' << static_cast<int>(item.auth) << "', ";
query << '\'' << Escape(item.auth_path) << "') ";
query << " where id='" << id << "';";
r = AssertQuery(query.str());
AssertResultStatus(r, PGRES_COMMAND_OK);
}
catch(const Error & e)
{
result = e;
}
ClearResult(r);
return result;
}
Error Db::DelDirById(long id)
{
Error result = WINIX_ERR_OK;

View File

@ -66,7 +66,7 @@ public:
bool sel_url; // url
bool sel_type; // type (dir, file, none)
bool sel_default_item; // default_item
bool sel_auth; // auth
bool sel_auth; // auth, auth_path
bool where_id; //
bool where_parent_id; //
@ -77,6 +77,7 @@ public:
long parent_id; // if where_parent_id is true
Item::Type type;
Item::Auth auth;
bool auth_equal; // if true means auth should be equal
bool sort_asc;
@ -102,14 +103,17 @@ public:
where_auth = where_;
}
void WhereId(long id_) { where_id = true; id = id_; }
void WhereParentId(long parent_id_) { where_parent_id = true; parent_id = parent_id_; }
void WhereType(Item::Type type_) { where_type = true; type = type_; }
void WhereAuth(Item::Auth st) { where_auth = true; auth = st; }
void WhereId(long id_) { where_id = true; id = id_; }
void WhereParentId(long parent_id_) { where_parent_id = true; parent_id = parent_id_; }
void WhereType(Item::Type type_) { where_type = true; type = type_; }
void WhereAuth(Item::Auth st,
bool equal = true) { where_auth = true; auth = st; auth_equal = equal; }
ItemQuery()
{
sort_asc = true;
sort_asc = true;
auth_equal = true;
SetAll(true, false);
id = -1;
@ -131,7 +135,8 @@ public:
bool GetPriv(Item & item, long id);
Error EditPrivById(Item & item, long id);
Error EditParentUrlById(Item & item, long id);
Error EditAuthById(Item & item, long id);
Error DelDirById(long id);
bool DelItem(const Item & item);
@ -215,7 +220,7 @@ protected:
struct ItemColumns
{
int id, user_id, group_id, privileges, date_creation, date_modification, url, type, parent_id,
content_id, default_item, subject, content, content_type, guest_name, auth;
content_id, default_item, subject, content, content_type, guest_name, auth, auth_path;
void SetColumns(PGresult * r);
void SetItem(PGresult * r, long row, Item & item);

View File

@ -29,7 +29,8 @@ void Db::ItemColumns::SetColumns(PGresult * r)
content = PQfnumber(r, "content");
content_type = PQfnumber(r, "content_type");
guest_name = PQfnumber(r, "guest_name");
auth = PQfnumber(r, "auth");
auth = PQfnumber(r, "auth");
auth_path = PQfnumber(r, "auth_path");
}
@ -52,6 +53,7 @@ void Db::ItemColumns::SetItem(PGresult * r, long row, Item & item)
if( content_type != -1 ) item.content_type = static_cast<Item::ContentType>( atoi(Db::AssertValue(r, row, content_type)) );
if( guest_name != -1 ) item.guest_name = Db::AssertValue(r, row, guest_name);
if( auth != -1 ) item.auth = static_cast<Item::Auth>( atoi(Db::AssertValue(r, row, auth)) );
if( auth_path != -1 ) item.auth_path = Db::AssertValue(r, row, auth_path);
}

View File

@ -131,6 +131,45 @@ return last_iter;
bool DirContainer::ChangeParent(long dir_id, long new_parent_id)
{
Iterator i = FindId(dir_id);
if( i == table.end() )
return false;
if( i->parent_id == new_parent_id )
return true; // nothing to do
ParentIterator p = FindFirstParent(i->parent_id);
bool found = false;
for( ; p != table_parent.end() ; p = NextParent(p) )
{
if( p->second->id == dir_id )
{
table_parent.erase(p);
log << log3 << "DirCont: removed parent index to dir: " << i->id << logend;
i->parent_id = new_parent_id;
table_parent.insert( std::make_pair(new_parent_id, i) );
log << log3 << "DirCont: added parent index to dir, id: " << i->id << ", parent_id: " << i->parent_id << logend;
found = true;
if( i->url == "etc" ) // !! in the future can be more special folders
FindSpecialFolders();
break; // that iterator (p) is only one
}
}
if( !found )
log << log1 << "DirCont: cannot find parent_id: " << i->parent_id << " in parent indexes" << logend;
return found;
}
void DirContainer::Clear()

View File

@ -40,6 +40,7 @@ public:
SizeType Size();
bool Empty();
Iterator PushBack(const Item & item);
bool ChangeParent(long dir_id, long new_parent_id);
void Clear();
Iterator FindId(long id);

View File

@ -138,6 +138,7 @@ DirContainer::ParentIterator Dirs::ParentEnd()
// dodatkowo moze metoda AppendPath dodajaca sciezke do biezacego stringa?
// albo tutaj stringa nie czyscic?
// O(m * log n) (m- how many parts are in 'id')
// path with a slash at the end
bool Dirs::MakePath(long id, std::string & path)
{
DirContainer::Iterator i;
@ -148,7 +149,8 @@ DirContainer::Iterator i;
{
i = dir_table.FindId(id);
if( i == dir_table.End() )
if( i == dir_table.End() ||
i->parent_id == id ) // means a loop (something wrong in the db)
return false;
if( i->parent_id == -1 )
@ -164,6 +166,34 @@ DirContainer::Iterator i;
bool Dirs::ChangeParent(long dir_id, long new_parent_id)
{
return dir_table.ChangeParent(dir_id, new_parent_id);
}
/*
checking whether dir_id has a parent parent_id (somewhere in the path)
*/
bool Dirs::HasParent(long dir_id, long parent_id)
{
DirContainer::Iterator i;
while( true )
{
i = dir_table.FindId(dir_id);
if( i==dir_table.End() || i->parent_id==-1 )
return false;
if( i->parent_id == parent_id )
return true;
dir_id = i->parent_id;
}
}
@ -249,6 +279,85 @@ Item * Dirs::AddDir(const Item & item)
size_t Dirs::AnalyzeDir(Item * pdir, const std::string & path, long & dir_id, std::string & dir)
{
size_t i = 0;
size_t old_i;
while( true )
{
dir_id = pdir->id;
// skipping slashes
for( ; i<path.size() && path[i] == '/' ; ++i );
if( i == path.size() )
return i; // end of the path
// creating a name
old_i = i;
analyze_temp.clear();
for( ; i<path.size() && path[i] != '/' ; ++i)
analyze_temp += path[i];
pdir = data.dirs.GetDir(analyze_temp, pdir->id);
if( !pdir )
return old_i; // analyze_temp is not a directory
dir += analyze_temp;
dir += '/';
}
}
/*
the path should begin with a slash
return values:
0 - directory exists
dir_id - id of the directory
dir - the path to the directory (with a slash at the end)
file - if not empty means a file name (we don't check if the file really exists)
1 - there is not a root dir
2 - the path is empty
3 - there is not such a directory
*/
int Dirs::AnalyzePath(const std::string & path, long & dir_id, std::string & dir, std::string & file)
{
Item * pdir = data.dirs.GetRootDir();
dir = '/';
file.clear();
if( !pdir )
return 1;
if( path.empty() )
return 2;
if( path[0] != '/' )
return 3;
size_t i = AnalyzeDir(pdir, path, dir_id, dir);
if( i < path.size() )
{
// checking if at least one slash has left
for(size_t a=i ; a < path.size() ; ++a)
if( path[a] == '/' )
return 3; // there is not such a directory
// the rest of the path is a file name
file = path.c_str() + i;
}
return 0;
}
void Dirs::SplitPath(const std::string & path, std::string & dir, std::string & file)
{

View File

@ -34,13 +34,17 @@ public:
bool IsDir(long dir_id);
bool GetDirChilds(long parent_id, std::vector<Item*> & childs_table);
bool MakePath(long dir_id, std::string & path);
bool ChangeParent(long dir_id, long new_parent_id);
bool HasParent(long dir_id, long parent_id);
int AnalyzePath(const std::string & path, long & dir_id, std::string & dir, std::string & file);
static void SplitPath(const std::string & path, std::string & dir, std::string & file);
DirContainer::ParentIterator FindFirstParent(long parent_id);
DirContainer::ParentIterator NextParent(DirContainer::ParentIterator i);
DirContainer::ParentIterator ParentEnd();
// these methods return null if there is no such a dir
Item * GetRootDir();
Item * GetEtcDir();
@ -57,6 +61,9 @@ private:
DirContainer dir_table;
size_t AnalyzeDir(Item * pdir, const std::string & path, long & dir_id, std::string & dir);
std::string analyze_temp;
bool ExtractName(const char * & s, std::string & name);

View File

@ -52,6 +52,7 @@
#define WINIX_ERR_PASSWORD_TOO_SHORT 26
#define WINIX_ERR_USER_EXISTS 27
#define WINIX_ERR_LOGIN_EMPTY 28
#define WINIX_DIFFERENT_MOUNT_POINTS 29

View File

@ -36,7 +36,7 @@
#define FUN_EDITTICKET 19
#define FUN_TICKET 20
#define FUN_UPTIME 21
//#define FUN_MV 23
#define FUN_MV 23
//#define FUN_UNAME 24
#define FUN_CHMOD 25
#define FUN_CHOWN 26

View File

@ -116,11 +116,11 @@ void Functions::ReadFunctions()
f.item.url = "uptime";
table.insert( std::make_pair(f.item.url, f) );
/*
f.code = FUN_MV;
f.item.url = "mv";
table.insert( std::make_pair(f.item.url, f) );
/*
f.code = FUN_UNAME;
f.item.url = "uname";
table.insert( std::make_pair(f.item.url, f) );

View File

@ -76,7 +76,7 @@ enum Auth
Auth auth;
std::string auth_path; // path to a file (if auth!=auth_none)
// methods
@ -125,6 +125,7 @@ void Clear()
content_id = -1;
auth = auth_none;
auth_path.clear();
SetDateToNow();
}

View File

@ -608,6 +608,54 @@ bool CreateDir(const std::string & dir, int priv)
// creating directories (can be more than one)
// 'dirs' can begin with a slash (will be skipped)
bool CreateDirs(const char * base_dir, const char * dirs, int priv)
{
static std::string temp;
const char * p = dirs;
temp = base_dir; // we start creating from 'base_dir'
if( temp.empty() )
return false;
if( temp[temp.size()-1] != '/' )
temp += '/';
while( true )
{
// skipping slashes
for( ; *p=='/' ; ++p );
if( *p == 0 )
break;
// taking the name
for( ; *p && *p!='/' ; ++p )
temp += *p;
if( !CreateDir(temp.c_str(), priv) )
return false;
temp += '/';
}
return true;
}
bool CreateDirs(const std::string & base_dir, const std::string & dirs, int priv)
{
return CreateDirs(base_dir.c_str(), dirs.c_str(), priv);
}
// if there is not an extension it returns a pointer to the last '\0' character
const char * GetFileExt(const char * name)
{
@ -642,7 +690,12 @@ Item::Auth SelectFileType(const char * file_name)
// as an image we're using only those types which can be rendered
// by a web browser
if( EqualNoCase(ext, "jpg") ||
EqualNoCase(ext, "jpeg") ||
EqualNoCase(ext, "jpe") ||
EqualNoCase(ext, "pic") ||
EqualNoCase(ext, "tga") ||
EqualNoCase(ext, "gif") ||
EqualNoCase(ext, "bmp") ||
EqualNoCase(ext, "png") )
return Item::auth_image;

View File

@ -66,6 +66,8 @@ bool IsFile(const char * file);
bool IsFile(const std::string & file);
bool CreateDir(const char * dir, int priv);
bool CreateDir(const std::string & dir, int priv);
bool CreateDirs(const char * base_dir, const char * dirs, int priv);
bool CreateDirs(const std::string & base_dir, const std::string & dirs, int priv);
const char * GetFileExt(const char * name);
Item::Auth SelectFileType(const char * file_name);

View File

@ -125,3 +125,24 @@ std::vector<Item*>::reverse_iterator i;
log << log2 << "M: current mount point is: " << pmount->TypeToStr() << " (default)"
<< ", fs: " << pmount->FsToStr() << logend;
}
// can return null pointer
// and we don't assume cms as a default mount point if nothing is found
Mount * Mounts::CalcMount(long dir_id)
{
while( true )
{
Item * pdir = data.dirs.GetDir(dir_id);
if( !pdir )
return 0;
std::map<long, Mount>::iterator m = mount_tab.find( pdir->id );
if( m != mount_tab.end() )
return &(m->second);
dir_id = pdir->parent_id;
}
}

View File

@ -27,7 +27,7 @@ public:
Error ReadMounts();
void CalcCurMount();
Mount * CalcMount(long dir_id);
// current mount point
// will not be null after calling CalcCurMount() or ReadMounts([...])

View File

@ -505,7 +505,6 @@ bool compressing = data.compression && role == responder && redirect_to.empty()
!browser_msie && !browser_konqueror &&
accept_encoding_parser.AcceptDeflate() && source.size() >= 512;
if( status == WINIX_ERR_NO_ITEM || status == WINIX_ERR_NO_FUNCTION || status == WINIX_ERR_UNKNOWN_PARAM )
header = h_404;
@ -695,6 +694,28 @@ bool Request::HasReadExecAccessForRoot(const Item & item)
}
bool Request::HasReadExecAccessToPath(long dir_id)
{
while( true )
{
Item * pdir = data.dirs.GetDir(dir_id);
if( !pdir )
return false;
if( !HasReadExecAccess(*pdir) )
return false;
dir_id = pdir->parent_id;
if( dir_id == -1 )
return true;
}
}
// returning true if we can create a thread in the current directory
bool Request::CanCreateThread(bool check_root)
{
@ -939,29 +960,21 @@ return false;
bool Request::MakePathSimpleFs(std::string & path, bool create_dir)
bool Request::MakePathSimpleFs(std::string & path, long dir_id, bool create_dir)
{
size_t i;
path = data.auth_simplefs_dir;
if( path.empty() )
if( data.auth_simplefs_dir.empty() )
{
log << log1 << "Request: auth_simplefs_dir is not set in the config file" << logend;
return false;
}
// skipping the first - the first is root
for(i=1 ; i<dir_table.size() ; ++i)
{
path += '/';
path += dir_table[i]->url;
if( !data.dirs.MakePath(dir_id, path) )
return false;
if( create_dir && !CreateDir(path, 0755) )
return false;
}
if( create_dir && !CreateDirs(data.auth_simplefs_dir, path, 0755) )
return false;
path += '/';
path.insert(0, data.auth_simplefs_dir);
return true;
}
@ -990,10 +1003,10 @@ char * hash = buffer;
// make sure that the length is even
if( (strlen(hash) & 1) != 0 )
hash = buffer + 1; // the first character was our zero
hash = buffer + 1; // the first character was zero
// creating dirs without the last part
// the last part is a part of a file (not a directory)
// the last part is a part of a file
for(size_t i=0 ; hash[i] != 0 ; i+=2)
{
path += hash[i];
@ -1016,22 +1029,24 @@ return true;
}
// making a complete path to a request.item static file
bool Request::MakePath(std::string & path, bool create_dir)
// making a complete path to a static file
bool Request::MakePath(const Item & item, std::string & path, bool create_dir)
{
bool res;
if( data.mounts.pmount->fs == Mount::hashfs )
Mount * pmount = data.mounts.CalcMount(item.parent_id);
if( !pmount || pmount->fs == Mount::simplefs )
{
res = MakePathHashFs(path, request.item.id, create_dir);
res = MakePathSimpleFs(path, item.parent_id, create_dir);
}
else
{
res = MakePathSimpleFs(path, create_dir);
res = MakePathHashFs(path, item.id, create_dir);
}
if( res )
path += request.item.url;
path += item.url;
else
path.clear();
@ -1040,3 +1055,7 @@ return res;
bool Request::MakePath(Item & item, bool create_dir)
{
return MakePath(item, item.auth_path, create_dir);
}

View File

@ -157,6 +157,7 @@ struct Request
bool HasReadWriteAccess(const Item & item);
bool HasReadExecAccess(const Item & item);
bool HasReadExecAccessForRoot(const Item & item);
bool HasReadExecAccessToPath(long dir_id);
bool CanCreateThread(bool check_root = false);
bool CanCreateTicket(bool check_root = false);
@ -170,9 +171,10 @@ struct Request
bool CanUseBBCode(long user_id);
bool CanUseRaw(long user_id);
bool MakePathSimpleFs(std::string & path, bool create_dir = false);
bool MakePathSimpleFs(std::string & path, long dir_id, bool create_dir = false);
bool MakePathHashFs(std::string & path, long id, bool create_dir = false);
bool MakePath(std::string & path, bool create_dir = false);
bool MakePath(const Item & item, std::string & path, bool create_dir = false);
bool MakePath(Item & item, bool create_dir = false);
private:

View File

@ -34,9 +34,9 @@
<input type="hidden" name="contenttype" value="2">
[is winix_function_param_is "full"]
<script type="text/javascript">CKEDITOR.replace('itemcontent', \{filebrowserUploadUrl: '[doc_base_url][dir]upload/ckeditor_upload/', filebrowserBrowseUrl: '[doc_base_url][dir]ls/ckeditor_browse/fullscreen/', customConfig : '[doc_base_url_common]/ckeditor_full.js' \});</script>
<script type="text/javascript">CKEDITOR.replace('itemcontent', \{filebrowserUploadUrl: '[doc_base_url][dir]upload/noredirect/ckeditor_upload/', filebrowserBrowseUrl: '[doc_base_url][dir]ls/ckeditor_browse/fullscreen/', customConfig : '[doc_base_url_common]/ckeditor_full.js' \});</script>
[else]
<script type="text/javascript">CKEDITOR.replace('itemcontent', \{filebrowserUploadUrl: '[doc_base_url][dir]upload/ckeditor_upload/', filebrowserBrowseUrl: '[doc_base_url][dir]ls/ckeditor_browse/fullscreen/', customConfig : '[doc_base_url_common]/ckeditor_winix.js' \});</script>
<script type="text/javascript">CKEDITOR.replace('itemcontent', \{filebrowserUploadUrl: '[doc_base_url][dir]upload/noredirect/ckeditor_upload/', filebrowserBrowseUrl: '[doc_base_url][dir]ls/ckeditor_browse/fullscreen/', customConfig : '[doc_base_url_common]/ckeditor_winix.js' \});</script>
[end]
[if-no user_logged]

View File

@ -0,0 +1,26 @@
<h1>{mv_header}</h1>
[include "error.html"]
<form id="additem" method="post" action="[doc_base_url][dir][if-one item_is][item_url]/[end]mv">
<fieldset>
<legend>{mv_form_legend}</legend>
<p>
[if-one item_is]{mv_page} "[item_url]":[else]{mv_dir} "[dir_without_slash]"[end]
</p>
{suggested_url}:<br>
<input class="edit" type="text" name="moveto" value="[dir][if-one item_is][item_url][end]">
[if-no item_is]
<label><input type="checkbox" name="onlycontent">{mv_only_content}</label>
[end]
<input class="submit" type="submit" value="{move}">
</fieldset>
</form>

View File

@ -6,7 +6,7 @@
[include "error.html"]
<form id="additem" method="post" action="[doc_base_url][dir][if-one item_is][item_url]/[end]upload" enctype="multipart/form-data">
<form id="additem" method="post" action="[doc_base_url][dir][if-one item_is][item_url]/[end]upload/noredirect/ckeditor_upload" enctype="multipart/form-data">
<fieldset>
<legend>{upload_form_legend}</legend>

View File

@ -48,6 +48,7 @@ nick = Nick
change = Change
edit = Edit
add = Add
move = Move
user = User
group = Group
permissions = Permissions
@ -187,6 +188,13 @@ adduser_submit = Add user
register_user_submit = Register
mv_header = Move
mv_form_legend = Move form
mv_page = Move page
mv_dir = Move directory
mv_only_content = Move only content of the directory
# notifications
notify_new = News
notify_change = Changes
@ -205,11 +213,12 @@ notify_msg9 = We invite you to read.\nHave a good day. Bye.
notify_footer = \n\n-- \nhttp://www.ttmath.org\nThis message has been sent automatically - do not answer please.\nIf you do not want to receive such messages you can switch them off\nin your user control panel.
# errors
winix_err_default = An error occured, error code: 1
winix_err_default = An error occured, error code:
# those errors are taken automatically by [winix_err_msg_from_locales]
winix_err_3 = Incorrect directory.
winix_err_18 = You are suspected to be a spammer,<br>you cannot send anything without logging first.
winix_err_19 = Solve the rebus please!
@ -217,6 +226,7 @@ winix_err_25 = Passwords are different!
winix_err_26 = A password should consist of at least five characters.
winix_err_27 = We are sorry, but that user is already registered, check other login!
winix_err_28 = Provide a login please.
winix_err_29 = The mount points are different.

View File

@ -47,6 +47,7 @@ nick = Nick
change = Zmień
edit = Edytuj
add = Dodaj
move = Przenieś
user = Użytkownik
group = Grupa
permissions = Uprawnienia
@ -188,6 +189,13 @@ register_user_submit = Rejestruj
mv_header = Przenieś
mv_form_legend = Formularz zmiany
mv_page = Przenieś stronę
mv_dir = Przenieś katalog
mv_only_content = Przenieś tylko zawartość katalogu
# notifications
notify_new = Coś nowego
notify_change = Zmiany
@ -210,6 +218,7 @@ notify_footer = \n\n-- \nhttp://www.slimaczek.pl\nTa wiadomo
winix_err_default = Wystąpiły problemy z tą operacją, kod błędu:
# those errors are taken automatically by [winix_err_msg_from_locales]
winix_err_3 = Nieprawidłowy katalog.
winix_err_18 = Jesteś podejrzany jako spamer,<br> nie możesz nic wysłać do czasu zalogowania się!
winix_err_19 = Proszę rozwiązać rebus!
@ -217,5 +226,5 @@ winix_err_25 = Podane has
winix_err_26 = Hasło powinno składać się z co najmniej pięciu znaków.
winix_err_27 = Przykro nam, podany identyfikator użytkownika jest już zajęty, proszę podać inny login!
winix_err_28 = Proszę podać login.
winix_err_29 = Punkty montowania różnią się od siebie.

View File

@ -5,18 +5,17 @@ main.o: ../templates/templates.h ../templates/patterncacher.h
main.o: ../templates/misc.h ../templates/localefilter.h ../core/locale.h
main.o: ../confparser/confparser.h ../templates/ckeditorgetparser.h
main.o: ../core/httpsimpleparser.h ../core/log.h ../core/thread.h
main.o: ../core/ticket.h ../core/sessionmanager.h ../core/sessioncontainer.h
main.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
main.o: ../core/user.h ../core/rebus.h ../core/functionparser.h
main.o: ../core/requesttypes.h ../core/data.h ../core/dirs.h
main.o: ../core/dircontainer.h ../core/users.h ../core/ugcontainer.h
main.o: ../core/groups.h ../core/group.h ../core/functions.h
main.o: ../core/function.h ../core/lastcontainer.h ../core/mounts.h
main.o: ../core/mount.h ../core/loadavg.h ../core/request.h ../core/thread.h
main.o: ../core/ticket.h ../core/db.h ../core/item.h ../core/user.h
main.o: ../core/group.h ../core/thread.h ../core/error.h ../core/log.h
main.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
main.o: ../core/sessionmanager.h ../core/sessioncontainer.h ../core/session.h
main.o: ../core/rebus.h ../core/functionparser.h ../core/requesttypes.h
main.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
main.o: ../core/functions.h ../core/function.h ../core/lastcontainer.h
main.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h ../core/request.h
main.o: ../core/compress.h ../core/acceptencodingparser.h
main.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
main.o: ../core/postmultiparser.h ../core/ticket.h ../core/db.h
main.o: ../core/config.h ../core/notify.h
main.o: ../core/postmultiparser.h ../core/config.h ../core/notify.h
main.o: ../templatesnotify/templatesnotify.h ../core/mount.h
main.o: ../templates/misc.h ../core/plugin.h ../core/request.h ../core/data.h
main.o: ../core/pluginmsg.h

View File

@ -197,15 +197,15 @@ who.o: ../core/httpsimpleparser.h ../core/log.h ../core/sessioncontainer.h
who.o: ../core/session.h ../core/item.h ../core/error.h ../core/log.h
who.o: ../core/user.h ../core/rebus.h ../core/requestcontroller.h
who.o: ../content/content.h ../templates/templates.h ../core/thread.h
who.o: ../core/ticket.h ../core/sessionmanager.h ../core/sessioncontainer.h
who.o: ../core/ticket.h ../core/db.h ../core/group.h ../core/thread.h
who.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/ticket.h
who.o: ../core/sessionmanager.h ../core/sessioncontainer.h
who.o: ../core/functionparser.h ../core/requesttypes.h ../core/data.h
who.o: ../core/dirs.h ../core/dircontainer.h ../core/users.h
who.o: ../core/ugcontainer.h ../core/groups.h ../core/group.h
who.o: ../core/functions.h ../core/function.h ../core/lastcontainer.h
who.o: ../core/mounts.h ../core/mount.h ../core/loadavg.h ../core/request.h
who.o: ../core/thread.h ../core/compress.h ../core/acceptencodingparser.h
who.o: ../core/acceptbaseparser.h ../core/htmlfilter.h
who.o: ../core/postmultiparser.h ../core/ticket.h ../core/misc.h
who.o: ../core/dirs.h ../core/users.h ../core/groups.h ../core/functions.h
who.o: ../core/function.h ../core/lastcontainer.h ../core/mounts.h
who.o: ../core/mount.h ../core/loadavg.h ../core/request.h ../core/compress.h
who.o: ../core/acceptencodingparser.h ../core/acceptbaseparser.h
who.o: ../core/htmlfilter.h ../core/postmultiparser.h ../core/misc.h
winix.o: templates.h patterncacher.h ../core/item.h misc.h localefilter.h
winix.o: ../core/locale.h ../confparser/confparser.h ckeditorgetparser.h
winix.o: ../core/httpsimpleparser.h ../core/log.h ../core/data.h

View File

@ -64,8 +64,8 @@ Ezc::Pattern * p = 0;
{FUN_UPLOAD, pat_fun_upload},
{FUN_UPTIME, pat_fun_uptime},
{FUN_LOGIN, pat_fun_login},
/* {FUN_MV, pat_fun_mv},
{FUN_UNAME, pat_fun_uname},*/
{FUN_MV, pat_fun_mv},
/* {FUN_UNAME, pat_fun_uname},*/
{FUN_CKEDITOR, pat_fun_ckeditor},
{FUN_ADDUSER, pat_fun_adduser}
};
@ -514,8 +514,8 @@ using namespace TemplatesFunctions;
ReadFile(pat_fun_createticket, "fun_createticket.html");
ReadFile(pat_fun_uptime, "fun_uptime.html");
ReadFile(pat_fun_login, "fun_login.html");
/*ReadFile(pat_fun_mv, "fun_mv.html");
ReadFile(pat_fun_uname, "fun_uname.html");*/
ReadFile(pat_fun_mv, "fun_mv.html");
/*ReadFile(pat_fun_uname, "fun_uname.html");*/
ReadFile(pat_fun_ckeditor, "fun_ckeditor.html");
ReadFile(pat_fun_adduser, "fun_adduser.html");
}