mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-10 18:23:28 +00:00
Fixed broken inline images in email notification
SVN revision: 2237
This commit is contained in:
parent
a0cfa72afe
commit
bf0f190d13
537
src/elogd.c
537
src/elogd.c
@ -275,54 +275,54 @@ struct {
|
|||||||
} filetype[] = {
|
} filetype[] = {
|
||||||
|
|
||||||
{
|
{
|
||||||
".AI", "application/postscript"}, {
|
".AI", "application/postscript"}, {
|
||||||
".ASC", "text/plain"}, {
|
".ASC", "text/plain"}, {
|
||||||
".BZ2", "application/x-bzip2"}, {
|
".BZ2", "application/x-bzip2"}, {
|
||||||
".CFG", "text/plain"}, {
|
".CFG", "text/plain"}, {
|
||||||
".CHRT", "application/x-kchart"}, {
|
".CHRT", "application/x-kchart"}, {
|
||||||
".CONF", "text/plain"}, {
|
".CONF", "text/plain"}, {
|
||||||
".CSH", "application/x-csh"}, {
|
".CSH", "application/x-csh"}, {
|
||||||
".CSS", "text/css"}, {
|
".CSS", "text/css"}, {
|
||||||
".DOC", "application/msword"}, {
|
".DOC", "application/msword"}, {
|
||||||
".DVI", "application/x-dvi"}, {
|
".DVI", "application/x-dvi"}, {
|
||||||
".EPS", "application/postscript"}, {
|
".EPS", "application/postscript"}, {
|
||||||
".GIF", "image/gif"}, {
|
".GIF", "image/gif"}, {
|
||||||
".GZ", "application/x-gzip"}, {
|
".GZ", "application/x-gzip"}, {
|
||||||
".HTM", "text/html"}, {
|
".HTM", "text/html"}, {
|
||||||
".HTML", "text/html"}, {
|
".HTML", "text/html"}, {
|
||||||
".ICO", "image/x-icon"}, {
|
".ICO", "image/x-icon"}, {
|
||||||
".JPEG", "image/jpeg"}, {
|
".JPEG", "image/jpeg"}, {
|
||||||
".JPG", "image/jpeg"}, {
|
".JPG", "image/jpeg"}, {
|
||||||
".JS", "application/x-javascript"}, {
|
".JS", "application/x-javascript"}, {
|
||||||
".KPR", "application/x-kpresenter"}, {
|
".KPR", "application/x-kpresenter"}, {
|
||||||
".KSP", "application/x-kspread"}, {
|
".KSP", "application/x-kspread"}, {
|
||||||
".KWD", "application/x-kword"}, {
|
".KWD", "application/x-kword"}, {
|
||||||
".MP3", "audio/mpeg"}, {
|
".MP3", "audio/mpeg"}, {
|
||||||
".OGG", "application/x-ogg"}, {
|
".OGG", "application/x-ogg"}, {
|
||||||
".PDF", "application/pdf"}, {
|
".PDF", "application/pdf"}, {
|
||||||
".PNG", "image/png"}, {
|
".PNG", "image/png"}, {
|
||||||
".PS", "application/postscript"}, {
|
".PS", "application/postscript"}, {
|
||||||
".RAM", "audio/x-pn-realaudio"}, {
|
".RAM", "audio/x-pn-realaudio"}, {
|
||||||
".RM", "audio/x-pn-realaudio"}, {
|
".RM", "audio/x-pn-realaudio"}, {
|
||||||
".RM", "audio/x-pn-realaudio"}, {
|
".RM", "audio/x-pn-realaudio"}, {
|
||||||
".RM", "audio/x-pn-realaudio"}, {
|
".RM", "audio/x-pn-realaudio"}, {
|
||||||
".RPM", "application/x-rpm"}, {
|
".RPM", "application/x-rpm"}, {
|
||||||
".RTF", "application/rtf"}, {
|
".RTF", "application/rtf"}, {
|
||||||
".SH", "application/x-sh"}, {
|
".SH", "application/x-sh"}, {
|
||||||
".TAR", "application/x-tar"}, {
|
".TAR", "application/x-tar"}, {
|
||||||
".TCL", "application/x-tcl"}, {
|
".TCL", "application/x-tcl"}, {
|
||||||
".TEX", "application/x-tex"}, {
|
".TEX", "application/x-tex"}, {
|
||||||
".TGZ", "application/x-gzip"}, {
|
".TGZ", "application/x-gzip"}, {
|
||||||
".TIF", "image/tiff"}, {
|
".TIF", "image/tiff"}, {
|
||||||
".TIFF", "image/tiff"}, {
|
".TIFF", "image/tiff"}, {
|
||||||
".TXT", "text/plain"}, {
|
".TXT", "text/plain"}, {
|
||||||
".WAV", "audio/x-wav"}, {
|
".WAV", "audio/x-wav"}, {
|
||||||
".XLS", "application/x-msexcel"}, {
|
".XLS", "application/x-msexcel"}, {
|
||||||
".XML", "text/xml"}, {
|
".XML", "text/xml"}, {
|
||||||
".XSL", "text/xml"}, {
|
".XSL", "text/xml"}, {
|
||||||
".ZIP", "application/x-zip-compressed"}, {
|
".ZIP", "application/x-zip-compressed"}, {
|
||||||
|
|
||||||
/* Open XML file types */
|
/* Open XML file types */
|
||||||
".DOCM", "application/vnd.ms-word.document.macroEnabled.12"}, {
|
".DOCM", "application/vnd.ms-word.document.macroEnabled.12"}, {
|
||||||
".DOCX", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, {
|
".DOCX", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, {
|
||||||
".DOTM", "application/vnd.ms-word.template.macroEnabled.12"}, {
|
".DOTM", "application/vnd.ms-word.template.macroEnabled.12"}, {
|
||||||
@ -334,7 +334,7 @@ struct {
|
|||||||
".XLSB", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"}, {
|
".XLSB", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"}, {
|
||||||
".XLSM", "application/vnd.ms-excel.sheet.macroEnabled.12"}, {
|
".XLSM", "application/vnd.ms-excel.sheet.macroEnabled.12"}, {
|
||||||
".XLSX", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, {
|
".XLSX", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, {
|
||||||
".XPS", "application/vnd.ms-xpsdocument"}, {
|
".XPS", "application/vnd.ms-xpsdocument"}, {
|
||||||
|
|
||||||
"", ""},};
|
"", ""},};
|
||||||
|
|
||||||
@ -421,7 +421,7 @@ char *loc(char *orig);
|
|||||||
void strencode(char *text);
|
void strencode(char *text);
|
||||||
void strencode_nouml(char *text);
|
void strencode_nouml(char *text);
|
||||||
int scan_attributes(char *logbook);
|
int scan_attributes(char *logbook);
|
||||||
int is_inline_attachment(char *encoding, int message_id, char *text, int i, char *att);
|
int is_inline_attachment(LOGBOOK *lbs, char *encoding, int message_id, char *text, int i, char *att);
|
||||||
int setgroup(char *str);
|
int setgroup(char *str);
|
||||||
int setuser(char *str);
|
int setuser(char *str);
|
||||||
int setegroup(char *str);
|
int setegroup(char *str);
|
||||||
@ -3455,6 +3455,19 @@ void check_config()
|
|||||||
|
|
||||||
/*-------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void retrieve_domain(LOGBOOK * lbs, char *ret, int size)
|
||||||
|
{
|
||||||
|
char smtp_host[80];
|
||||||
|
|
||||||
|
strlcpy(ret, "tmp.org", size);
|
||||||
|
if (getcfg("global", "SMTP host", smtp_host, sizeof(smtp_host))) {
|
||||||
|
if (strchr(smtp_host, '.'))
|
||||||
|
strlcpy(ret, strchr(smtp_host, '.')+1, size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------*/
|
||||||
|
|
||||||
void retrieve_email_from(LOGBOOK * lbs, char *ret, char *ret_name, char attrib[MAX_N_ATTR][NAME_LENGTH])
|
void retrieve_email_from(LOGBOOK * lbs, char *ret, char *ret_name, char attrib[MAX_N_ATTR][NAME_LENGTH])
|
||||||
{
|
{
|
||||||
char email_from[256], email_from_name[256], str[256], *p, login_name[256];
|
char email_from[256], email_from_name[256], str[256], *p, login_name[256];
|
||||||
@ -5425,7 +5438,7 @@ int is_html(char *s)
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
int html_allowed(LOGBOOK *lbs)
|
int html_allowed(LOGBOOK * lbs)
|
||||||
{
|
{
|
||||||
char str[80];
|
char str[80];
|
||||||
|
|
||||||
@ -5607,7 +5620,7 @@ void insert_breaks(char *str, int n, int size)
|
|||||||
|
|
||||||
void replace_inline_img(LOGBOOK * lbs, char *str)
|
void replace_inline_img(LOGBOOK * lbs, char *str)
|
||||||
{
|
{
|
||||||
char *p, *pn, *pa, old[256], link[256], base_url[256];
|
char *p, *pn, *pa, old[256], link[256], base_url[256], domain[256];
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
p = str;
|
p = str;
|
||||||
@ -5622,7 +5635,8 @@ void replace_inline_img(LOGBOOK * lbs, char *str)
|
|||||||
pn++;
|
pn++;
|
||||||
if (*pn == '>')
|
if (*pn == '>')
|
||||||
pn++;
|
pn++;
|
||||||
sprintf(p, "<img src=\"cid:att%d@psi.ch\">", index);
|
retrieve_domain(lbs, domain, sizeof(domain));
|
||||||
|
sprintf(p, "<img border=\"0\" src=\"cid:att%d@%s\">", index, domain);
|
||||||
memmove(p + strlen(p), pn, strlen(pn) + 1);
|
memmove(p + strlen(p), pn, strlen(pn) + 1);
|
||||||
|
|
||||||
/* now change href to absolute link */
|
/* now change href to absolute link */
|
||||||
@ -5913,136 +5927,97 @@ typedef struct {
|
|||||||
PATTERN_LIST pattern_list[] = {
|
PATTERN_LIST pattern_list[] = {
|
||||||
|
|
||||||
/* smileys */
|
/* smileys */
|
||||||
{
|
{":))", "<img alt=\"Happy\" title=\"Happy\" src=\"%sicons/happy.png\">"},
|
||||||
":))", "<img alt=\"Happy\" title=\"Happy\" src=\"%sicons/happy.png\">"}, {
|
{":-))", "<img alt=\"Happy\" title=\"Happy\" src=\"%sicons/happy.png\">"},
|
||||||
":-))",
|
{":)", "<img alt=\"Smile\" title=\"Smile\" src=\"%sicons/smile.png\">"},
|
||||||
"<img alt=\"Happy\" title=\"Happy\" src=\"%sicons/happy.png\">"},
|
{":-)", "<img alt=\"Smile\" title=\"Smile\" src=\"%sicons/smile.png\">"},
|
||||||
{
|
{":(", "<img alt=\"Frown\" title=\"Frown\" src=\"%sicons/frown.png\">"},
|
||||||
":)", "<img alt=\"Smile\" title=\"Smile\" src=\"%sicons/smile.png\">"}, {
|
{":-(", "<img alt=\"Frown\" title=\"Frown\" src=\"%sicons/frown.png\">"},
|
||||||
":-)",
|
{";)", "<img alt=\"Wink\" title=\"Wink\" src=\"%sicons/wink.png\">"},
|
||||||
"<img alt=\"Smile\" title=\"Smile\" src=\"%sicons/smile.png\">"},
|
{";-)", "<img alt=\"Wink\" title=\"Wink\" src=\"%sicons/wink.png\">"},
|
||||||
{
|
{":d", "<img alt=\"Big grin\" title=\"Big grin\" src=\"%sicons/biggrin.png\">"},
|
||||||
":(", "<img alt=\"Frown\" title=\"Frown\" src=\"%sicons/frown.png\">"}, {
|
{"?-)", "<img alt=\"Confused\" title=\"Confused\" src=\"%sicons/confused.png\">"},
|
||||||
":-(",
|
{";(", "<img alt=\"Crying\" title=\"Crying\" src=\"%sicons/crying.png\">"},
|
||||||
"<img alt=\"Frown\" title=\"Frown\" src=\"%sicons/frown.png\">"},
|
{";-(", "<img alt=\"Crying\" title=\"Crying\" src=\"%sicons/crying.png\">"},
|
||||||
{
|
{":]", "<img alt=\"Pleased\" title=\"Pleased\" src=\"%sicons/pleased.png\">"},
|
||||||
";)", "<img alt=\"Wink\" title=\"Wink\" src=\"%sicons/wink.png\">"}, {
|
{":-]", "<img alt=\"Pleased\" title=\"Pleased\" src=\"%sicons/pleased.png\">"},
|
||||||
";-)",
|
{":o", "<img alt=\"Yawn\" title=\"Yawn\" src=\"%sicons/yawn.png\">"},
|
||||||
"<img alt=\"Wink\" title=\"Wink\" src=\"%sicons/wink.png\">"},
|
{":-o", "<img alt=\"Yawn\" title=\"Yawn\" src=\"%sicons/yawn.png\">"},
|
||||||
{
|
{"8-)", "<img alt=\"Cool\" title=\"Cool\" src=\"%sicons/cool.png\">"},
|
||||||
":d", "<img alt=\"Big grin\" title=\"Big grin\" src=\"%sicons/biggrin.png\">"}, {
|
{"8o", "<img alt=\"Astonished\" title=\"Astonished\" src=\"%sicons/astonished.png\">"},
|
||||||
"?-)",
|
{"x-(", "<img alt=\"Mad\" title=\"Mad\" src=\"%sicons/mad.png\">"},
|
||||||
"<img alt=\"Confused\" title=\"Confused\" src=\"%sicons/confused.png\">"},
|
{":p", "<img alt=\"Tongue\" title=\"Tongue\" src=\"%sicons/tongue.png\">"},
|
||||||
{
|
{":-p", "<img alt=\"Tongue\" title=\"Tongue\" src=\"%sicons/tongue.png\">"},
|
||||||
";(", "<img alt=\"Crying\" title=\"Crying\" src=\"%sicons/crying.png\">"}, {
|
|
||||||
";-(",
|
|
||||||
"<img alt=\"Crying\" title=\"Crying\" src=\"%sicons/crying.png\">"},
|
|
||||||
{
|
|
||||||
":]", "<img alt=\"Pleased\" title=\"Pleased\" src=\"%sicons/pleased.png\">"}, {
|
|
||||||
":-]",
|
|
||||||
"<img alt=\"Pleased\" title=\"Pleased\" src=\"%sicons/pleased.png\">"},
|
|
||||||
{
|
|
||||||
":o", "<img alt=\"Yawn\" title=\"Yawn\" src=\"%sicons/yawn.png\">"}, {
|
|
||||||
":-o",
|
|
||||||
"<img alt=\"Yawn\" title=\"Yawn\" src=\"%sicons/yawn.png\">"},
|
|
||||||
{
|
|
||||||
"8-)", "<img alt=\"Cool\" title=\"Cool\" src=\"%sicons/cool.png\">"}, {
|
|
||||||
"8o",
|
|
||||||
"<img alt=\"Astonished\" title=\"Astonished\" src=\"%sicons/astonished.png\">"},
|
|
||||||
{
|
|
||||||
"x-(", "<img alt=\"Mad\" title=\"Mad\" src=\"%sicons/mad.png\">"}, {
|
|
||||||
":p",
|
|
||||||
"<img alt=\"Tongue\" title=\"Tongue\" src=\"%sicons/tongue.png\">"},
|
|
||||||
{
|
|
||||||
":-p", "<img alt=\"Tongue\" title=\"Tongue\" src=\"%sicons/tongue.png\">"},
|
|
||||||
/* formatting */
|
/* formatting */
|
||||||
{
|
{"[b]", "<b>"},
|
||||||
"[b]", "<b>"}, {
|
{"[/b]", "</b>"},
|
||||||
"[/b]", "</b>"}, {
|
{"[u]", "<u>"},
|
||||||
"[u]", "<u>"}, {
|
{"[/u]", "</u>"},
|
||||||
"[/u]", "</u>"}, {
|
{"[i]", "<i>"},
|
||||||
"[i]", "<i>"}, {
|
{"[/i]", "</i>"},
|
||||||
"[/i]", "</i>"}, {
|
{"[center]", "<center>"},
|
||||||
"[center]",
|
{"[/center]", "</center>"},
|
||||||
"<center>"},
|
{"[color=", "<font color=\"%s\">"},
|
||||||
{
|
{"[/color]", "</font>"},
|
||||||
"[/center]", "</center>"}, {
|
{"[size=", "<font size=\"%s\">"},
|
||||||
"[color=", "<font color=\"%s\">"}, {
|
{"[/size]", "</font>"},
|
||||||
"[/color]", "</font>"}, {
|
{"[font=", "<font face=\"%s\">"},
|
||||||
"[size=",
|
{"[/font]", "</font>"},
|
||||||
"<font size=\"%s\">"},
|
{"\r\n[code]", "<pre>"},
|
||||||
{
|
{"[code]", "<pre>"},
|
||||||
"[/size]", "</font>"}, {
|
{"[/code]\r\n", "</pre>"},
|
||||||
"[font=", "<font face=\"%s\">"}, {
|
{"[/code]", "</pre>"},
|
||||||
"[/font]", "</font>"}, {
|
{"\r\n[code1]", "<pre>"},
|
||||||
"\r\n[code]", "<pre>"}, {
|
{"[code1]", "<pre>"},
|
||||||
"[code]",
|
{"[/code1]\r\n","</pre>"},
|
||||||
"<pre>"},
|
{"[/code1]", "</pre>"},
|
||||||
{
|
|
||||||
"[/code]\r\n", "</pre>"}, {
|
|
||||||
"[/code]", "</pre>"}, {
|
|
||||||
"\r\n[code1]", "<pre>"}, {
|
|
||||||
"[code1]", "<pre>"}, {
|
|
||||||
"[/code1]\r\n",
|
|
||||||
"</pre>"},
|
|
||||||
{
|
|
||||||
"[/code1]", "</pre>"},
|
|
||||||
/* lists */
|
/* lists */
|
||||||
{
|
{"[list]\r", "<ul>"},
|
||||||
"[list]\r", "<ul>"}, {
|
{"[list]", "<ul>"},
|
||||||
"[list]", "<ul>"}, {
|
{"[*]", "<li>"},
|
||||||
"[*]", "<li>"}, {
|
{"[/list]\r", "</#>"}, // either </ul> or </ol>
|
||||||
"[/list]\r", "</#>"}, // either </ul> or </ol>
|
{"[/list]", "</#>"},
|
||||||
{
|
{"[list=", "<ol type=\"%s\">"},
|
||||||
"[/list]", "</#>"}, {
|
|
||||||
"[list=", "<ol type=\"%s\">"},
|
|
||||||
/* headings */
|
/* headings */
|
||||||
{
|
{"[h1]", "<h1>"},
|
||||||
"[h1]", "<h1>"}, {
|
{"[/h1]", "</h1>"},
|
||||||
"[/h1]", "</h1>"}, {
|
{"[h2]", "<h2>"},
|
||||||
"[h2]", "<h2>"}, {
|
{"[/h2]", "</h2>"},
|
||||||
"[/h2]", "</h2>"}, {
|
{"[h3]", "<h3>"},
|
||||||
"[h3]", "<h3>"}, {
|
{"[/h3]", "</h3>"},
|
||||||
"[/h3]",
|
|
||||||
"</h3>"},
|
|
||||||
/* URLs */
|
/* URLs */
|
||||||
{
|
{"[url=", "<a href=\"%#\">%s</a>"},
|
||||||
"[url=", "<a href=\"%#\">%s</a>"}, {
|
{"[url]", "<a href=\"%#\">%s</a>"},
|
||||||
"[url]", "<a href=\"%#\">%s</a>"}, {
|
{"[/url]", ""},
|
||||||
"[/url]", ""}, {
|
{"[email]", "<a href=\"mailto:%#\">%s</a>"},
|
||||||
"[email]",
|
{"[/email]", ""},
|
||||||
"<a href=\"mailto:%#\">%s</a>"},
|
{"[img]", "<a href=\"%#\"><img border=0 src=\"%#?thumb=1\"></a>"},
|
||||||
{
|
{"[/img]", ""},
|
||||||
"[/email]", ""}, {
|
|
||||||
"[img]", "<a href=\"%#\"><img border=0 src=\"%#?thumb=1\"></a>"}, {
|
|
||||||
"[/img]", ""},
|
|
||||||
/* quote */
|
/* quote */
|
||||||
{
|
{"[quote=", "<br /><table class=\"quotetable\" align=\"center\" cellspacing=\"1\"><tr><td class=\"quotetitle\">%s:</td></tr><tr><td class=\"quote\">"},
|
||||||
"[quote=",
|
{"[quote]", "<br /><table class=\"quotetable\" align=\"center\" cellspacing=\"1\"><tr><td class=\"quotetitle\">%s:</td></tr><tr><td class=\"quote\">"},
|
||||||
"<br /><table class=\"quotetable\" align=\"center\" cellspacing=\"1\"><tr><td class=\"quotetitle\">%s:</td></tr><tr><td class=\"quote\">"},
|
{"[/quote]\r", "</td></tr></table><br />\r\n"},
|
||||||
{
|
{"[/quote]", "</td></tr></table>\r\n"},
|
||||||
"[quote]",
|
|
||||||
"<br /><table class=\"quotetable\" align=\"center\" cellspacing=\"1\"><tr><td class=\"quotetitle\">%s:</td></tr><tr><td class=\"quote\">"},
|
|
||||||
{
|
|
||||||
"[/quote]\r", "</td></tr></table><br />\r\n"}, {
|
|
||||||
"[/quote]", "</td></tr></table>\r\n"},
|
|
||||||
/* table */
|
/* table */
|
||||||
{
|
{"[table]", "<table><tr><td>"},
|
||||||
"[table]", "<table><tr><td>"}, {
|
{"[table ", "<table %s><tr><td>"},
|
||||||
"[table ", "<table %s><tr><td>"}, {
|
{"|-", "</td></tr><tr><td>"},
|
||||||
"|-", "</td></tr><tr><td>"}, {
|
{"|", "</td><td>"},
|
||||||
"|",
|
{"[/table]", "</td></tr></table>"},
|
||||||
"</td><td>"},
|
|
||||||
{
|
|
||||||
"[/table]", "</td></tr></table>"},
|
|
||||||
/* horizontal line */
|
/* horizontal line */
|
||||||
{
|
{"[line]", "<hr />"},
|
||||||
"[line]", "<hr />"},
|
|
||||||
/* anchor */
|
/* anchor */
|
||||||
{
|
{"[anchor]", "<a name=\"%#\">"},
|
||||||
"[anchor]", "<a name=\"%#\">"}, {
|
{"[/anchor]", "</a>"},
|
||||||
"[/anchor]", "</a>"}, {
|
{"", ""}
|
||||||
"", ""}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
char
|
char
|
||||||
@ -6053,7 +6028,7 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str)
|
|||||||
{
|
{
|
||||||
int i, j, k, l, m, elcode_disabled, elcode_disabled1, escape_char, ordered_list, substituted, inside_table;
|
int i, j, k, l, m, elcode_disabled, elcode_disabled1, escape_char, ordered_list, substituted, inside_table;
|
||||||
char *p, *pd, link[1000], link_text[1000], tmp[1000], attrib[1000], hattrib[1000], value[1000],
|
char *p, *pd, link[1000], link_text[1000], tmp[1000], attrib[1000], hattrib[1000], value[1000],
|
||||||
subst[1000], base_url[256], param[256], *lstr;
|
subst[1000], base_url[256], param[256], *lstr, domain[256];
|
||||||
|
|
||||||
if (strlen_retbuf + (int) (2 * strlen(str) + 1000) >= return_buffer_size) {
|
if (strlen_retbuf + (int) (2 * strlen(str) + 1000) >= return_buffer_size) {
|
||||||
return_buffer = xrealloc(return_buffer, return_buffer_size + 100000);
|
return_buffer = xrealloc(return_buffer, return_buffer_size + 100000);
|
||||||
@ -6296,15 +6271,8 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str)
|
|||||||
/* replace elog:x/x for images */
|
/* replace elog:x/x for images */
|
||||||
if (strnieq(attrib, "elog:", 5)) {
|
if (strnieq(attrib, "elog:", 5)) {
|
||||||
if (email_notify) {
|
if (email_notify) {
|
||||||
retrieve_email_from(lbs, link, NULL, NULL);
|
retrieve_domain(lbs, domain, sizeof(domain));
|
||||||
p = strchr(attrib, '/');
|
sprintf(hattrib, "cid:att%d@%s", m, domain);
|
||||||
if (p)
|
|
||||||
m = atoi(p + 1) - 1;
|
|
||||||
if (strchr(link, '@'))
|
|
||||||
p = strchr(link, '@') + 1;
|
|
||||||
else
|
|
||||||
p = link;
|
|
||||||
sprintf(hattrib, "cid:att%d@%s", m, p);
|
|
||||||
} else {
|
} else {
|
||||||
if (email_notify)
|
if (email_notify)
|
||||||
compose_base_url(lbs, hattrib, sizeof(hattrib), TRUE);
|
compose_base_url(lbs, hattrib, sizeof(hattrib), TRUE);
|
||||||
@ -6335,6 +6303,8 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
strlcpy(subst, pattern_list[l].subst, sizeof(subst));
|
strlcpy(subst, pattern_list[l].subst, sizeof(subst));
|
||||||
|
if (email_notify && stristr(subst, "?thumb=1"))
|
||||||
|
strlcpy(subst, "<a href=\"%#\"><img border=0 src=\"%#\"></a>", sizeof(subst));
|
||||||
strsubst(subst, sizeof(subst), "%#", hattrib);
|
strsubst(subst, sizeof(subst), "%#", hattrib);
|
||||||
sprintf(return_buffer + j, subst, attrib);
|
sprintf(return_buffer + j, subst, attrib);
|
||||||
j += strlen(return_buffer + j);
|
j += strlen(return_buffer + j);
|
||||||
@ -6777,8 +6747,7 @@ void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify
|
|||||||
|
|
||||||
void set_location(LOGBOOK * lbs, char *rp)
|
void set_location(LOGBOOK * lbs, char *rp)
|
||||||
{
|
{
|
||||||
char str[NAME_LENGTH], group[NAME_LENGTH], list[NAME_LENGTH], *p,
|
char str[NAME_LENGTH], group[NAME_LENGTH], list[NAME_LENGTH], *p, rel_path[NAME_LENGTH];
|
||||||
rel_path[NAME_LENGTH];
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* remove any CR/LF from path */
|
/* remove any CR/LF from path */
|
||||||
@ -9220,8 +9189,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
|
|||||||
|
|
||||||
/* get encoding */
|
/* get encoding */
|
||||||
strlcpy(encoding, isparam("encoding") ? getparam("encoding") : "", sizeof(encoding));
|
strlcpy(encoding, isparam("encoding") ? getparam("encoding") : "", sizeof(encoding));
|
||||||
if (!strieq(encoding, "plain") && !strieq(encoding, "ELCode") &&
|
if (!strieq(encoding, "plain") && !strieq(encoding, "ELCode") && !strieq(encoding, "HTML"))
|
||||||
!strieq(encoding, "HTML"))
|
|
||||||
strcpy(encoding, "plain");
|
strcpy(encoding, "plain");
|
||||||
} else {
|
} else {
|
||||||
if (message_id) {
|
if (message_id) {
|
||||||
@ -10130,9 +10098,9 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
|
|||||||
rsprintf("</td>\n");
|
rsprintf("</td>\n");
|
||||||
|
|
||||||
/* if attribute cannot be changed, just display text */
|
/* if attribute cannot be changed, just display text */
|
||||||
if ((attr_flags[index] & AF_LOCKED) ||
|
if ((attr_flags[index] & AF_LOCKED) ||
|
||||||
(message_id && bedit && (attr_flags[index] & AF_FIXED_EDIT)) ||
|
(message_id && bedit && (attr_flags[index] & AF_FIXED_EDIT)) ||
|
||||||
(message_id && !bedit && (attr_flags[index] & AF_FIXED_REPLY))) {
|
(message_id && !bedit && (attr_flags[index] & AF_FIXED_REPLY))) {
|
||||||
|
|
||||||
if (attr_flags[index] & AF_DATE) {
|
if (attr_flags[index] & AF_DATE) {
|
||||||
|
|
||||||
@ -16740,12 +16708,13 @@ void synchronize(LOGBOOK * lbs, int mode)
|
|||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, int expand, int level,
|
void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, int expand, int level,
|
||||||
BOOL printable, int n_line, int show_attachments, int show_att_column,
|
BOOL printable, int n_line, int show_attachments, int show_att_column,
|
||||||
char *date, char *in_reply_to, char *reply_to, int n_attr_disp, char disp_attr[MAX_N_ATTR + 4][NAME_LENGTH],
|
char *date, char *in_reply_to, char *reply_to, int n_attr_disp,
|
||||||
BOOL disp_attr_link[MAX_N_ATTR + 4], char attrib[MAX_N_ATTR][NAME_LENGTH], int n_attr,
|
char disp_attr[MAX_N_ATTR + 4][NAME_LENGTH], BOOL disp_attr_link[MAX_N_ATTR + 4],
|
||||||
char *text, BOOL show_text, char attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH],
|
char attrib[MAX_N_ATTR][NAME_LENGTH], int n_attr, char *text, BOOL show_text,
|
||||||
char *encoding, BOOL select, int *n_display, char *locked_by, int highlight,
|
char attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH], char *encoding, BOOL select,
|
||||||
regex_t * re_buf, int highlight_mid, int absolute_link)
|
int *n_display, char *locked_by, int highlight, regex_t * re_buf, int highlight_mid,
|
||||||
|
int absolute_link)
|
||||||
{
|
{
|
||||||
char str[NAME_LENGTH], ref[256], *nowrap, sclass[80], format[256], file_name[MAX_PATH_LENGTH], *slist,
|
char str[NAME_LENGTH], ref[256], *nowrap, sclass[80], format[256], file_name[MAX_PATH_LENGTH], *slist,
|
||||||
*svalue, comment[256];
|
*svalue, comment[256];
|
||||||
@ -17414,7 +17383,7 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, int exp
|
|||||||
if (show_attachments && attachment[index][0]) {
|
if (show_attachments && attachment[index][0]) {
|
||||||
|
|
||||||
/* check if attachment is inlined */
|
/* check if attachment is inlined */
|
||||||
if (is_inline_attachment(encoding, message_id, text, index, attachment[index]))
|
if (is_inline_attachment(lbs, encoding, message_id, text, index, attachment[index]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
strlcpy(str, attachment[index], sizeof(str));
|
strlcpy(str, attachment[index], sizeof(str));
|
||||||
@ -17592,9 +17561,10 @@ void display_reply(LOGBOOK * lbs, int message_id, int printable, int expand, int
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
display_line(lbs, message_id, 0, "threaded", expand, level, printable, n_line, FALSE, FALSE, date, in_reply_to, reply_to,
|
display_line(lbs, message_id, 0, "threaded", expand, level, printable, n_line, FALSE, FALSE, date,
|
||||||
n_attr_disp, disp_attr, NULL, (void *) attrib, lbs->n_attr, text, show_text,
|
in_reply_to, reply_to, n_attr_disp, disp_attr, NULL, (void *) attrib, lbs->n_attr, text,
|
||||||
NULL, encoding, 0, NULL, locked_by, highlight, &re_buf[0], highlight_mid, absolute_link);
|
show_text, NULL, encoding, 0, NULL, locked_by, highlight, &re_buf[0], highlight_mid,
|
||||||
|
absolute_link);
|
||||||
|
|
||||||
if (reply_to[0]) {
|
if (reply_to[0]) {
|
||||||
p = reply_to;
|
p = reply_to;
|
||||||
@ -17920,7 +17890,8 @@ BOOL is_command_allowed(LOGBOOK * lbs, char *command)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
/* exclude non-localized submit for elog */
|
/* exclude non-localized submit for elog */
|
||||||
else if (command[0] && strieq(command, "Submit") && (stristr(menu_str, "New,") || stristr(menu_str, "Edit"))) {
|
else if (command[0] && strieq(command, "Submit")
|
||||||
|
&& (stristr(menu_str, "New,") || stristr(menu_str, "Edit"))) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
/* exclude other non-localized commands */
|
/* exclude other non-localized commands */
|
||||||
@ -18834,7 +18805,7 @@ void show_rss_feed(LOGBOOK * lbs)
|
|||||||
|
|
||||||
text = xmalloc(TEXT_SIZE);
|
text = xmalloc(TEXT_SIZE);
|
||||||
message_id = el_search_message(lbs, EL_LAST, 0, FALSE);
|
message_id = el_search_message(lbs, EL_LAST, 0, FALSE);
|
||||||
for (index = 0; index < n && message_id ; index++) {
|
for (index = 0; index < n && message_id; index++) {
|
||||||
rsprintf("<item>\n");
|
rsprintf("<item>\n");
|
||||||
|
|
||||||
size = TEXT_SIZE;
|
size = TEXT_SIZE;
|
||||||
@ -20700,16 +20671,17 @@ void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL defa
|
|||||||
while (reply_to[0]) {
|
while (reply_to[0]) {
|
||||||
message_id = atoi(reply_to);
|
message_id = atoi(reply_to);
|
||||||
size = TEXT_SIZE;
|
size = TEXT_SIZE;
|
||||||
status = el_retrieve(msg_list[index].lbs, message_id, date, attr_list, attrib, lbs->n_attr, text,
|
status =
|
||||||
&size, in_reply_to, reply_to, attachment, encoding, locked_by);
|
el_retrieve(msg_list[index].lbs, message_id, date, attr_list, attrib, lbs->n_attr, text,
|
||||||
|
&size, in_reply_to, reply_to, attachment, encoding, locked_by);
|
||||||
if (status == SUCCESS)
|
if (status == SUCCESS)
|
||||||
level = 1;
|
level = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
display_line(msg_list[index].lbs, message_id, index, mode, expand, level, printable, n_line,
|
display_line(msg_list[index].lbs, message_id, index, mode, expand, level, printable, n_line,
|
||||||
show_attachments, show_att_column, date, in_reply_to, reply_to, n_attr_disp, disp_attr, disp_attr_link, attrib,
|
show_attachments, show_att_column, date, in_reply_to, reply_to, n_attr_disp, disp_attr,
|
||||||
lbs->n_attr, text, show_text, attachment, encoding,
|
disp_attr_link, attrib, lbs->n_attr, text, show_text, attachment, encoding,
|
||||||
isparam("select") ? atoi(getparam("select")) : 0, &n_display, locked_by, 0, re_buf,
|
isparam("select") ? atoi(getparam("select")) : 0, &n_display, locked_by, 0, re_buf,
|
||||||
page_mid, FALSE);
|
page_mid, FALSE);
|
||||||
|
|
||||||
@ -20819,8 +20791,8 @@ void show_elog_thread(LOGBOOK * lbs, int message_id, int absolute_links, int hig
|
|||||||
rsprintf("<tr><td><table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
|
rsprintf("<tr><td><table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
|
||||||
|
|
||||||
display_line(lbs, head_id, 0, "Threaded", 1, 0, FALSE, 0,
|
display_line(lbs, head_id, 0, "Threaded", 1, 0, FALSE, 0,
|
||||||
FALSE, FALSE, date, in_reply_to, reply_to, n_attr_disp, disp_attr, NULL, attrib, lbs->n_attr, text, FALSE,
|
FALSE, FALSE, date, in_reply_to, reply_to, n_attr_disp, disp_attr, NULL, attrib, lbs->n_attr,
|
||||||
attachment, encoding, 0, &n_display, locked_by, message_id, NULL, highlight_mid,
|
text, FALSE, attachment, encoding, 0, &n_display, locked_by, message_id, NULL, highlight_mid,
|
||||||
absolute_links);
|
absolute_links);
|
||||||
|
|
||||||
if (reply_to[0]) {
|
if (reply_to[0]) {
|
||||||
@ -20859,7 +20831,7 @@ void format_email_attachments(LOGBOOK * lbs, int message_id, int attachment_type
|
|||||||
char *multipart_boundary, int content_id)
|
char *multipart_boundary, int content_id)
|
||||||
{
|
{
|
||||||
int i, index, n_att, fh, n, is_inline, length;
|
int i, index, n_att, fh, n, is_inline, length;
|
||||||
char str[256], file_name[256], buffer[256], email_from[256], *p;
|
char str[256], file_name[256], buffer[256], domain[256];
|
||||||
|
|
||||||
/* count attachments */
|
/* count attachments */
|
||||||
for (n_att = 0; att_file[n_att][0] && n_att < MAX_ATTACHMENTS; n_att++);
|
for (n_att = 0; att_file[n_att][0] && n_att < MAX_ATTACHMENTS; n_att++);
|
||||||
@ -20869,8 +20841,8 @@ void format_email_attachments(LOGBOOK * lbs, int message_id, int attachment_type
|
|||||||
if (att_file[index][0] == 0)
|
if (att_file[index][0] == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
is_inline = is_inline_attachment(getparam("encoding"), message_id, getparam("text"), index,
|
is_inline = is_inline_attachment(lbs, getparam("encoding"), message_id,
|
||||||
att_file[index]);
|
getparam("text"), index, att_file[index]);
|
||||||
if (attachment_type == 1 && is_inline)
|
if (attachment_type == 1 && is_inline)
|
||||||
continue;
|
continue;
|
||||||
if (attachment_type == 2 && !is_inline)
|
if (attachment_type == 2 && !is_inline)
|
||||||
@ -20902,13 +20874,9 @@ void format_email_attachments(LOGBOOK * lbs, int message_id, int attachment_type
|
|||||||
strlcat(mail_text, "Content-Transfer-Encoding: BASE64\r\n", size);
|
strlcat(mail_text, "Content-Transfer-Encoding: BASE64\r\n", size);
|
||||||
|
|
||||||
if (content_id) {
|
if (content_id) {
|
||||||
retrieve_email_from(lbs, email_from, NULL, NULL);
|
retrieve_domain(lbs, domain, sizeof(domain));
|
||||||
if (strchr(email_from, '@'))
|
|
||||||
p = strchr(email_from, '@') + 1;
|
|
||||||
else
|
|
||||||
p = email_from;
|
|
||||||
snprintf(mail_text + strlen(mail_text), size - strlen(mail_text) - 1, "Content-ID: <att%d@%s>\r\n",
|
snprintf(mail_text + strlen(mail_text), size - strlen(mail_text) - 1, "Content-ID: <att%d@%s>\r\n",
|
||||||
index, p);
|
index, domain);
|
||||||
snprintf(mail_text + strlen(mail_text), size - strlen(mail_text) - 1,
|
snprintf(mail_text + strlen(mail_text), size - strlen(mail_text) - 1,
|
||||||
"Content-Disposition: inline; filename=\"%s\"\r\n\r\n", att_file[index] + 14);
|
"Content-Disposition: inline; filename=\"%s\"\r\n\r\n", att_file[index] + 14);
|
||||||
} else
|
} else
|
||||||
@ -21400,8 +21368,8 @@ int compose_email(LOGBOOK * lbs, char *rcpt_to, char *mail_to, int message_id,
|
|||||||
n_attachments = 0;
|
n_attachments = 0;
|
||||||
if (att_file)
|
if (att_file)
|
||||||
for (i = 0; att_file[i][0] && i < MAX_ATTACHMENTS; i++) {
|
for (i = 0; att_file[i][0] && i < MAX_ATTACHMENTS; i++) {
|
||||||
if ((mail_encoding & 6) == 0 || !is_inline_attachment(encoding, message_id, getparam("text"), i,
|
if ((mail_encoding & 6) == 0 || !is_inline_attachment(lbs, encoding, message_id,
|
||||||
att_file[i]))
|
getparam("text"), i, att_file[i]))
|
||||||
n_attachments++;
|
n_attachments++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21952,8 +21920,7 @@ void submit_elog(LOGBOOK * lbs)
|
|||||||
strlcpy(encoding, isparam("encoding") ? getparam("encoding") : "plain", sizeof(encoding));
|
strlcpy(encoding, isparam("encoding") ? getparam("encoding") : "plain", sizeof(encoding));
|
||||||
|
|
||||||
/* check for valid encoding */
|
/* check for valid encoding */
|
||||||
if (!strieq(encoding, "plain") && !strieq(encoding, "ELCode") &&
|
if (!strieq(encoding, "plain") && !strieq(encoding, "ELCode") && !strieq(encoding, "HTML"))
|
||||||
!strieq(encoding, "HTML"))
|
|
||||||
strcpy(encoding, "plain");
|
strcpy(encoding, "plain");
|
||||||
|
|
||||||
if (strieq(encoding, "plain") && (allowed_encoding & 1) == 0) {
|
if (strieq(encoding, "plain") && (allowed_encoding & 1) == 0) {
|
||||||
@ -22594,15 +22561,14 @@ void submit_elog_mirror(LOGBOOK * lbs)
|
|||||||
void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_id)
|
void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_id)
|
||||||
{
|
{
|
||||||
int size, i, n, n_done, n_done_reply, n_reply, index, status, fh, source_id, message_id,
|
int size, i, n, n_done, n_done_reply, n_reply, index, status, fh, source_id, message_id,
|
||||||
thumb_status, next_id = 0;
|
thumb_status, next_id = 0;
|
||||||
char str[256], str2[256], file_name[MAX_PATH_LENGTH], thumb_name[MAX_PATH_LENGTH],
|
char str[256], str2[256], file_name[MAX_PATH_LENGTH], thumb_name[MAX_PATH_LENGTH],
|
||||||
*attrib, date[80], *text, msg_str[32], in_reply_to[80],
|
*attrib, date[80], *text, msg_str[32], in_reply_to[80],
|
||||||
reply_to[MAX_REPLY_TO * 10], *attachment,
|
reply_to[MAX_REPLY_TO * 10], *attachment, encoding[80], locked_by[256], *buffer, *list;
|
||||||
encoding[80], locked_by[256], *buffer, *list;
|
|
||||||
LOGBOOK *lbs_dest;
|
LOGBOOK *lbs_dest;
|
||||||
BOOL bedit;
|
BOOL bedit;
|
||||||
|
|
||||||
attachment= xmalloc(MAX_ATTACHMENTS * MAX_PATH_LENGTH);
|
attachment = xmalloc(MAX_ATTACHMENTS * MAX_PATH_LENGTH);
|
||||||
attrib = xmalloc(MAX_N_ATTR * NAME_LENGTH);
|
attrib = xmalloc(MAX_N_ATTR * NAME_LENGTH);
|
||||||
list = xmalloc(MAX_N_ATTR * NAME_LENGTH);
|
list = xmalloc(MAX_N_ATTR * NAME_LENGTH);
|
||||||
text = xmalloc(TEXT_SIZE);
|
text = xmalloc(TEXT_SIZE);
|
||||||
@ -22633,8 +22599,9 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
|
|
||||||
/* get message */
|
/* get message */
|
||||||
size = TEXT_SIZE;
|
size = TEXT_SIZE;
|
||||||
status = el_retrieve(lbs, source_id, date, attr_list, (void *) attrib, lbs->n_attr, text, &size, in_reply_to,
|
status =
|
||||||
reply_to, (void *) attachment, encoding, locked_by);
|
el_retrieve(lbs, source_id, date, attr_list, (void *) attrib, lbs->n_attr, text, &size, in_reply_to,
|
||||||
|
reply_to, (void *) attachment, encoding, locked_by);
|
||||||
|
|
||||||
if (status != EL_SUCCESS) {
|
if (status != EL_SUCCESS) {
|
||||||
sprintf(msg_str, "%d", source_id);
|
sprintf(msg_str, "%d", source_id);
|
||||||
@ -22670,9 +22637,9 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
|
|
||||||
/* read attachments */
|
/* read attachments */
|
||||||
for (i = 0; i < MAX_ATTACHMENTS; i++)
|
for (i = 0; i < MAX_ATTACHMENTS; i++)
|
||||||
if (attachment[i*MAX_PATH_LENGTH]) {
|
if (attachment[i * MAX_PATH_LENGTH]) {
|
||||||
strlcpy(file_name, lbs->data_dir, sizeof(file_name));
|
strlcpy(file_name, lbs->data_dir, sizeof(file_name));
|
||||||
strlcat(file_name, attachment+i*MAX_PATH_LENGTH, sizeof(file_name));
|
strlcat(file_name, attachment + i * MAX_PATH_LENGTH, sizeof(file_name));
|
||||||
|
|
||||||
fh = open(file_name, O_RDONLY | O_BINARY);
|
fh = open(file_name, O_RDONLY | O_BINARY);
|
||||||
if (fh > 0) {
|
if (fh > 0) {
|
||||||
@ -22684,7 +22651,7 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
close(fh);
|
close(fh);
|
||||||
|
|
||||||
/* keep original file name for inline references */
|
/* keep original file name for inline references */
|
||||||
strlcpy(file_name, attachment+i*MAX_PATH_LENGTH, NAME_LENGTH);
|
strlcpy(file_name, attachment + i * MAX_PATH_LENGTH, NAME_LENGTH);
|
||||||
|
|
||||||
el_submit_attachment(lbs_dest, file_name, buffer, size, NULL);
|
el_submit_attachment(lbs_dest, file_name, buffer, size, NULL);
|
||||||
|
|
||||||
@ -22692,11 +22659,11 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
xfree(buffer);
|
xfree(buffer);
|
||||||
} else
|
} else
|
||||||
/* attachment is invalid */
|
/* attachment is invalid */
|
||||||
attachment[i*MAX_PATH_LENGTH] = 0;
|
attachment[i * MAX_PATH_LENGTH] = 0;
|
||||||
|
|
||||||
/* check for thumbnail */
|
/* check for thumbnail */
|
||||||
strlcpy(file_name, lbs->data_dir, sizeof(file_name));
|
strlcpy(file_name, lbs->data_dir, sizeof(file_name));
|
||||||
strlcat(file_name, attachment+i*MAX_PATH_LENGTH, sizeof(file_name));
|
strlcat(file_name, attachment + i * MAX_PATH_LENGTH, sizeof(file_name));
|
||||||
thumb_status = get_thumb_name(file_name, thumb_name, sizeof(thumb_name), 0);
|
thumb_status = get_thumb_name(file_name, thumb_name, sizeof(thumb_name), 0);
|
||||||
|
|
||||||
if (thumb_status == 1) {
|
if (thumb_status == 1) {
|
||||||
@ -22711,7 +22678,7 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
|
|
||||||
/* keep original file name for inline references */
|
/* keep original file name for inline references */
|
||||||
if (strrchr(thumb_name, '\\'))
|
if (strrchr(thumb_name, '\\'))
|
||||||
strlcpy(str, strrchr(thumb_name, '\\')+1, sizeof(str));
|
strlcpy(str, strrchr(thumb_name, '\\') + 1, sizeof(str));
|
||||||
else
|
else
|
||||||
strlcpy(str, thumb_name, sizeof(str));
|
strlcpy(str, thumb_name, sizeof(str));
|
||||||
|
|
||||||
@ -22720,7 +22687,8 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
if (buffer)
|
if (buffer)
|
||||||
xfree(buffer);
|
xfree(buffer);
|
||||||
}
|
}
|
||||||
} if (thumb_status == 2) {
|
}
|
||||||
|
if (thumb_status == 2) {
|
||||||
for (i = 0;; i++) {
|
for (i = 0;; i++) {
|
||||||
get_thumb_name(file_name, thumb_name, sizeof(thumb_name), i);
|
get_thumb_name(file_name, thumb_name, sizeof(thumb_name), i);
|
||||||
if (thumb_name[0]) {
|
if (thumb_name[0]) {
|
||||||
@ -22735,7 +22703,7 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
|
|
||||||
/* keep original file name for inline references */
|
/* keep original file name for inline references */
|
||||||
if (strrchr(thumb_name, '\\'))
|
if (strrchr(thumb_name, '\\'))
|
||||||
strlcpy(str, strrchr(thumb_name, '\\')+1, sizeof(str));
|
strlcpy(str, strrchr(thumb_name, '\\') + 1, sizeof(str));
|
||||||
else
|
else
|
||||||
strlcpy(str, thumb_name, sizeof(str));
|
strlcpy(str, thumb_name, sizeof(str));
|
||||||
|
|
||||||
@ -22773,7 +22741,8 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
message_id = source_id;
|
message_id = source_id;
|
||||||
|
|
||||||
/* test if entry exists already */
|
/* test if entry exists already */
|
||||||
status = el_retrieve(lbs_dest, message_id, NULL, NULL, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL);
|
status =
|
||||||
|
el_retrieve(lbs_dest, message_id, NULL, NULL, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL);
|
||||||
bedit = (status == EL_SUCCESS);
|
bedit = (status == EL_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22781,16 +22750,18 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
the source logbook even if the destination has a differnt number of attributes */
|
the source logbook even if the destination has a differnt number of attributes */
|
||||||
|
|
||||||
if (getcfg(lbs->name, "Preserve IDs", str, sizeof(str)) && atoi(str) == 1)
|
if (getcfg(lbs->name, "Preserve IDs", str, sizeof(str)) && atoi(str) == 1)
|
||||||
message_id = el_submit(lbs_dest, message_id, bedit, date, attr_list, (void *) attrib, lbs->n_attr, text, in_reply_to, reply_to,
|
message_id =
|
||||||
encoding, (void *) attachment, FALSE, NULL);
|
el_submit(lbs_dest, message_id, bedit, date, attr_list, (void *) attrib, lbs->n_attr, text,
|
||||||
|
in_reply_to, reply_to, encoding, (void *) attachment, FALSE, NULL);
|
||||||
else {
|
else {
|
||||||
/* if called recursively (for threads), put in correct in_reply_to */
|
/* if called recursively (for threads), put in correct in_reply_to */
|
||||||
str[0] = 0;
|
str[0] = 0;
|
||||||
if (orig_id)
|
if (orig_id)
|
||||||
sprintf(str, "%d", orig_id);
|
sprintf(str, "%d", orig_id);
|
||||||
|
|
||||||
message_id = el_submit(lbs_dest, message_id, bedit, date, attr_list, (void *) attrib, lbs->n_attr, text, str, "",
|
message_id =
|
||||||
encoding, (void *) attachment, TRUE, NULL);
|
el_submit(lbs_dest, message_id, bedit, date, attr_list, (void *) attrib, lbs->n_attr, text, str,
|
||||||
|
"", encoding, (void *) attachment, TRUE, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message_id <= 0) {
|
if (message_id <= 0) {
|
||||||
@ -22810,7 +22781,7 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
/* submit all replies */
|
/* submit all replies */
|
||||||
n_reply = strbreak(reply_to, (void *) list, MAX_N_ATTR, ",", FALSE);
|
n_reply = strbreak(reply_to, (void *) list, MAX_N_ATTR, ",", FALSE);
|
||||||
for (i = 0; i < n_reply; i++) {
|
for (i = 0; i < n_reply; i++) {
|
||||||
copy_to(lbs, atoi(list+i*NAME_LENGTH), dest_logbook, move, message_id);
|
copy_to(lbs, atoi(list + i * NAME_LENGTH), dest_logbook, move, message_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
n_done_reply += n_reply;
|
n_done_reply += n_reply;
|
||||||
@ -22847,9 +22818,9 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
int is_inline_attachment(char *encoding, int message_id, char *text, int i, char *att)
|
int is_inline_attachment(LOGBOOK *lbs, char *encoding, int message_id, char *text, int i, char *att)
|
||||||
{
|
{
|
||||||
char str[256], att_enc[256];
|
char str[256], att_enc[256], domain[256];
|
||||||
|
|
||||||
if (text == NULL)
|
if (text == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
@ -22865,7 +22836,8 @@ int is_inline_attachment(char *encoding, int message_id, char *text, int i, char
|
|||||||
att_enc[13] = '/';
|
att_enc[13] = '/';
|
||||||
if (stristr(text, att_enc))
|
if (stristr(text, att_enc))
|
||||||
return 1;
|
return 1;
|
||||||
sprintf(str, "cid:att%d@psi.ch", i);
|
retrieve_domain(lbs, domain, sizeof(domain));
|
||||||
|
sprintf(str, "cid:att%d@%s", i, domain);
|
||||||
if (stristr(text, str))
|
if (stristr(text, str))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -23089,7 +23061,7 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
|
|||||||
format[80], slist[MAX_N_ATTR + 10][NAME_LENGTH], file_name[MAX_PATH_LENGTH],
|
format[80], slist[MAX_N_ATTR + 10][NAME_LENGTH], file_name[MAX_PATH_LENGTH],
|
||||||
gattr[MAX_N_ATTR][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH], *p,
|
gattr[MAX_N_ATTR][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH], *p,
|
||||||
lbk_list[MAX_N_LIST][NAME_LENGTH], comment[256], class_name[80], class_value[80],
|
lbk_list[MAX_N_LIST][NAME_LENGTH], comment[256], class_name[80], class_value[80],
|
||||||
fl[8][NAME_LENGTH], list[MAX_N_ATTR][NAME_LENGTH], email_from[256];
|
fl[8][NAME_LENGTH], list[MAX_N_ATTR][NAME_LENGTH], domain[256];
|
||||||
FILE *f;
|
FILE *f;
|
||||||
BOOL first, show_text, display_inline, subtable, email;
|
BOOL first, show_text, display_inline, subtable, email;
|
||||||
struct tm *pts;
|
struct tm *pts;
|
||||||
@ -23840,7 +23812,7 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
|
|||||||
att_inline[i] = 0;
|
att_inline[i] = 0;
|
||||||
att_hide[i] = getcfg(lbs->name, "Show attachments", str, sizeof(str)) && atoi(str) == 0;
|
att_hide[i] = getcfg(lbs->name, "Show attachments", str, sizeof(str)) && atoi(str) == 0;
|
||||||
|
|
||||||
if (is_inline_attachment(encoding, message_id, text, i, attachment[i]))
|
if (is_inline_attachment(lbs, encoding, message_id, text, i, attachment[i]))
|
||||||
att_inline[i] = 1;
|
att_inline[i] = 1;
|
||||||
|
|
||||||
if (attachment[i][0])
|
if (attachment[i][0])
|
||||||
@ -23893,12 +23865,8 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
|
|||||||
strcpy(file_enc, attachment[index] + 14);
|
strcpy(file_enc, attachment[index] + 14);
|
||||||
url_encode(file_enc, sizeof(file_enc)); /* for file names with special characters like "+" */
|
url_encode(file_enc, sizeof(file_enc)); /* for file names with special characters like "+" */
|
||||||
if (email) {
|
if (email) {
|
||||||
retrieve_email_from(lbs, email_from, NULL, NULL);
|
retrieve_domain(lbs, domain, sizeof(domain));
|
||||||
if (strchr(email_from, '@'))
|
sprintf(ref, "cid:att%d@%s", index, domain);
|
||||||
p = strchr(email_from, '@') + 1;
|
|
||||||
else
|
|
||||||
p = email_from;
|
|
||||||
sprintf(ref, "cid:att%d@%s", index, p);
|
|
||||||
} else
|
} else
|
||||||
sprintf(ref, "%s/%s", str, file_enc);
|
sprintf(ref, "%s/%s", str, file_enc);
|
||||||
|
|
||||||
@ -25489,46 +25457,49 @@ void show_uploader_finished(LOGBOOK * lbs)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strlcpy(str, att, sizeof(str));
|
|
||||||
str[13] = 0;
|
|
||||||
strcpy(file_enc, att + 14);
|
|
||||||
url_encode(file_enc, sizeof(file_enc)); /* for file names with special characters like "+" */
|
|
||||||
sprintf(ref, "%s/%s?lb=%s", str, file_enc, lbs->name_enc);
|
|
||||||
sprintf(ref_thumb, "%s/%s?lb=%s&thumb=1", str, file_enc, lbs->name_enc);
|
|
||||||
|
|
||||||
compose_base_url(lbs, base_url, sizeof(base_url), TRUE);
|
if (att[0]) {
|
||||||
|
strlcpy(str, att, sizeof(str));
|
||||||
|
str[13] = 0;
|
||||||
|
strcpy(file_enc, att + 14);
|
||||||
|
url_encode(file_enc, sizeof(file_enc)); /* for file names with special characters like "+" */
|
||||||
|
sprintf(ref, "%s/%s?lb=%s", str, file_enc, lbs->name_enc);
|
||||||
|
sprintf(ref_thumb, "%s/%s?lb=%s&thumb=1", str, file_enc, lbs->name_enc);
|
||||||
|
|
||||||
rsprintf("<script type=\"text/javascript\">\n\n");
|
compose_base_url(lbs, base_url, sizeof(base_url), TRUE);
|
||||||
|
|
||||||
rsprintf(" function update()\n");
|
rsprintf("<script type=\"text/javascript\">\n\n");
|
||||||
rsprintf(" {\n");
|
|
||||||
rsprintf(" if (opener.document.title == \"FCKeditor\") {\n");
|
|
||||||
rsprintf(" i = opener.parent.next_attachment;\n");
|
|
||||||
rsprintf(" opener.FCKeditorAPI.GetInstance('Text').\n");
|
|
||||||
rsprintf
|
|
||||||
("InsertHtml('<a href=\"%s\"><img border=0 alt=\"%s\" src=\"%s\" name=\"att'+(i-1)+'\" id=\"att'+(i-1)+'\"></a>');\n",
|
|
||||||
ref, att + 14, ref_thumb);
|
|
||||||
rsprintf(" opener.parent.document.form1.inlineatt.value = '%s';\n", att);
|
|
||||||
rsprintf(" opener.parent.document.form1.jcmd.value = 'Upload';\n");
|
|
||||||
rsprintf(" opener.parent.document.form1.submit();\n");
|
|
||||||
rsprintf(" } else {\n");
|
|
||||||
rsprintf(" i = opener.document.form1.next_attachment.value;\n");
|
|
||||||
rsprintf(" elcode2(opener.document, opener.document.form1.Text, 'IMG', 'elog:/'+i);\n");
|
|
||||||
rsprintf(" opener.document.form1.inlineatt.value = '%s';\n", att);
|
|
||||||
rsprintf(" opener.document.form1.jcmd.value = 'Upload';\n");
|
|
||||||
rsprintf(" opener.cond_submit();\n");
|
|
||||||
rsprintf(" }\n");
|
|
||||||
rsprintf(" window.close();\n");
|
|
||||||
rsprintf(" }\n\n");
|
|
||||||
|
|
||||||
/* strings for elcode.js */
|
rsprintf(" function update()\n");
|
||||||
show_browser(browser);
|
rsprintf(" {\n");
|
||||||
|
rsprintf(" if (opener.document.title == \"FCKeditor\") {\n");
|
||||||
|
rsprintf(" i = opener.parent.next_attachment;\n");
|
||||||
|
rsprintf(" opener.FCKeditorAPI.GetInstance('Text').\n");
|
||||||
|
rsprintf
|
||||||
|
("InsertHtml('<a href=\"%s\"><img border=0 alt=\"%s\" src=\"%s\" name=\"att'+(i-1)+'\" id=\"att'+(i-1)+'\"></a>');\n",
|
||||||
|
ref, att + 14, ref_thumb);
|
||||||
|
rsprintf(" opener.parent.document.form1.inlineatt.value = '%s';\n", att);
|
||||||
|
rsprintf(" opener.parent.document.form1.jcmd.value = 'Upload';\n");
|
||||||
|
rsprintf(" opener.parent.document.form1.submit();\n");
|
||||||
|
rsprintf(" } else {\n");
|
||||||
|
rsprintf(" i = opener.document.form1.next_attachment.value;\n");
|
||||||
|
rsprintf(" elcode2(opener.document, opener.document.form1.Text, 'IMG', 'elog:/'+i);\n");
|
||||||
|
rsprintf(" opener.document.form1.inlineatt.value = '%s';\n", att);
|
||||||
|
rsprintf(" opener.document.form1.jcmd.value = 'Upload';\n");
|
||||||
|
rsprintf(" opener.cond_submit();\n");
|
||||||
|
rsprintf(" }\n");
|
||||||
|
rsprintf(" window.close();\n");
|
||||||
|
rsprintf(" }\n\n");
|
||||||
|
|
||||||
rsprintf("</script>\n\n");
|
/* strings for elcode.js */
|
||||||
|
show_browser(browser);
|
||||||
|
|
||||||
rsprintf("<center>\n");
|
rsprintf("</script>\n\n");
|
||||||
rsprintf(loc("Image \"%s\" uploaded successfully"), att + 14);
|
|
||||||
rsprintf("</center>\n");
|
rsprintf("<center>\n");
|
||||||
|
rsprintf(loc("Image \"%s\" uploaded successfully"), att + 14);
|
||||||
|
rsprintf("</center>\n");
|
||||||
|
}
|
||||||
|
|
||||||
rsprintf("</body></html>\n");
|
rsprintf("</body></html>\n");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user