added: now we have a fourth part in permissions (guests)

e.g.: 07555 means:
           7 for owner
           5 for group
           5 for others
           5 for guests (not logged users)
added:     the sticky bit for directories
           e.g. permissions to a directory with a sticky bit set
           can be set to: 017555
rewritten: rm/mv winix functions to correctly understand the sticky bit
added:     Dir::FollowLink() recognizes ".." and "." now
           consequently System::FollowAllLinks recognizes it too
added:     umask -- calculating privileges for new files/directories
           all users have their own umask (in meta)
           and there is one in the config
           (for guests and when a user has not definied its own one)
removed:   mount option: only_root_remove



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@801 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2012-01-24 23:03:36 +00:00
parent 5aaab89cd8
commit 6e2d00bc5b
34 changed files with 1109 additions and 557 deletions

View File

@@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2012, Tomasz Sowa
* All rights reserved.
*
*/
@@ -72,7 +72,7 @@ void CreateThread::MakePost()
functions->SetUser(cur->request->item);
functions->PrepareUrl(cur->request->item);
cur->request->item.parent_id = cur->request->dir_tab.back()->id;
cur->request->item.privileges = 0644; // !! tymczasowo
cur->request->item.privileges = system->NewFilePrivileges();
if( functions->CheckAbuse() )
return;

View File

@@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2010, Tomasz Sowa
* Copyright (c) 2010-2012, Tomasz Sowa
* All rights reserved.
*
*/
@@ -92,7 +92,7 @@ void Reply::MakePost()
functions->SetUser(answer);
functions->PrepareUrl(answer);
answer.parent_id = files_dir->id;
answer.privileges = 0644; // !! tymczasowo
answer.privileges = system->NewFilePrivileges();
if( functions->CheckAbuse() )
return;

View File

@@ -80,7 +80,7 @@ void CreateTicket::Submit(Ticket & ticket, Item & item)
return;
functions->SetUser(item);
item.privileges = 0644; // !! tymczasowo
item.privileges = system->NewFilePrivileges();
item.parent_id = cur->request->dir_tab.back()->id;
// adding without notificating

View File

@@ -61,7 +61,7 @@ void SessionData::RemoveAllFiles(PT::Space & new_space)
BuildFileList(new_file_tab, new_space);
for(size_t i=0 ; i<new_file_tab.size() ; ++i)
fun_rm->RemoveItemById(new_file_tab[i]);
fun_rm->RemoveItemById(new_file_tab[i], false);
}
@@ -86,7 +86,7 @@ void SessionData::RemoveAllStaleFiles(PT::Space & new_space, PT::Space & old_spa
{
if( new_file_tab[n] < old_file_tab[o] )
{
fun_rm->RemoveItemById(new_file_tab[n]);
fun_rm->RemoveItemById(new_file_tab[n], false);
n += 1;
}
else
@@ -103,7 +103,7 @@ void SessionData::RemoveAllStaleFiles(PT::Space & new_space, PT::Space & old_spa
while( n < new_file_tab.size() )
{
fun_rm->RemoveItemById(new_file_tab[n]);
fun_rm->RemoveItemById(new_file_tab[n], false);
n += 1;
}
}

View File

@@ -132,16 +132,12 @@ bool TicketInfo::ParseTicketConf(long mount_dir_id, const std::wstring & path)
{
log << log3 << "Ticket: parsing conf file: " << path << logend;
log << log1 << config_file.content << logend;
conf_tab[mount_dir_id].file_name = path;
conf_parser.UTF8(true);
conf_parser.SetSpace(conf_tab[mount_dir_id].conf);
conf_parser.SplitSingle(true);
conf_tab[mount_dir_id].conf.Clear();
//log << log1 << "status: " << conf_parser.Parse(config_file.content) << logend;
return (conf_parser.ParseString(config_file.content) == PT::ConfParser::ok);
}
@@ -343,7 +339,7 @@ void TicketInfo::ReadTicketValue(PT::Space & space,
file.Clear(); // clearing and setting date
file.parent_id = upload_dir.id;
file.type = Item::file;
file.privileges = 0644; // !! tymczasowo
file.privileges = system->NewFilePrivileges();
file.file_type = SelectFileType(value.filename);
file.url = value.filename;
functions->PrepareUrl(file);