mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-08 17:13:56 +00:00
Implemented $attachements subsitution in 'execute' command
SVN revision: 1212
This commit is contained in:
parent
b30836bcd5
commit
12917f19ac
32
src/elogd.c
32
src/elogd.c
@ -6,6 +6,9 @@
|
|||||||
Contents: Web server program for Electronic Logbook ELOG
|
Contents: Web server program for Electronic Logbook ELOG
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.564 2005/02/16 14:50:40 ritt
|
||||||
|
Implemented $attachements subsitution in 'execute' command
|
||||||
|
|
||||||
Revision 1.563 2005/02/16 08:22:25 ritt
|
Revision 1.563 2005/02/16 08:22:25 ritt
|
||||||
Added web link to regular expressions
|
Added web link to regular expressions
|
||||||
|
|
||||||
@ -1175,7 +1178,8 @@ BOOL enum_user_line(LOGBOOK * lbs, int n, char *user);
|
|||||||
int get_user_line(char *logbook_name, char *user, char *password, char *full_name,
|
int get_user_line(char *logbook_name, char *user, char *password, char *full_name,
|
||||||
char *email, char *email_notify);
|
char *email, char *email_notify);
|
||||||
int strbreak(char *str, char list[][NAME_LENGTH], int size, char *brk);
|
int strbreak(char *str, char list[][NAME_LENGTH], int size, char *brk);
|
||||||
int execute_shell(LOGBOOK * lbs, int message_id, char attrib[MAX_N_ATTR][NAME_LENGTH], char *sh_cmd);
|
int execute_shell(LOGBOOK * lbs, int message_id, char attrib[MAX_N_ATTR][NAME_LENGTH],
|
||||||
|
char att_file[MAX_ATTACHMENTS][256], char *sh_cmd);
|
||||||
BOOL isparam(char *param);
|
BOOL isparam(char *param);
|
||||||
char *getparam(char *param);
|
char *getparam(char *param);
|
||||||
void write_logfile(LOGBOOK * lbs, const char *format, ...);
|
void write_logfile(LOGBOOK * lbs, const char *format, ...);
|
||||||
@ -5083,7 +5087,7 @@ INT el_delete_message(LOGBOOK * lbs, int message_id,
|
|||||||
|
|
||||||
/* execute shell if requested */
|
/* execute shell if requested */
|
||||||
if (getcfg(lbs->name, "Execute delete", str, sizeof(str)))
|
if (getcfg(lbs->name, "Execute delete", str, sizeof(str)))
|
||||||
execute_shell(lbs, message_id, NULL, str);
|
execute_shell(lbs, message_id, NULL, NULL, str);
|
||||||
|
|
||||||
return EL_SUCCESS;
|
return EL_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -16451,11 +16455,12 @@ int compose_email(LOGBOOK * lbs, char *mail_to, int message_id,
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
int execute_shell(LOGBOOK * lbs, int message_id, char attrib[MAX_N_ATTR][NAME_LENGTH], char *sh_cmd)
|
int execute_shell(LOGBOOK * lbs, int message_id, char attrib[MAX_N_ATTR][NAME_LENGTH],
|
||||||
|
char att_file[MAX_ATTACHMENTS][256], char *sh_cmd)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH];
|
char slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH];
|
||||||
char shell_cmd[1000], str[80];
|
char shell_cmd[10000], tail[1000], str[80], *p;
|
||||||
|
|
||||||
if (!enable_execute) {
|
if (!enable_execute) {
|
||||||
eprintf("Shell execution not enabled via -x flag.\n");
|
eprintf("Shell execution not enabled via -x flag.\n");
|
||||||
@ -16469,6 +16474,21 @@ int execute_shell(LOGBOOK * lbs, int message_id, char attrib[MAX_N_ATTR][NAME_LE
|
|||||||
add_subst_list(slist, svalue, "message id", str, &i);
|
add_subst_list(slist, svalue, "message id", str, &i);
|
||||||
strsubst(shell_cmd, slist, svalue, i);
|
strsubst(shell_cmd, slist, svalue, i);
|
||||||
|
|
||||||
|
if (att_file && stristr(shell_cmd, "$attachments")) {
|
||||||
|
/* substitute attachments */
|
||||||
|
p = stristr(shell_cmd, "$attachments");
|
||||||
|
strlcpy(tail, p + strlen("$attachments"), sizeof(tail));
|
||||||
|
for (i=0 ; i<MAX_ATTACHMENTS ; i++)
|
||||||
|
if (att_file[i][0] &&
|
||||||
|
strlen(shell_cmd)+strlen(lbs->data_dir)+strlen(att_file[i]) < sizeof(shell_cmd)+1) {
|
||||||
|
strcpy(p, lbs->data_dir);
|
||||||
|
strcat(p, att_file[i]);
|
||||||
|
strcat(p, " ");
|
||||||
|
p += strlen(p);
|
||||||
|
}
|
||||||
|
strlcat(shell_cmd, tail, sizeof(shell_cmd));
|
||||||
|
}
|
||||||
|
|
||||||
write_logfile(lbs, "SHELL \"%s\"", shell_cmd);
|
write_logfile(lbs, "SHELL \"%s\"", shell_cmd);
|
||||||
|
|
||||||
system(shell_cmd);
|
system(shell_cmd);
|
||||||
@ -17077,10 +17097,10 @@ void submit_elog(LOGBOOK * lbs)
|
|||||||
if (!atoi(getparam("shell_suppress"))) {
|
if (!atoi(getparam("shell_suppress"))) {
|
||||||
if (!*getparam("edit_id")) {
|
if (!*getparam("edit_id")) {
|
||||||
if (getcfg(lbs->name, "Execute new", str, sizeof(str)))
|
if (getcfg(lbs->name, "Execute new", str, sizeof(str)))
|
||||||
execute_shell(lbs, message_id, attrib, str);
|
execute_shell(lbs, message_id, attrib, att_file, str);
|
||||||
} else {
|
} else {
|
||||||
if (getcfg(lbs->name, "Execute edit", str, sizeof(str)))
|
if (getcfg(lbs->name, "Execute edit", str, sizeof(str)))
|
||||||
execute_shell(lbs, message_id, attrib, str);
|
execute_shell(lbs, message_id, attrib, att_file, str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user