]> git.proxmox.com Git - ceph.git/blame - ceph/src/rgw/rgw_policy_s3.h
bump version to 19.2.0-pve1
[ceph.git] / ceph / src / rgw / rgw_policy_s3.h
CommitLineData
7c673cae 1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
9f95a23c 2// vim: ts=8 sw=2 smarttab ft=cpp
7c673cae 3
1e59de90 4#pragma once
7c673cae
FG
5
6#include <limits.h>
7
8#include <map>
9#include <list>
10#include <string>
11
12#include "include/utime.h"
13
14#include "rgw_string.h"
15
16
17class RGWPolicyEnv {
18 std::map<std::string, std::string, ltstr_nocase> vars;
19
20public:
20effc67
TL
21 void add_var(const std::string& name, const std::string& value);
22 bool get_var(const std::string& name, std::string& val);
23 bool get_value(const std::string& s, std::string& val, std::map<std::string, bool, ltstr_nocase>& checked_vars);
24 bool match_policy_vars(std::map<std::string, bool, ltstr_nocase>& policy_vars, std::string& err_msg);
7c673cae
FG
25};
26
27class RGWPolicyCondition;
28
29
30class RGWPolicy {
31 uint64_t expires;
20effc67 32 std::string expiration_str;
7c673cae 33 std::list<RGWPolicyCondition *> conditions;
20effc67 34 std::list<std::pair<std::string, std::string> > var_checks;
7c673cae
FG
35 std::map<std::string, bool, ltstr_nocase> checked_vars;
36
37public:
38 off_t min_length;
39 off_t max_length;
40
41 RGWPolicy() : expires(0), min_length(0), max_length(LLONG_MAX) {}
42 ~RGWPolicy();
43
20effc67 44 int set_expires(const std::string& e);
7c673cae
FG
45
46 void set_var_checked(const std::string& var) {
47 checked_vars[var] = true;
48 }
49
20effc67 50 int add_condition(const std::string& op, const std::string& first, const std::string& second, std::string& err_msg);
7c673cae 51 void add_simple_check(const std::string& var, const std::string& value) {
20effc67 52 var_checks.emplace_back(var, value);
7c673cae
FG
53 }
54
20effc67
TL
55 int check(RGWPolicyEnv *env, std::string& err_msg);
56 int from_json(bufferlist& bl, std::string& err_msg);
7c673cae 57};