extern char *server_key;
extern char *server_cert;
extern struct _edg_wll_authz_policy authz_policy;
+extern int enable_lcas;
+extern char *policy_file;
int
edg_wll_get_fqans(edg_wll_Context ctx, struct vomsdata *voms_info,
const char *request = NULL;
int ret;
authz_action action;
+ struct _edg_wll_GssPrincipal_data princ;
- /* XXX make a real RSL ? */
+ /* by default the server is open to any authenticated client */
+ if (policy_file == NULL)
+ return 0;
switch (ev->any.type) {
case EDG_WLL_EVENT_REGJOB:
break;
}
- request = (char *) action2name(action);
+ princ.name = ctx->peerName;
+ princ.fqans = ctx->fqans;
+ ret = check_authz_policy(&ctx->authz_policy, &princ, action);
+ if (ret == 1)
+ return 0;
- ret = edg_wll_gss_get_client_pem(&ctx->connections->serverConnection->gss,
- server_cert, server_key,
- &pem_string);
- if (ret)
- return edg_wll_SetError(ctx, ret, "Failed to extract client's PEM string");
+ ret = EPERM;
+ if (enable_lcas) {
+ /* XXX make a real RSL ? */
+ request = (char *) action2name(action);
+
+ ret = edg_wll_gss_get_client_pem(&ctx->connections->serverConnection->gss,
+ server_cert, server_key,
+ &pem_string);
+ if (ret)
+ return edg_wll_SetError(ctx, ret, "Failed to extract client's PEM string");
+
+ ret = lcas_pem(pem_string, request);
+ free(pem_string);
+ }
- ret = lcas_pem(pem_string, request);
if (ret)
ret = edg_wll_SetError(ctx, EPERM, "Not allowed to log events here");
- free(pem_string);
-
return ret;
}