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; }
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(); }