Navigation Menu

Skip to content

Commit

Permalink
Added ability to set the negative group cache max size and expiration…
Browse files Browse the repository at this point in the history
… time, as well as insuring backwards compatibility with older versions of QAS that do not have the new API call vas_auth_check_client_membership_with_server_id
  • Loading branch information
JaysonHurst committed Nov 13, 2014
1 parent 550afc1 commit 926f80e
Show file tree
Hide file tree
Showing 7 changed files with 467 additions and 90 deletions.
7 changes: 7 additions & 0 deletions Makefile.am
Expand Up @@ -13,6 +13,7 @@ mod_auth_vas4_la_SOURCES = \
mod_auth_vas4.c \
cache.c cache.h \
user.c user.h \
group.c group.h \
log.h \
#

Expand Down Expand Up @@ -55,6 +56,7 @@ print-dist-name:; echo $(distdir)

check_PROGRAMS = \
test-cache \
test-group-cache \
#

TESTS = $(check_PROGRAMS)
Expand All @@ -63,6 +65,11 @@ test_cache_SOURCES = test-cache.c cache.c cache.h compat.h
test_cache_CFLAGS = $(AM_CFLAGS) $(COVERAGE_CFLAGS)
test_cache_LDFLAGS = $(AM_LDFLAGS) $(COVERAGE_LDFLAGS)

test_group_cache_SOURCES = test-group-cache.c cache.c cache.h compat.h group.c group.h
test_group_cache_CFLAGS = $(AM_CFLAGS) $(COVERAGE_CFLAGS)
test_group_cache_LDFLAGS = $(AM_LDFLAGS) $(COVERAGE_LDFLAGS)


if HAVE_COVERAGE

# Produces a code coverage report
Expand Down
65 changes: 65 additions & 0 deletions group.c
@@ -0,0 +1,65 @@
/*
* mod_auth_vas: VAS authentication module for Apache.
*
* Copyright 2014 Dell Software, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* a. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* b. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* c. Neither the name of Dell Software, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors:
* Jayson Hurst <jayson.hurst@software.dell.com>
*/

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif

#include "compat.h"
#include "cache.h"
#include "group.h"

void auth_vas_cached_group_data_ref(cached_group_data *group) {
++group->refcount;
}

void auth_vas_cached_group_data_unref(cached_group_data *group) {
--group->refcount;

if (group->refcount == 0) {
free(group->key);
free(group);
}
}

const char *auth_vas_get_cached_group_data_key_cb(cached_group_data *group)
{
if (!group)
return NULL;

return group->key;
}
55 changes: 55 additions & 0 deletions group.h
@@ -0,0 +1,55 @@
#ifndef MAV_GROUP_H
#define MAV_GROUP_H

/*
* mod_auth_vas: VAS authentication module for Apache.
*
* Copyright 2014 Quest Software, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* a. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* b. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* c. Neither the name of Quest Software, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors:
* Jayson Hurst <jayson.hurst@software.dell.com>
*/

#ifdef __cplusplus
extern "C" {
#endif

typedef struct cached_group_data {
char *key;
unsigned refcount;
} cached_group_data;

void auth_vas_cached_group_data_ref(cached_group_data *group);
void auth_vas_cached_group_data_unref(cached_group_data *group);
const char *auth_vas_get_cached_group_data_key_cb(cached_group_data *group);

#endif /* MAV_GROUP_H */

0 comments on commit 926f80e

Please sign in to comment.