2008-12-30 02:05:03 +01:00
|
|
|
/*
|
2010-02-28 01:08:10 +01:00
|
|
|
* This file is a part of Winix
|
2008-12-30 02:05:03 +01:00
|
|
|
* and is not publicly distributed
|
|
|
|
*
|
2010-02-28 22:33:06 +01:00
|
|
|
* Copyright (c) 2008-2010, Tomasz Sowa
|
2008-12-30 02:05:03 +01:00
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2009-04-21 22:50:55 +02:00
|
|
|
#ifndef headerfilecmslucontentcontent
|
|
|
|
#define headerfilecmslucontentcontent
|
2008-12-30 02:05:03 +01:00
|
|
|
|
|
|
|
#include <cstdlib>
|
|
|
|
#include <fcgiapp.h>
|
2009-03-23 00:54:15 +01:00
|
|
|
#include <ctime>
|
2008-12-30 02:05:03 +01:00
|
|
|
|
2009-04-21 22:50:55 +02:00
|
|
|
#include "../core/item.h"
|
2008-12-30 02:05:03 +01:00
|
|
|
#include "../templates/templates.h"
|
2009-06-05 22:29:06 +02:00
|
|
|
#include "../core/thread.h"
|
2010-01-25 05:52:17 +01:00
|
|
|
#include "../core/ticket.h"
|
2010-03-15 02:47:26 +01:00
|
|
|
#include "../core/db.h"
|
2009-10-01 00:31:20 +02:00
|
|
|
|
|
|
|
|
2010-02-11 21:56:52 +01:00
|
|
|
|
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
class Content
|
|
|
|
{
|
|
|
|
Templates templates;
|
|
|
|
|
2010-01-11 15:47:52 +01:00
|
|
|
std::string temp;
|
|
|
|
|
2010-02-19 00:30:22 +01:00
|
|
|
void FunDownload();
|
|
|
|
|
2009-11-16 00:55:11 +01:00
|
|
|
void CheckSpecialFile();
|
2008-12-30 02:05:03 +01:00
|
|
|
|
|
|
|
void PrepareUrl(Item & item);
|
|
|
|
|
2010-02-28 01:08:10 +01:00
|
|
|
|
|
|
|
bool CheckAddUserVars(const std::string * login, const std::string * pass, const std::string * conf_pass);
|
|
|
|
void PostFunAddUser();
|
|
|
|
void FunAddUser();
|
2008-12-30 02:05:03 +01:00
|
|
|
|
2010-03-15 02:47:26 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
2010-06-03 19:38:18 +02:00
|
|
|
/*
|
|
|
|
cp
|
|
|
|
*/
|
|
|
|
bool CpCheckAccessFrom();
|
|
|
|
void CpAuth(Item & item);
|
2010-06-05 21:44:49 +02:00
|
|
|
void CpSetNewAttributes(Item & item);
|
|
|
|
void CpItem(Item & item, long dst_dir_id);
|
|
|
|
void CpFilesInDir(const Item & dir, long dst_dir_id);
|
|
|
|
void CpContentOfDir(const Item & item, long dst_dir_id);
|
|
|
|
long CpDir(const Item & item, long dst_dir_id);
|
|
|
|
void CpItemCheck(Item & item, bool redirect = true);
|
|
|
|
void CpContentOfDirCheck(const Item & item, bool redirect = true);
|
|
|
|
void CpDirCheck(const Item & item, bool redirect = true);
|
2010-06-03 19:38:18 +02:00
|
|
|
void PostFunCp();
|
|
|
|
void FunCp();
|
2010-06-05 21:44:49 +02:00
|
|
|
void CpPrepare();
|
|
|
|
Item cp_temp;
|
|
|
|
Db::ItemQuery cp_iq;
|
|
|
|
bool cp_remove_defaults;
|
|
|
|
bool cp_preserve_attr;
|
|
|
|
long cp_new_user;
|
|
|
|
long cp_new_group;
|
|
|
|
|
|
|
|
|
2010-06-03 19:38:18 +02:00
|
|
|
|
2010-03-15 02:47:26 +01:00
|
|
|
|
|
|
|
|
2009-04-20 00:13:21 +02:00
|
|
|
void SetDefaultFunctionForFile();
|
|
|
|
void SetDefaultFunctionForDir();
|
2008-12-30 02:05:03 +01:00
|
|
|
void SetDefaultFunction();
|
|
|
|
bool DirsHaveReadExecPerm();
|
|
|
|
|
2010-06-03 19:38:18 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
calling functions (standard, post)
|
|
|
|
*/
|
|
|
|
typedef void (Content::*Fun)();
|
|
|
|
|
|
|
|
struct FunItem
|
|
|
|
{
|
|
|
|
int code;
|
|
|
|
Fun fun;
|
|
|
|
};
|
|
|
|
|
|
|
|
void FunNothing();
|
|
|
|
void CallFunction();
|
2008-12-30 02:05:03 +01:00
|
|
|
void MakeStandardFunction();
|
2010-06-03 19:38:18 +02:00
|
|
|
void CallPostFunction();
|
|
|
|
void MakePost();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-11-17 02:04:01 +01:00
|
|
|
void SetUser(Item & item);
|
2009-11-17 00:36:38 +01:00
|
|
|
bool CheckRebus();
|
2008-12-30 02:05:03 +01:00
|
|
|
|
2010-02-11 21:56:52 +01:00
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
|
|
|
|
void FunCat();
|
|
|
|
void FunLogout();
|
|
|
|
void FunLs();
|
|
|
|
void FunEmacs();
|
2010-02-16 19:34:41 +01:00
|
|
|
|
2009-02-06 14:12:03 +01:00
|
|
|
|
2010-02-22 23:52:09 +01:00
|
|
|
void AddPathToAuth(std::string & path);
|
2010-02-19 00:30:22 +01:00
|
|
|
|
2010-02-11 21:56:52 +01:00
|
|
|
void FunCKEditor();
|
|
|
|
|
2010-03-15 18:09:45 +01:00
|
|
|
|
2010-05-20 20:28:19 +02:00
|
|
|
void FunUname();
|
|
|
|
|
|
|
|
bool SubjectCheckAccess();
|
|
|
|
void EditDirSubject();
|
|
|
|
void EditFileSubject();
|
|
|
|
void PostFunSubject();
|
|
|
|
void FunSubject();
|
|
|
|
|
|
|
|
|
2010-03-15 18:09:45 +01:00
|
|
|
/*
|
|
|
|
rm
|
|
|
|
*/
|
|
|
|
bool RemoveCheckAccess();
|
|
|
|
void RemoveAllDirs();
|
|
|
|
void RemoveAllDirs(long dir_id);
|
|
|
|
void RemoveDir();
|
|
|
|
void RemoveAuthPrepareQuery();
|
|
|
|
void RemoveAuth(Item & item);
|
|
|
|
void RemoveFile();
|
2008-12-30 02:05:03 +01:00
|
|
|
void FunRm();
|
2010-03-15 18:09:45 +01:00
|
|
|
Db::ItemQuery rm_auth_iq;
|
|
|
|
|
2009-02-06 14:12:03 +01:00
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
void FunNode();
|
2008-12-31 14:36:46 +01:00
|
|
|
void FunMkdir();
|
2009-01-26 21:49:28 +01:00
|
|
|
void FunDefault();
|
|
|
|
void FunRun();
|
2009-12-09 01:42:40 +01:00
|
|
|
void PostFunRun();
|
2009-01-31 07:53:36 +01:00
|
|
|
void FunWho();
|
2009-03-23 00:54:15 +01:00
|
|
|
void FunLast();
|
2009-11-16 18:43:23 +01:00
|
|
|
|
|
|
|
void FunReloadTemplates();
|
|
|
|
void FunReload();
|
|
|
|
|
2009-06-05 22:29:06 +02:00
|
|
|
static bool FunThreadSort(const Thread & t1, const Thread & t2);
|
2009-04-20 00:13:21 +02:00
|
|
|
void FunThread();
|
|
|
|
void FunCreateThread();
|
2010-01-25 05:52:17 +01:00
|
|
|
|
|
|
|
bool FunUploadCheckAccess();
|
2010-01-06 20:17:53 +01:00
|
|
|
void FunUpload();
|
|
|
|
|
2010-01-25 05:52:17 +01:00
|
|
|
bool ReadItemUrlSubject(Item & item, Item::Type item_type);
|
|
|
|
bool ReadItem(Item & item, Item::Type item_type);
|
|
|
|
|
|
|
|
void CheckAccessToItems();
|
|
|
|
|
2010-02-28 01:08:10 +01:00
|
|
|
void LoginUser(long user_id, bool remember_me);
|
2010-02-11 21:56:52 +01:00
|
|
|
void FunLogin();
|
2008-12-30 02:05:03 +01:00
|
|
|
void PostFunLogin();
|
2010-01-11 15:47:52 +01:00
|
|
|
|
2010-01-25 05:52:17 +01:00
|
|
|
|
|
|
|
void ReadItemContentWithType(Item & item);
|
|
|
|
bool FunEmacsCheckAccess();
|
2010-06-03 19:38:18 +02:00
|
|
|
void PostFunEmacsAdd(Item & item);
|
2008-12-30 02:05:03 +01:00
|
|
|
void PostFunEmacsEdit(bool with_url);
|
2010-01-25 05:52:17 +01:00
|
|
|
bool PostEmacsCheckAbuse(bool adding);
|
|
|
|
void PostFunEmacsModifyMountPoint(bool adding);
|
2008-12-30 02:05:03 +01:00
|
|
|
void PostFunEmacs();
|
2010-01-25 05:52:17 +01:00
|
|
|
|
|
|
|
bool FunMkdirCheckAccess();
|
2010-06-03 19:38:18 +02:00
|
|
|
void PostFunMkdir(bool add_to_dir_table, int privileges);
|
|
|
|
void PostFunMkdir();
|
|
|
|
|
2010-01-25 05:52:17 +01:00
|
|
|
void Mkdir(Item & item, bool add_to_dir_table);
|
2009-04-20 23:10:31 +02:00
|
|
|
long PostFunDefaultParsePath();
|
2009-01-26 21:49:28 +01:00
|
|
|
void PostFunDefault();
|
2010-02-16 01:37:00 +01:00
|
|
|
|
2010-02-16 19:34:41 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
function: priv, chmod, chown
|
|
|
|
*/
|
2010-02-16 01:37:00 +01:00
|
|
|
bool PrivCheckAccess();
|
2010-02-16 19:34:41 +01:00
|
|
|
void PrivLogStart(const char * what, long user, long group, int priv);
|
|
|
|
void PrivLog(const char * what, long id, const std::string & url);
|
|
|
|
bool ChangeOwner(Item & item, long user_id, long group_id);
|
|
|
|
bool ChangePrivileges(Item & item, int privileges);
|
|
|
|
void ChangePriv(Item & item, long user_id, long group_id, int privileges);
|
2009-01-26 21:49:28 +01:00
|
|
|
void PostFunPriv();
|
2010-02-16 01:37:00 +01:00
|
|
|
void PrivFilesInDir(long parent_id);
|
|
|
|
void PrivDir(long parent_id);
|
2010-02-16 19:34:41 +01:00
|
|
|
|
|
|
|
|
2010-02-16 01:37:00 +01:00
|
|
|
bool ReadPriv(const char * user_in, const char * group_in, const char * priv_in, long & user_id, long & group_id, int & priv);
|
|
|
|
void PrivDir();
|
|
|
|
void PrivOneItem();
|
2010-02-16 19:34:41 +01:00
|
|
|
void FunPriv();
|
2010-02-16 01:37:00 +01:00
|
|
|
|
|
|
|
long user_id_file, group_id_file, user_id_dir, group_id_dir;
|
|
|
|
int priv_file, priv_dir;
|
2010-02-16 19:34:41 +01:00
|
|
|
bool subdirectories;
|
|
|
|
bool change_owner, change_priv;
|
|
|
|
|
|
|
|
|
2010-02-16 01:37:00 +01:00
|
|
|
|
2009-04-21 01:49:28 +02:00
|
|
|
bool FunCreateThreadCheckAccess();
|
2009-12-09 01:42:40 +01:00
|
|
|
bool FunCreateThreadCheckAbuse();
|
2010-01-25 05:52:17 +01:00
|
|
|
void ReadThread(Thread & thread);
|
|
|
|
void AddThread();
|
|
|
|
void PostFunCreateThreadLogAndRedirect();
|
2009-04-20 00:13:21 +02:00
|
|
|
void PostFunCreateThread();
|
2010-01-25 05:52:17 +01:00
|
|
|
|
2010-03-15 02:47:26 +01:00
|
|
|
bool UploadCreatePath();
|
2010-02-13 00:16:13 +01:00
|
|
|
void UploadSaveFile(const std::string & tmp_filename, const std::string & destination);
|
|
|
|
void UploadMulti();
|
|
|
|
void UploadSingle();
|
|
|
|
bool FunUploadCheckAbuse();
|
2010-01-06 20:17:53 +01:00
|
|
|
void PostFunUpload();
|
2010-03-15 02:47:26 +01:00
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
|
2010-01-25 05:52:17 +01:00
|
|
|
bool FunCreateTicketCheckAccess();
|
|
|
|
void FunCreateTicket();
|
2010-02-28 22:33:06 +01:00
|
|
|
bool FunCreateTicketCheckAbuse();
|
2010-01-25 05:52:17 +01:00
|
|
|
void PostFunCreateTicketLogAndRedirect();
|
|
|
|
void PostFunCreateTicket();
|
|
|
|
void FunTicket();
|
|
|
|
void TicketDeleteFirst();
|
|
|
|
|
|
|
|
bool FunEditTicketCheckAccess();
|
|
|
|
void PostFunEditTicketLogAndRedirect();
|
2010-02-06 15:08:44 +01:00
|
|
|
void EditTicketCheckFirstItem();
|
2010-01-25 05:52:17 +01:00
|
|
|
void EditTicketModTicket();
|
|
|
|
void EditTicketModDir();
|
|
|
|
void EditTicketModFirstItem();
|
|
|
|
void PostFunEditTicket();
|
|
|
|
void FunEditTicket();
|
|
|
|
|
|
|
|
void AddTicket();
|
|
|
|
void ReadTicket(Ticket & ticket);
|
|
|
|
void ReadTicketType(Ticket & ticket);
|
|
|
|
void ReadTicketStatus(Ticket & ticket);
|
|
|
|
void ReadTicketPriority(Ticket & ticket);
|
|
|
|
void ReadTicketCategory(Ticket & ticket);
|
|
|
|
void ReadTicketExpected(Ticket & ticket);
|
|
|
|
void ReadTicketProgress(Ticket & ticket);
|
|
|
|
|
2010-03-15 02:47:26 +01:00
|
|
|
void RedirectTo(const Item & item, const char * postfix = 0);
|
|
|
|
void RedirectTo(long item_id, const char * postfix = 0);
|
2010-01-25 05:52:17 +01:00
|
|
|
void RedirectToLastDir();
|
2008-12-30 02:05:03 +01:00
|
|
|
|
2009-12-09 01:42:40 +01:00
|
|
|
void CheckGetPostTimes(time_t difference = 10);
|
2010-01-06 20:17:53 +01:00
|
|
|
// bool CreateFile(const std::string & path, const std::string & content);
|
2010-01-11 15:47:52 +01:00
|
|
|
void MakePage();
|
2009-10-01 00:31:20 +02:00
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
public:
|
|
|
|
|
|
|
|
bool Init();
|
|
|
|
|
2009-04-21 01:49:28 +02:00
|
|
|
void ReadAdditionalInfo();
|
2008-12-30 02:05:03 +01:00
|
|
|
void Make();
|
2009-10-01 00:31:20 +02:00
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|