-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.28 2002/04/07 15:42:12 jongfoster Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.29 2002/04/10 13:38:35 oes Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
*
* Revisions :
* $Log: cgisimple.c,v $
+ * Revision 1.29 2002/04/10 13:38:35 oes
+ * load_template signature changed
+ *
* Revision 1.28 2002/04/07 15:42:12 jongfoster
* Fixing send-banner?type=auto when the image-blocker is
* a redirect to send-banner
const struct map *parameters)
{
char *s = NULL;
- int i;
+ unsigned i;
FILE * fp;
char buf[BUFFER_SIZE];
int local_urls_read;
int local_urls_rejected;
#endif /* ndef FEATURE_STATISTICS */
+ struct file_list * fl;
+ struct url_actions * b;
jb_err err;
struct map *exports;
switch (*(lookup(parameters, "file")))
{
- case 'p':
- if (csp->actions_list)
+ case 'a':
+ if (!get_number_param(csp, parameters, "index", &i) && i < MAX_ACTION_FILES && csp->actions_list[i])
{
- filename = csp->actions_list->filename;
- file_description = "Actions List";
+ filename = csp->actions_list[i]->filename;
+ file_description = "Actions File";
}
break;
- case 'r':
+ case 'f':
if (csp->rlist)
{
filename = csp->rlist->filename;
- file_description = "Regex Filter List";
+ file_description = "Filter File";
}
break;
if (csp->tlist)
{
filename = csp->tlist->filename;
- file_description = "Trust List";
+ file_description = "Trust File";
}
break;
#endif /* def FEATURE_TRUST */
#else /* ndef FEATURE_STATISTICS */
err = err || map_block_killer(exports, "statistics");
#endif /* ndef FEATURE_STATISTICS */
+
+ /*
+ * List all action files in use, together with view and edit links,
+ * except for standard.action, which should only be viewable. (Not
+ * enforced in the editor itself)
+ * FIXME: Shouldn't include hardwired HTML here, use line template instead!
+ */
+ s = strdup("");
+ for (i = 0; i < MAX_ACTION_FILES; i++)
+ {
+ if (((fl = csp->actions_list[i]) != NULL) && ((b = fl->f) != NULL))
+ {
+ if (!err) err = string_append(&s, "<tr><td>");
+ if (!err) err = string_join(&s, html_encode(csp->actions_list[i]->filename));
+ snprintf(buf, 100, "</td><td class=\"cmd\"><a href=\"/show-status?file=actions&index=%d\">View</a> ", i);
+ if (!err) err = string_append(&s, buf);
+
+ if (NULL == strstr(csp->actions_list[i]->filename, "standard.action") && NULL != csp->config->actions_file_short[i])
+ {
+ snprintf(buf, 100, "<a href=\"/edit-actions-list?f=%s\">Edit</a>", csp->config->actions_file_short[i]);
+ if (!err) err = string_append(&s, buf);
+ }
- if (csp->actions_list)
+ if (!err) err = string_append(&s, "</td></tr>\n");
+ }
+ }
+ if (*s != '\0')
{
- if (!err) err = map(exports, "actions-filename", 1, html_encode(csp->actions_list->filename), 0);
+ if (!err) err = map(exports, "actions-filenames", 1, s, 0);
}
else
{
- if (!err) err = map(exports, "actions-filename", 1, "None specified", 1);
+ if (!err) err = map(exports, "actions-filenames", 1, "<tr><td>None specified</td></tr>", 1);
}
if (csp->rlist)
else
{
if (!err) err = map(exports, "re-filter-filename", 1, "None specified", 1);
+ if (!err) err = map_block_killer(exports, "have-filterfile");
}
#ifdef FEATURE_TRUST
else
{
if (!err) err = map(exports, "trust-filename", 1, "None specified", 1);
+ if (!err) err = map_block_killer(exports, "have-trustfile");
}
#else
if (!err) err = map_block_killer(exports, "trust-support");
struct url_actions *b;
struct http_request url_to_query[1];
struct current_action_spec action[1];
+ int i;
if (map(exports, "url", 1, html_encode(url_param), 0))
{
return JB_ERR_MEMORY;
}
- if (((fl = csp->actions_list) == NULL) || ((b = fl->f) == NULL))
- {
- err = map(exports, "matches", 1, "none" , 1);
- if (!err) err = map(exports, "final", 1, lookup(exports, "default"), 1);
-
- free_current_action(action);
- free(url_param);
-
- if (err)
- {
- free_map(exports);
- return JB_ERR_MEMORY;
- }
-
- return template_fill_for_cgi(csp, "show-url-info", exports, rsp);
- }
err = parse_http_url(url_param, url_to_query, csp);
matches = strdup("");
- for (b = b->next; (b != NULL) && (matches != NULL); b = b->next)
+ for (i = 0; i < MAX_ACTION_FILES; i++)
{
- if (url_match(b->url, url_to_query))
+ b = NULL;
+ hits = 1;
+ if ((fl = csp->actions_list[i]) != NULL)
{
- string_append(&matches, "<b>{");
- string_join (&matches, html_encode_and_free_original(
- actions_to_text(b->action)));
- string_append(&matches, " }</b><br>\n<code>");
- string_join (&matches, html_encode(b->url->spec));
- string_append(&matches, "</code><br>\n<br>\n");
-
- if (merge_current_action(action, b->action))
+ if ((b = fl->f) != NULL)
{
- freez(matches);
- free_http_request(url_to_query);
- free_current_action(action);
- free_map(exports);
- return JB_ERR_MEMORY;
+ string_append(&matches, "<b>--- <a href=\"edit-actions-list?f=");
+ string_join (&matches, html_encode(csp->config->actions_file_short[i]));
+ string_append(&matches, "\">File ");
+ string_join (&matches, html_encode(csp->config->actions_file_short[i]));
+ string_append(&matches, "</a> ---</b><br>\n<br>\n");
+
+ hits = 0;
+ b = b->next;
}
- hits++;
+ }
+
+ for (; (b != NULL) && (matches != NULL); b = b->next)
+ {
+ if (url_match(b->url, url_to_query))
+ {
+ string_append(&matches, "<b>{");
+ string_join (&matches, html_encode_and_free_original(
+ actions_to_text(b->action)));
+ string_append(&matches, " }</b><br>\n<code>");
+ string_join (&matches, html_encode(b->url->spec));
+ string_append(&matches, "</code><br>\n<br>\n");
+
+ if (merge_current_action(action, b->action))
+ {
+ freez(matches);
+ free_http_request(url_to_query);
+ free_current_action(action);
+ free_map(exports);
+ return JB_ERR_MEMORY;
+ }
+ hits++;
+ }
+ }
+
+ if (!hits)
+ {
+ string_append(&matches, "(no matches in this file)\n<br>\n");
}
}
return JB_ERR_MEMORY;
}
- if (!hits)
- {
- free(matches);
- matches = strdup("none");
- }
if (map(exports, "matches", 1, matches , 0))
{
free_current_action(action);