StrBufCutLeft(Buf, nBuf + 1);
Eval->f(Msg, Buf);
}
- else syslog(1, "Don't know how to handle Message Headerline [%s]", ChrPtr(Buf));
+ else syslog(LOG_INFO, "Don't know how to handle Message Headerline [%s]", ChrPtr(Buf));
}
return Msg;
}
/* Remember, serv_printf() appends an extra newline */
if (include_text_alt) {
+ StrBuf *Buf;
serv_printf("Content-type: multipart/alternative; "
"boundary=\"%s\"\n", alt_boundary);
serv_printf("This is a multipart message in MIME format.\n");
serv_puts("Content-Transfer-Encoding: quoted-printable");
serv_puts("");
txtmail = html_to_ascii(bstr("msgtext"), 0, 80, 0);
- text_to_server_qp(txtmail); /* Transmit message in quoted-printable encoding */
+ Buf = NewStrBufPlain(txtmail, -1);
free(txtmail);
+ text_to_server_qp(Buf); /* Transmit message in quoted-printable encoding */
+ FreeStrBuf(&Buf);
serv_printf("\n--%s", alt_boundary);
}
- serv_puts("Content-type: text/html; charset=utf-8");
- serv_puts("Content-Transfer-Encoding: quoted-printable");
- serv_puts("");
- serv_puts("<html><body>\r\n");
- text_to_server_qp(bstr("msgtext")); /* Transmit message in quoted-printable encoding */
- serv_puts("</body></html>\r\n");
+ if (havebstr("markdown"))
+ {
+ serv_puts("Content-type: text/x-markdown; charset=utf-8");
+ serv_puts("Content-Transfer-Encoding: quoted-printable");
+ serv_puts("");
+ text_to_server_qp(sbstr("msgtext")); /* Transmit message in quoted-printable encoding */
+ }
+ else
+ {
+ serv_puts("Content-type: text/html; charset=utf-8");
+ serv_puts("Content-Transfer-Encoding: quoted-printable");
+ serv_puts("");
+ serv_puts("<html><body>\r\n");
+ text_to_server_qp(sbstr("msgtext")); /* Transmit message in quoted-printable encoding */
+ serv_puts("</body></html>\r\n");
+ }
if (include_text_alt) {
serv_printf("--%s--", alt_boundary);
StrBuf_ServGetln(Buf);
if (GetServerStatusMsg(Buf, NULL, 1, 2) != 2) {
/* You probably don't even have a dumb Drafts folder */
- syslog(9, "%s:%d: server save to drafts error: %s\n", __FILE__, __LINE__, ChrPtr(Buf) + 4);
+ syslog(LOG_DEBUG, "%s:%d: server save to drafts error: %s\n", __FILE__, __LINE__, ChrPtr(Buf) + 4);
AppendImportantMessage(_("Saved to Drafts failed: "), -1);
display_enter();
FreeStrBuf(&Buf);
}
else
{
- syslog(9, "%s\n", ChrPtr(CmdBuf));
+ syslog(LOG_DEBUG, "%s\n", ChrPtr(CmdBuf));
serv_puts(ChrPtr(CmdBuf));
FreeStrBuf(&CmdBuf);
}
dont_post = lbstr("postseq");
} else {
- syslog(9, "%s:%d: server post error: %s", __FILE__, __LINE__, ChrPtr(Buf) + 4);
+ syslog(LOG_DEBUG, "%s:%d: server post error: %s", __FILE__, __LINE__, ChrPtr(Buf) + 4);
AppendImportantMessage(ChrPtr(Buf) + 4, StrLength(Buf) - 4);
display_enter();
if (saving_to_drafts) gotoroom(WCC->CurRoom.name);
long newnlen;
void *v;
wc_mime_attachment *att;
+ const StrBuf *Tmpl = sbstr("template");
+ const StrBuf *MimeType = NULL;
+ const StrBuf *UID;
- syslog(9, "upload_attachment()\n");
- wc_printf("upload_attachment()<br>\n");
+ begin_burst();
+ syslog(LOG_DEBUG, "upload_attachment()\n");
+ if (!Tmpl) wc_printf("upload_attachment()<br>\n");
if (WCC->upload_length <= 0) {
- syslog(9, "ERROR no attachment was uploaded\n");
- wc_printf("ERROR no attachment was uploaded<br>\n");
+ syslog(LOG_DEBUG, "ERROR no attachment was uploaded\n");
+ if (Tmpl)
+ {
+ putlbstr("UPLOAD_ERROR", 1);
+ MimeType = DoTemplate(SKEY(Tmpl), NULL, &NoCtx);
+ }
+ else wc_printf("ERROR no attachment was uploaded<br>\n");
+ http_transmit_thing(ChrPtr(MimeType), 0);
+
return;
}
- syslog(9, "Client is uploading %d bytes\n", WCC->upload_length);
- wc_printf("Client is uploading %d bytes<br>\n", WCC->upload_length);
- att = malloc(sizeof(wc_mime_attachment));
+ syslog(LOG_DEBUG, "Client is uploading %d bytes\n", WCC->upload_length);
+ if (Tmpl) putlbstr("UPLOAD_LENGTH", WCC->upload_length);
+ else wc_printf("Client is uploading %d bytes<br>\n", WCC->upload_length);
+
+ att = (wc_mime_attachment*)malloc(sizeof(wc_mime_attachment));
memset(att, 0, sizeof(wc_mime_attachment ));
att->length = WCC->upload_length;
att->ContentType = NewStrBufPlain(WCC->upload_content_type, -1);
att->FileName = NewStrBufDup(WCC->upload_filename);
-
+ UID = SBSTR("qquuid");
+ if (UID)
+ att->PartNum = NewStrBufDup(UID);
+
if (WCC->attachments == NULL) {
WCC->attachments = NewHash(1, Flathash);
}
att->Data = WCC->upload;
WCC->upload = NULL;
WCC->upload_length = 0;
+
+ if (Tmpl) MimeType = DoTemplate(SKEY(Tmpl), NULL, &NoCtx);
+ http_transmit_thing(ChrPtr(MimeType), 0);
}
StrBuf *WhichAttachment;
HashPos *at;
long len;
+ int found=0;
const char *key;
WhichAttachment = NewStrBufDup(sbstr("which_attachment"));
+ if (ChrPtr(WhichAttachment)[0] == '/')
+ StrBufCutLeft(WhichAttachment, 1);
StrBufUnescape(WhichAttachment, 0);
at = GetNewHashPos(WCC->attachments, 0);
do {
+ vAtt = NULL;
GetHashPos(WCC->attachments, at, &len, &key, &vAtt);
-
+
att = (wc_mime_attachment*) vAtt;
- if ((att != NULL) &&
- (strcmp(ChrPtr(WhichAttachment),
- ChrPtr(att->FileName) ) == 0))
+ if ((att != NULL) &&
+ (
+ !strcmp(ChrPtr(WhichAttachment), ChrPtr(att->FileName)) ||
+ ((att->PartNum != NULL) &&
+ !strcmp(ChrPtr(WhichAttachment), ChrPtr(att->PartNum)))
+ ))
{
DeleteEntryFromHash(WCC->attachments, at);
+ found=1;
break;
}
}
while (NextHashPos(WCC->attachments, at));
+
FreeStrBuf(&WhichAttachment);
- wc_printf("remove_attachment() completed\n");
+ wc_printf("remove_attachment(%d) completed\n", found);
}
begin_burst();
output_headers(1, 0, 0, 0, 1, 0);
- DoTemplate(HKEY("edit_message"), NULL, &NoCtx);
+ if (WCC->CurRoom.defview == VIEW_WIKIMD)
+ DoTemplate(HKEY("edit_markdown_epic"), NULL, &NoCtx);
+ else
+ DoTemplate(HKEY("edit_message"), NULL, &NoCtx);
end_burst();
return;
*/
void mimepart(int force_download)
{
+ int detect_mime = 0;
long msgnum;
long ErrorDetail;
StrBuf *att;
if (GetServerStatus(Buf, &ErrorDetail) == 2) {
StrBufCutLeft(Buf, 4);
bytes = StrBufExtract_long(Buf, 0, '|');
- if (!force_download) {
- StrBufExtract_token(ContentType, Buf, 3, '|');
+ StrBufExtract_token(ContentType, Buf, 3, '|');
+ CheckGZipCompressionAllowed (SKEY(ContentType));
+ if (force_download)
+ {
+ FlushStrBuf(ContentType);
+ detect_mime = 0;
}
-
- serv_read_binary(WCC->WBuf, bytes, Buf);
- serv_puts("CLOS");
- StrBuf_ServGetln(Buf);
- CT = ChrPtr(ContentType);
-
- if (!force_download) {
- if (!strcasecmp(ChrPtr(ContentType), "application/octet-stream")) {
+ else
+ {
+ if (!strcasecmp(ChrPtr(ContentType), "application/octet-stream"))
+ {
StrBufExtract_token(Buf, WCC->Hdr->HR.ReqLine, 2, '/');
CT = GuessMimeByFilename(SKEY(Buf));
+ StrBufPlain(ContentType, CT, -1);
}
- if (!strcasecmp(ChrPtr(ContentType), "application/octet-stream")) {
- CT = GuessMimeType(SKEY(WCC->WBuf));
+ if (!strcasecmp(ChrPtr(ContentType), "application/octet-stream"))
+ {
+ detect_mime = 1;
}
}
- http_transmit_thing(CT, 0);
+ serv_read_binary_to_http(ContentType, bytes, 0, detect_mime);
+
+ serv_read_binary(WCC->WBuf, bytes, Buf);
+ serv_puts("CLOS");
+ StrBuf_ServGetln(Buf);
+ CT = ChrPtr(ContentType);
} else {
StrBufCutLeft(Buf, 4);
switch (ErrorDetail) {
hprintf("HTTP/1.1 500 %s\n", ChrPtr(Buf));
break;
}
- output_headers(0, 0, 0, 0, 0, 0);
+
+ hprintf("Pragma: no-cache\r\n"
+ "Cache-Control: no-store\r\n"
+ "Expires: -1\r\n"
+ );
+
hprintf("Content-Type: text/plain\r\n");
begin_burst();
wc_printf(_("An error occurred while retrieving this part: %s\n"),