Пример #1
0
bool PrivatePath(const fs::VirtualPath& path, const User& user)
{
  auto info = user.ACLInfo();
  for (const auto& pp : cfg::Get().Privpath())
  {
    if (!path.ToString().compare(0, pp.Path().length(), pp.Path()))
      return !pp.ACL().Evaluate(info);
  }
  return false;
}
Пример #2
0
util::Error Filter(const User& user, const fs::Path& basename)
{
  auto info = user.ACLInfo();
  for (auto& filter : cfg::Get().PathFilter())
  {
    if (filter.ACL().Evaluate(info))
    {
      if (!boost::regex_match(basename.ToString(), filter.Regex()))
      {
        return util::Error::Failure(EACCES);
      }
      break;
    }
  }
  return util::Error::Success();
}