Skip to content

Commit

Permalink
fix fmt
Browse files Browse the repository at this point in the history
  • Loading branch information
NikitaUnisikhin committed Jan 28, 2024
1 parent 375d302 commit 716551e
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 58 deletions.
24 changes: 13 additions & 11 deletions sources/config_reader.c
Original file line number Diff line number Diff line change
Expand Up @@ -1744,20 +1744,21 @@ static int od_config_reader_route(od_config_reader_t *reader, char *db_name,
return NOT_OK_RESPONSE;

/* unreach */
return od_config_reader_rule_settings(reader, rule, extentions, NULL, NULL);
return od_config_reader_rule_settings(reader, rule, extentions, NULL,
NULL);
}

static int od_config_reader_group(od_config_reader_t *reader, char *db_name,
int db_name_len, int db_is_default,
od_extention_t *extentions)
od_extention_t *extentions)
{
/* group name */
char *group_name = NULL;
if (!od_config_reader_is(reader, OD_PARSER_STRING))
return NOT_OK_RESPONSE;
if (!od_config_reader_string(reader, &group_name))
return NOT_OK_RESPONSE;

char route_usr[strlen("group_") + strlen(group_name) + 1];
char route_db[strlen("group_") + strlen(group_name) + 1];
snprintf(route_usr, sizeof route_usr, "%s%s", "group_", group_name);
Expand All @@ -1769,7 +1770,7 @@ static int od_config_reader_group(od_config_reader_t *reader, char *db_name,
od_errorf(reader->error, "route '%s.%s': is redefined",
route_usr, route_usr);
return NOT_OK_RESPONSE;
}
}
rule = od_rules_add(reader->rules);
if (rule == NULL) {
return NOT_OK_RESPONSE;
Expand Down Expand Up @@ -1799,10 +1800,10 @@ static int od_config_reader_group(od_config_reader_t *reader, char *db_name,
return NOT_OK_RESPONSE;

/* unreach */
if (od_config_reader_rule_settings(reader, rule, extentions,
NULL, group) == NOT_OK_RESPONSE) {
if (od_config_reader_rule_settings(reader, rule, extentions, NULL,
group) == NOT_OK_RESPONSE) {
goto error;
}
}

free(group_name);

Expand Down Expand Up @@ -1857,8 +1858,8 @@ static inline int od_config_reader_watchdog(od_config_reader_t *reader,
return NOT_OK_RESPONSE;

/* unreach */
if (od_config_reader_rule_settings(reader, rule, extentions,
watchdog, NULL) == NOT_OK_RESPONSE) {
if (od_config_reader_rule_settings(reader, rule, extentions, watchdog,
NULL) == NOT_OK_RESPONSE) {
return NOT_OK_RESPONSE;
}

Expand Down Expand Up @@ -2140,8 +2141,9 @@ static int od_config_reader_database(od_config_reader_t *reader,
goto error;
continue;
case OD_LGROUP:
rc = od_config_reader_group(reader, db_name,
db_name_len, db_is_default, extentions);
rc = od_config_reader_group(reader, db_name,
db_name_len, db_is_default,
extentions);
if (rc == -1)
goto error;
continue;
Expand Down
3 changes: 2 additions & 1 deletion sources/group.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ int od_group_free(od_group_t *group)
return OK_RESPONSE;
}

void od_group_qry_format(char *qry, char *fmt, ...) {
void od_group_qry_format(char *qry, char *fmt, ...)
{
va_list args;
va_start(args, fmt);
int len = od_vsnprintf(qry, OD_QRY_MAX_SZ, fmt, args);
Expand Down
2 changes: 1 addition & 1 deletion sources/group.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ struct od_group {

od_global_t *global;

od_list_t link;
od_list_t link;
};

int od_group_free(od_group_t *);
Expand Down
5 changes: 2 additions & 3 deletions sources/list.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ static inline int od_list_empty(od_list_t *list)
for (iterator = (list)->next; \
iterator != list && (safe = iterator->next); iterator = safe)

#define od_list_foreach_with_start(list, iterator) \
for (; iterator != list; \
iterator = (iterator)->next)
#define od_list_foreach_with_start(list, iterator) \
for (; iterator != list; iterator = (iterator)->next)

#endif /* ODYSSEY_LIST_H */
106 changes: 65 additions & 41 deletions sources/rules.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,8 @@ static inline int od_rule_update_auth(od_route_t *route, void **argv)
rule->ldap_pool_size = group_rule->ldap_pool_size;
rule->ldap_pool_ttl = group_rule->ldap_pool_ttl;
rule->ldap_storage_creds_list = group_rule->ldap_storage_creds_list;
rule->ldap_storage_credentials_attr = group_rule->ldap_storage_credentials_attr;
rule->ldap_storage_credentials_attr =
group_rule->ldap_storage_credentials_attr;
#endif

rule->auth_module = group_rule->auth_module;
Expand All @@ -182,8 +183,8 @@ static inline int od_rule_update_auth(od_route_t *route, void **argv)
return 0;
}

void od_rules_group_checker_run(void *arg)
{
void od_rules_group_checker_run(void *arg)
{
od_group_checker_run_args *args = (od_group_checker_run_args *)arg;
od_rule_t *group_rule = args->rule;
od_group_t *group = group_rule->group;
Expand All @@ -195,7 +196,7 @@ void od_rules_group_checker_run(void *arg)

od_debug(&instance->logger, "group_checker", NULL, NULL,
"start group checking");

/* create internal auth client */
od_client_t *group_checker_client;
group_checker_client =
Expand Down Expand Up @@ -229,7 +230,8 @@ void od_rules_group_checker_run(void *arg)
od_router_status_to_str(status));

if (status != OD_ROUTER_OK) {
od_error(&instance->logger, "group_checker", group_checker_client, NULL,
od_error(&instance->logger, "group_checker",
group_checker_client, NULL,
"route rule group_checker failed: %s",
od_router_status_to_str(status));
return;
Expand All @@ -248,12 +250,16 @@ void od_rules_group_checker_run(void *arg)
continue;
if (rule->pool->routing != OD_RULE_POOL_CLIENT_VISIBLE)
continue;
if (rule->db_is_default == 1 || rule->user_is_default == 1)
if (rule->db_is_default == 1 ||
rule->user_is_default == 1)
continue;

/* attach client to some route */
status = od_router_attach(router, group_checker_client, false);
od_debug(&instance->logger, "group_checker", group_checker_client, NULL,
status = od_router_attach(router, group_checker_client,
false);
od_debug(
&instance->logger, "group_checker",
group_checker_client, NULL,
"attaching group_checker client to backend connection status: %s",
od_router_status_to_str(status));

Expand All @@ -264,59 +270,75 @@ void od_rules_group_checker_run(void *arg)
}
od_server_t *server;
server = group_checker_client->server;
od_debug(&instance->logger, "group_checker", group_checker_client, server,
"attached to server %s%.*s", server->id.id_prefix,
(int)sizeof(server->id.id), server->id.id);

od_debug(&instance->logger, "group_checker",
group_checker_client, server,
"attached to server %s%.*s",
server->id.id_prefix,
(int)sizeof(server->id.id), server->id.id);

/* connect to server, if necessary */
if (server->io.io == NULL) {
rc = od_backend_connect(server, "group_checker", NULL,
rc = od_backend_connect(server, "group_checker",
NULL,
group_checker_client);
if (rc == NOT_OK_RESPONSE) {
od_debug(
&instance->logger, "group_checker",
&instance->logger,
"group_checker",
group_checker_client, server,
"backend connect failed, retry after 1 sec");
od_router_close(router, group_checker_client);
od_router_close(router,
group_checker_client);
/* 1 second soft interval */
machine_sleep(1000);
continue;
}
}

for (int retry = 0; retry < group->check_retry; ++retry) {
char* qry = (char*)malloc(OD_QRY_MAX_SZ * sizeof(char));
od_group_qry_format(qry, group->group_query, rule->user_name);

msg = od_query_do(server, "group_checker", qry, NULL);
for (int retry = 0; retry < group->check_retry;
++retry) {
char *qry = (char *)malloc(OD_QRY_MAX_SZ *
sizeof(char));
od_group_qry_format(qry, group->group_query,
rule->user_name);

msg = od_query_do(server, "group_checker", qry,
NULL);
free(qry);

if (msg != NULL) {
rc = od_group_parse_val_datarow(msg, &is_group_member);
rc = od_group_parse_val_datarow(
msg, &is_group_member);
machine_msg_free(msg);
od_router_close(router, group_checker_client);
od_router_close(router,
group_checker_client);
} else {
od_debug(
&instance->logger, "group_checker",
&instance->logger,
"group_checker",
group_checker_client, server,
"receive msg failed, closing backend connection");
rc = NOT_OK_RESPONSE;
od_router_close(router, group_checker_client);
od_router_close(router,
group_checker_client);
break;
}

if (rc == OK_RESPONSE) {
od_debug(
&instance->logger, "group_checker",
group_checker_client, server,
"group check result is %d",
is_group_member);

if (is_group_member && rule->is_group_member == 0) {
void *argv[] = { rule, group_rule };
od_router_foreach(router,
od_rule_update_auth,
argv);
od_debug(&instance->logger,
"group_checker",
group_checker_client, server,
"group check result is %d",
is_group_member);

if (is_group_member &&
rule->is_group_member == 0) {
void *argv[] = { rule,
group_rule };
od_router_foreach(
router,
od_rule_update_auth,
argv);
}

break;
Expand All @@ -331,8 +353,8 @@ void od_rules_group_checker_run(void *arg)
}

if (group->online == 0) {
od_debug(&instance->logger, "group_checker", group_checker_client,
NULL,
od_debug(&instance->logger, "group_checker",
group_checker_client, NULL,
"deallocating obsolete group_checker");
od_client_free(group_checker_client);
od_group_free(group);
Expand All @@ -345,15 +367,16 @@ void od_rules_group_checker_run(void *arg)
}

od_retcode_t od_rules_groups_checkers_run(od_logger_t *logger,
od_rules_t *rules)
od_rules_t *rules)
{
od_list_t *i;
od_list_foreach(&rules->rules, i)
{
od_rule_t *rule;
rule = od_container_of(i, od_rule_t, link);
if (rule->group) {
od_group_checker_run_args *args = malloc(sizeof(od_group_checker_run_args));
od_group_checker_run_args *args =
malloc(sizeof(od_group_checker_run_args));
args->rules = rules;
args->rule = rule;
args->i_copy = i->next;
Expand All @@ -362,8 +385,9 @@ od_retcode_t od_rules_groups_checkers_run(od_logger_t *logger,
coroutine_id = machine_coroutine_create(
od_rules_group_checker_run, args);
if (coroutine_id == INVALID_COROUTINE_ID) {
od_error(logger, "system", NULL, NULL,
"failed to start group_checker coroutine");
od_error(
logger, "system", NULL, NULL,
"failed to start group_checker coroutine");
return NOT_OK_RESPONSE;
}

Expand Down
2 changes: 1 addition & 1 deletion sources/rules.h
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,6 @@ od_rule_auth_t *od_rules_auth_add(od_rule_t *);
void od_rules_auth_free(od_rule_auth_t *);

od_retcode_t od_rules_groups_checkers_run(od_logger_t *logger,
od_rules_t *rules);
od_rules_t *rules);

#endif /* ODYSSEY_RULES_H */

0 comments on commit 716551e

Please sign in to comment.