1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-09-29 04:25:55 -04:00

Feature: Added function to convert strings into auth results

This commit is contained in:
Philipp Schafft 2018-09-19 12:27:30 +00:00
parent b3497e6ec8
commit 7b608e27be
2 changed files with 36 additions and 31 deletions

View File

@ -62,40 +62,43 @@ static unsigned long _next_auth_id(void) {
return id; return id;
} }
static const struct {
auth_result result;
const char *string;
} __auth_results[] = {
{.result = AUTH_UNDEFINED, .string = "undefined"},
{.result = AUTH_OK, .string = "ok"},
{.result = AUTH_FAILED, .string = "failed"},
{.result = AUTH_RELEASED, .string = "released"},
{.result = AUTH_FORBIDDEN, .string = "forbidden"},
{.result = AUTH_NOMATCH, .string = "no match"},
{.result = AUTH_USERADDED, .string = "user added"},
{.result = AUTH_USEREXISTS, .string = "user exists"},
{.result = AUTH_USERDELETED, .string = "user deleted"}
};
static const char *auth_result2str(auth_result res) static const char *auth_result2str(auth_result res)
{ {
switch (res) { size_t i;
case AUTH_UNDEFINED:
return "undefined"; for (i = 0; i < (sizeof(__auth_results)/sizeof(*__auth_results)); i++) {
break; if (__auth_results[i].result == res)
case AUTH_OK: return __auth_results[i].string;
return "ok";
break;
case AUTH_FAILED:
return "failed";
break;
case AUTH_RELEASED:
return "released";
break;
case AUTH_FORBIDDEN:
return "forbidden";
break;
case AUTH_NOMATCH:
return "no match";
break;
case AUTH_USERADDED:
return "user added";
break;
case AUTH_USEREXISTS:
return "user exists";
break;
case AUTH_USERDELETED:
return "user deleted";
break;
default:
return "(unknown)";
break;
} }
return "(unknown)";
}
auth_result auth_str2result(const char *str)
{
size_t i;
for (i = 0; i < (sizeof(__auth_results)/sizeof(*__auth_results)); i++) {
if (strcasecmp(__auth_results[i].string, str) == 0)
return __auth_results[i].result;
}
return AUTH_FAILED;
} }
static auth_client *auth_client_setup (client_t *client) static auth_client *auth_client_setup (client_t *client)

View File

@ -164,6 +164,8 @@ int auth_get_htpasswd_auth(auth_t *auth, config_options_t *options);
void auth_initialise(void); void auth_initialise(void);
void auth_shutdown(void); void auth_shutdown(void);
auth_result auth_str2result(const char *str);
auth_t *auth_get_authenticator(xmlNodePtr node); auth_t *auth_get_authenticator(xmlNodePtr node);
void auth_release(auth_t *authenticator); void auth_release(auth_t *authenticator);
void auth_addref(auth_t *authenticator); void auth_addref(auth_t *authenticator);