Skip to content

Commit

Permalink
Also block remote images in HTML part view (#1488827)
Browse files Browse the repository at this point in the history
  • Loading branch information
thomascube committed Jan 19, 2013
1 parent b005927 commit 1ef4033
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 7 deletions.
8 changes: 3 additions & 5 deletions program/js/app.js
Expand Up @@ -821,11 +821,9 @@ function rcube_webmail()

// open attachment in frame if it's of a supported mimetype
if (this.env.uid && props.mimetype && this.env.mimetypes && $.inArray(props.mimetype, this.env.mimetypes) >= 0) {
if (props.mimetype == 'text/html')
qstring += '&_safe=1';
this.attachment_win = window.open(this.env.comm_path+'&_action=get&'+qstring+'&_frame=1', 'rcubemailattachment');
if (this.attachment_win) {
setTimeout(function(){ ref.attachment_win.focus(); }, 10);
var attachment_win = window.open(this.env.comm_path+'&_action=get&'+qstring+'&_frame=1', 'rcubemailattachment'+this.env.uid+props.part);
if (attachment_win) {
setTimeout(function(){ attachment_win.focus(); }, 10);
break;
}
}
Expand Down
29 changes: 27 additions & 2 deletions program/steps/mail/get.inc
Expand Up @@ -35,6 +35,11 @@ if (!empty($_GET['_preload'])) {

ob_end_clean();


// define global style for warning blocks inside the attachment part frame
// TODO: get styles for this from skin (but we don't have a skin template here...)
$warning_css_style = 'border:2px solid #ffdf0e; background:#fef893; padding:0.6em 1em';

// similar code as in program/steps/mail/show.inc
if (!empty($_GET['_uid'])) {
$RCMAIL->config->set('prefer_html', true);
Expand Down Expand Up @@ -154,12 +159,12 @@ else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) {
if (!$valid) {
$OUTPUT = new rcmail_html_page();
$OUTPUT->write(html::tag('html', null, html::tag('body', array('style' => 'font-family:sans-serif; margin:1em'),
html::div(array('class' => 'warning', 'style' => 'border:2px solid #ffdf0e; background:#fef893; padding:1em 1em 0 1em;'),
html::div(array('class' => 'warning', 'style' => $warning_css_style),
rcube_label(array(
'name' => 'attachmentvalidationerror',
'vars' => array('expected' => "$mimetype (.$file_extension)", 'detected' => "$real_mimetype (.$extensions[0])")
)) .
html::p('buttons',
html::p(array('class' => 'buttons', 'style' => 'margin-bottom:0'),
html::tag('button',
array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_nocheck' => 1))) . "'"),
rcube_label('showanyway')))
Expand Down Expand Up @@ -214,7 +219,27 @@ else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) {
if (!$part->body)
$part->body = $MESSAGE->get_part_content($part->mime_id);

// show images?
rcmail_check_safe($MESSAGE);

// render HTML body
$out = rcmail_print_body($part, array('safe' => $MESSAGE->is_safe, 'inline_html' => false));

// insert remote objects warning into HTML body
if ($REMOTE_OBJECTS) {
$body_start = 0;
if ($body_pos = strpos($out, '<body')) {
$body_start = strpos($out, '>', $body_pos) + 1;
}
$out = substr($out, 0, $body_start) .
html::div(array('class' => 'warning', 'style' => $warning_css_style),
Q(rcube_label('blockedimages')) . '&nbsp;' .
html::tag('button',
array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_safe' => 1))) . "'"),
Q(rcube_label('showimages')))
) .
substr($out, $body_start);
}
}

// check connection status
Expand Down

0 comments on commit 1ef4033

Please sign in to comment.