From: Jiří Filipovič Date: Mon, 27 Feb 2012 15:07:57 +0000 (+0000) Subject: more values in ?configuration X-Git-Tag: glite-px-myproxy-yaim_R_4_1_6_2~23 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=6e9d6a4bad4cbcaaddea9da13f3422cd55b1fca7;p=jra1mw.git more values in ?configuration --- diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index df30841..396a332 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -1068,10 +1068,14 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) ctx->count_statistics = count_statistics; + ctx->count_server_stats = count_server_stats; + ctx->serverIdentity = strdup(server_subject); ctx->rssTime = rss_time; + ctx->authz_policy_file = strdup(policy_file); + gettimeofday(&conn_start, 0); alen = sizeof(a); diff --git a/org.glite.lb.server/src/lb_proto.c b/org.glite.lb.server/src/lb_proto.c index 9cd46aa..dab6849 100644 --- a/org.glite.lb.server/src/lb_proto.c +++ b/org.glite.lb.server/src/lb_proto.c @@ -927,7 +927,7 @@ edg_wll_ErrorCode edg_wll_Proto(edg_wll_Context ctx, isadm = ctx->noAuth || edg_wll_amIroot(ctx->peerName, ctx->fqans,&ctx->authz_policy); // Filo, tuto muzes pouzit k rozhodnuti, co vsechno se bude na konfiguracni strance ukazovat - edg_wll_ConfigurationToText(ctx, &message); + edg_wll_ConfigurationToText(ctx, isadm, &message); edg_wll_ServerStatisticsIncrement(ctx, SERVER_STATS_TEXT_VIEWS); /* GET /?stats*/ } else if (extra_opt == HTTP_EXTRA_OPTION_STATS) { diff --git a/org.glite.lb.server/src/lb_text.c b/org.glite.lb.server/src/lb_text.c index f882a90..8fc970c 100644 --- a/org.glite.lb.server/src/lb_text.c +++ b/org.glite.lb.server/src/lb_text.c @@ -20,6 +20,8 @@ limitations under the License. #include "lb_text.h" #include "lb_proto.h" #include "cond_dump.h" +#include "server_state.h" +#include "authz_policy.h" #include "glite/lb/context-int.h" #include "glite/lb/xml_conversions.h" @@ -30,6 +32,10 @@ limitations under the License. #include #include #include +#include +#include +#include +#include #ifdef __GNUC__ #define UNUSED_VAR __attribute__((unused)) @@ -94,7 +100,7 @@ int edg_wll_QueryToText(edg_wll_Context ctx UNUSED_VAR, edg_wll_Event *eventsOut l = asprintf(&a,"%s=" type "", \ name, field); \ else \ - l = asprintf(&a,"%s=", name); \ + l = asprintf(&a,"%s=\n", name); \ b = realloc(b, sizeof(*b)*(pomL+l+1)); \ strcpy(b+pomL, a); \ pomL += l; \ @@ -273,12 +279,26 @@ int edg_wll_JobStatusToText(edg_wll_Context ctx UNUSED_VAR, edg_wll_JobStat stat return 0; } -int edg_wll_ConfigurationToText(edg_wll_Context ctx, char **message){ +int edg_wll_ConfigurationToText(edg_wll_Context ctx, int admin, char **message){ char *a = NULL, *b; int pomL = 0; int i; b = strdup(""); + TRS("server_version", "%s\n", VERSION); + + TRS("server_identity", "%s\n", ctx->serverIdentity); + + if (ctx->job_index) + for (i = 0; ctx->job_index[i]; i++){ + char *ch = edg_wll_QueryRecToColumn(ctx->job_index[i]); + if (i == 0) TRS("server_indices", "%s", ch) + else TRA("%s", ch); + free(ch); + } + if (i > 0) + TRA("%s", NULL); + if (ctx->msg_brokers) for (i = 0; ctx->msg_brokers[i]; i++){ if (i == 0) TRS("msg_brokers", "%s", ctx->msg_brokers[i]) @@ -293,7 +313,53 @@ int edg_wll_ConfigurationToText(edg_wll_Context ctx, char **message){ else TRA("%s", ctx->msg_prefixes[i]); if (i > 0) TRA("%s", NULL); - + + /* only for superusers */ + if (admin){ + char *dbname, *dbhost; + dbname = glite_lbu_DBGetName(ctx->dbctx); + dbhost = glite_lbu_DBGetHost(ctx->dbctx); + TRS("database_name", "%s\n", dbname); + TRS("database_host", "%s\n", dbhost); + + free(dbname); + free(dbhost); + + char *pf = NULL; + int fd; + if (ctx->authz_policy_file && (fd = open(ctx->authz_policy_file, O_RDONLY)) >= 0){ + off_t size = lseek(fd, 0, SEEK_END) - lseek(fd, 0, SEEK_SET); + char *pft = (char*)malloc(size); + read(fd, pft, size); + close(fd); + pf = escape_text(pft); + + } + TRS("authz_policy_file", "%s\n", pf); + if (pf) free(pf); + + edg_wll_authz_policy ap = edg_wll_get_server_policy(); + int i, j, k, l = 0; + for (i = 0; i < ap->actions_num; i++){ + if (ap->actions[i].id == ADMIN_ACCESS) + for (j = 0; j < ap->actions[i].rules_num; j++) + for (k = 0; k < ap->actions[i].rules[j].attrs_num; k++){ + if (l == 0) + TRS("admins", "\"%s\"", ap->actions[i].rules[j].attrs[k].value) + else + TRA("\"%s\"", ap->actions[i].rules[j].attrs[k].value); + l++; + } + } + if (l) TRA("%s", NULL); + + char *start = NULL, *end = NULL; + edg_wll_GetServerState(ctx, EDG_WLL_STATE_DUMP_START, &start); + edg_wll_GetServerState(ctx, EDG_WLL_STATE_DUMP_END, &end); + TRS("dump_start", "%s\n", start); + TRS("dump_end", "%s\n", end); + } + *message = b; return 0; diff --git a/org.glite.lb.server/src/lb_text.h b/org.glite.lb.server/src/lb_text.h index 6e70004..c6d5da6 100644 --- a/org.glite.lb.server/src/lb_text.h +++ b/org.glite.lb.server/src/lb_text.h @@ -28,7 +28,7 @@ int edg_wll_JobStatusToText(edg_wll_Context, edg_wll_JobStat, char **); int edg_wll_UserInfoToText(edg_wll_Context, edg_wlc_JobId *, char **); int edg_wll_UserNotifsToText(edg_wll_Context ctx, char **notifids, char **message); int edg_wll_NotificationToText(edg_wll_Context ctx, notifInfo *ni, char **message); -int edg_wll_ConfigurationToText(edg_wll_Context ctx, char **message); +int edg_wll_ConfigurationToText(edg_wll_Context ctx, int admin, char **message); char *edg_wll_ErrorToText(edg_wll_Context,int); #endif /* GLITE_LB_TEXT */