示例#1
0
bool sj_conf_check_access(const struct mg_str key, const char *acl) {
  struct mg_str entry;
  if (acl == NULL) return false;
  while ((acl = mg_next_comma_list_entry(acl, &entry, NULL)) != NULL) {
    if (entry.len == 0) continue;
    bool result = (entry.p[0] != '-');
    if (entry.p[0] == '-' || entry.p[0] == '+') {
      entry.p++;
      entry.len--;
    }
    if (mg_match_prefix_n(entry, key) == (int) key.len) {
      return result;
    }
  }
  return false;
}
示例#2
0
int sj_conf_check_access(const char *key, const char *acl) {
  int key_len;
  struct mg_str entry;
  if (acl == NULL) return 0;
  key_len = strlen(key);
  while ((acl = mg_next_comma_list_entry(acl, &entry, NULL)) != NULL) {
    int result;
    if (entry.len == 0) continue;
    result = (entry.p[0] != '-');
    if (entry.p[0] == '-' || entry.p[0] == '+') {
      entry.p++;
      entry.len--;
    }
    if (mg_match_prefix(entry.p, entry.len, key) == key_len) {
      return result;
    }
  }
  return 0;
}