lib/util.h (59 lines of code) (raw):

/* * util.h * * Copyright (c) 2013 Duo Security * All rights reserved, all wrongs reversed */ #ifndef DUO_UTIL_H #define DUO_UTIL_H #define MAX_GROUPS 256 #define MAX_PROMPTS 3 #include <pwd.h> #include <syslog.h> #include <stdarg.h> extern int duo_debug; enum { DUO_FAIL_SAFE = 0, DUO_FAIL_SECURE }; struct duo_config { char *ikey; char *skey; char *apihost; char *cafile; char *http_proxy; char *groups[MAX_GROUPS]; char gecos_delim; int groups_cnt; int groups_mode; int failmode; /* Duo failure handling: DUO_FAIL_* */ int pushinfo; int group_access_fail; /* boolean fail if not member of groups */ int noverify; int autopush; int motd; /* login_duo only */ int prompts; int accept_env; int local_ip_fallback; int https_timeout; int send_gecos; int fips_mode; int gecos_username_pos; }; void duo_config_default(struct duo_config *cfg); int duo_set_boolean_option(const char *val); int duo_common_ini_handler( struct duo_config *cfg, const char *section, const char *name, const char *val ); /* Clean up config memory. */ void close_config(struct duo_config *cfg); int duo_check_groups(struct passwd *pw, char **groups, int groups_cnt); void duo_log( int priority, const char *msg, const char *user, const char *ip, const char *err ); void duo_syslog(int priority, const char *fmt, ...); const char *duo_resolve_name(const char *hostname); const char *duo_local_ip(); char *duo_split_at(char *s, char delimiter, unsigned int position); /* Free and zero out memory */ void duo_zero_free(void *ptr, size_t size); #endif