Merge branch 'master' into dev/elastic

pull/6798/head
Aleksander Machniak 5 years ago
commit ce9c52e65a

@ -1,17 +1,32 @@
CHANGELOG Roundcube Webmail
===========================
- Update to jQuery 3.4.0
- Clarified 'address_book_type' option behavior (#6680)
- Added cookie mismatch detection, display an error message informing the user to clear cookies
- Renamed 'log_session' option to 'session_debug'
- Password: Added ldap_exop driver (#4992)
- Don't log full session identifiers in userlogins log (#6625)
- installto.sh: Add possibility to run the update even on the up-to-date installation (#6533)
- Elastic: Add Prev/Next buttons on message page toolbar (#6648)
- Elastic: Close search options on Enter key press in quick-search input (#6660)
- Elastic: Changed read/unread icons (#6636)
- Elastic: Changed "Move to..." icon (#6637)
- Elastic: Add hide/show for advanced preferences (#6632)
- Elastic: Fix bug where toolbar disappears on attachment menu use in Chrome (#6677)
- Elastic: Fix folders list scrolling on touch devices (#6706)
- Elastic: Fix non-working pretty selects in Chrome browser (#6705)
- Managesieve: Fix bug where global includes were requested for vacation (#6716)
- Managesieve: Use RFC-compliant line endings, CRLF instead of LF (#6686)
- Managesieve: Fix so "Create filter" option does not show up when Filters menu is disabled (#6723)
- Fix bug in HTML parser that could cause missing text fragments when there was no head/body tag (#6713)
- Fix bug where HTML messages with a xml:namespace tag were not rendered (#6697)
- Fix TinyMCE download location (#6694)
- Fix so "Open in new window" consistently displays "external window" interface (#6659)
- Fix bug where next row wasn't selected after deleting a collapsed thread (#6655)
- Fix bug where external content (e.g. mail body) was passed to templates parsing code (#6640)
- Fix bug where attachment preview didn't work with x_frame_options=deny (#6688)
- Fix so bin/install-jsdeps.sh returns error code on error (#6704)
RELEASE 1.4-rc1
---------------

@ -296,3 +296,9 @@ SELINUX. Here's some sample commands for SELINUX:
$ semanage fcontext -a -t httpd_sys_rw_content_t "/path_to_roundcube/logs(/.*)?"
$ semanage fcontext -a -t httpd_sys_rw_content_t "/path_to_roundcube/temp(/.*)?"
$ restorecon -Rv /path_to_roundcube/
Microsoft IIS Server by default does not support WOFF fonts used in Elastic skin. It might be
needed to add following MIME Types definitions (via web.config or IIS Manager):
.woff application/font-woff
.woff2 application/font-woff2

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/cleandb.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2015, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,7 +12,6 @@
| |
| PURPOSE: |
| Finally remove all db records marked as deleted some time ago |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/decrypt.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2005-2009, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,7 +12,6 @@
| |
| PURPOSE: |
| Decrypt the encrypted parts of the HTTP Received: headers |
| |
+-----------------------------------------------------------------------+
| Author: Tomas Tevesz <ice@extreme.hu> |
+-----------------------------------------------------------------------+

@ -3,10 +3,9 @@
/*
+-----------------------------------------------------------------------+
| bin/deluser.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2014, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/dumpschema.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2005-2009, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,7 +12,6 @@
| |
| PURPOSE: |
| Dumps database schema in XML format using MDB2_Schema |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+

@ -2,11 +2,13 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/exportgettext.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2011, The Roundcube Dev Team |
| Licensed under the GNU General Public License |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
| PURPOSE: |
| Export PHP-based localization files to PO files for gettext |

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/gc.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,7 +12,6 @@
| |
| PURPOSE: |
| Trigger garbage collecting routines manually (e.g. via cronjob) |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+

@ -2,11 +2,13 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/importgettext.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2011, The Roundcube Dev Team |
| Licensed under the GNU General Public License |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
| PURPOSE: |
| Import localizations from gettext PO format |

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/indexcontacts.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2011, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -2,11 +2,10 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/initdb.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2015, The Roundcube Dev Team |
| Copyright (C) 2010-2015, Kolab Systems AG |
| |
| Copyright (C) The Roundcube Dev Team |
| Copyright (C) Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/install-jsdeps.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,7 +12,7 @@
| |
| PURPOSE: |
| Utility script to fetch and install all 3rd party javascript |
| libraries unsed in Roundcube from source. |
| libraries used in Roundcube from source. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+
@ -24,13 +23,14 @@ define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require_once INSTALL_PATH . 'program/include/clisetup.php';
if (!function_exists('exec')) {
die("PHP exec() function is required. Check disable_functions in php.ini\n");
rcube::raise_error("PHP exec() function is required. Check disable_functions in php.ini.", false, true);
}
$SOURCES = json_decode(file_get_contents(INSTALL_PATH . 'jsdeps.json'), true);
$cfgfile = INSTALL_PATH . 'jsdeps.json';
$SOURCES = json_decode(file_get_contents($cfgfile), true);
if (empty($SOURCES['dependencies'])) {
die("ERROR: Failed to read sources from " . INSTALL_PATH . "jsdeps.json\n");
rcube::raise_error("Failed to read dependencies list from $cfgfile", false, true);
}
$CURL = trim(`which curl`);
@ -116,7 +116,7 @@ function fetch_from_source($package, $useCache = true, &$filetype = null)
if (!is_readable($cache_file) || !$useCache) {
if (empty($CURL) && empty($WGET)) {
die("ERROR: Required program 'wget' or 'curl' not found\n");
rcube::raise_error("Required 'wget' or 'curl' program not found.", false, true);
}
$url = str_replace('$v', $package['version'], $package['url']);
@ -133,7 +133,7 @@ function fetch_from_source($package, $useCache = true, &$filetype = null)
$url = str_replace('$v', $package['version'], $package['api_url']);
$header = 'Accept:application/vnd.github.v3.raw';
echo "Fetching failed. Using Github API on $url\n";
rcube::raise_error("Fetching failed. Using Github API on $url");
if ($CURL)
exec(sprintf('%s -L -H %s -s %s -o %s', $CURL, escapeshellarg($header), escapeshellarg($url), $cache_file), $out, $retval);
@ -142,7 +142,7 @@ function fetch_from_source($package, $useCache = true, &$filetype = null)
}
if ($retval !== 0) {
die("ERROR: Failed to download source file from " . $url . "\n");
rcube::raise_error("Failed to download source file from $url", false, true);
}
}
@ -160,7 +160,7 @@ function extract_filetype($package, &$filetype = null)
$cache_file = $CACHEDIR . '/' . $package['lib'] . '-' . $package['version'] . '.' . $filetype;
if (empty($FILEINFO)) {
die("ERROR: Required program 'file' not found\n");
rcube::raise_error("Required program 'file' not found.", false, true);
}
// detect downloaded/cached file type
@ -207,7 +207,7 @@ function compose_destfile($package, $srcfile)
echo "Wrote file " . INSTALL_PATH . $package['dest'] . "\n";
}
else {
die("ERROR: Failed to write destination file " . INSTALL_PATH . $package['dest'] . "\n");
rcube::raise_error("Failed to write destination file " . INSTALL_PATH . $package['dest'], false, true);
}
}
@ -219,7 +219,7 @@ function extract_zipfile($package, $srcfile)
global $UNZIP, $CACHEDIR;
if (empty($UNZIP)) {
die("ERROR: Required program 'unzip' not found\n");
rcube::raise_error("Required 'unzip' program not found.", false, true);
}
$destdir = INSTALL_PATH . $package['dest'];
@ -228,7 +228,7 @@ function extract_zipfile($package, $srcfile)
}
if (!is_writeable($destdir)) {
die("ERROR: Cannot write to destination directory $destdir\n");
rcube::raise_error("Cannot write to destination directory: $destdir", false, true);
}
// pick files from zip archive
@ -237,7 +237,7 @@ function extract_zipfile($package, $srcfile)
echo "Extracting files $pattern into $destdir\n";
exec(sprintf('%s -o %s %s -d %s', $UNZIP, escapeshellarg($srcfile), escapeshellarg($pattern), $destdir), $out, $retval);
if ($retval !== 0) {
echo "ERROR: Failed to unpack $pattern; " . join('; ' . $out) . "\n";
rcube::raise_error("Failed to unpack $pattern; " . join('; ' . $out));
}
}
}
@ -273,7 +273,7 @@ function extract_zipfile($package, $srcfile)
exec(sprintf('mv -f %s/%s %s/%s', $sourcedir, $src, $destdir, $dest), $out, $retval);
if ($retval !== 0) {
echo "ERROR: Failed to move $src into $destdir/$dest; " . join('; ' . $out) . "\n";
rcube::raise_error("Failed to move $src into $destdir/$dest; " . join('; ' . $out));
}
}
@ -285,7 +285,7 @@ function extract_zipfile($package, $srcfile)
echo "Extracting zip archive into $destdir\n";
exec(sprintf('%s -o %s -d %s', $UNZIP, escapeshellarg($srcfile), $destdir), $out, $retval);
if ($retval !== 0) {
echo "ERROR: Failed to unzip $srcfile; " . join('; ' . $out) . "\n";
rcube::raise_error("Failed to unzip $srcfile; " . join('; ' . $out));
}
}
@ -357,7 +357,7 @@ foreach ($SOURCES['dependencies'] as $package) {
}
if (!empty($package['sha1']) && ($sum = sha1_file($srcfile)) !== $package['sha1']) {
die("ERROR: Incorrect sha1 sum of $srcfile. Expected: {$package['sha1']}, got: $sum\n");
rcube::raise_error("Incorrect sha1 sum of $srcfile. Expected: {$package['sha1']}, got: $sum", false, true);
}
if ($args['extract']) {

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/installto.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2014-2016, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -39,17 +38,23 @@ if (!preg_match('/define\(.RCMAIL_VERSION.,\s*.([0-9.]+[a-z-]*)/', $iniset, $m))
$oldversion = $m[1];
if (version_compare(version_parse($oldversion), version_parse(RCMAIL_VERSION), '>='))
rcube::raise_error("Installation at target location is up-to-date!", false, true);
if (version_compare(version_parse($oldversion), version_parse(RCMAIL_VERSION), '>'))
rcube::raise_error("Target installation already in version $oldversion.", false, true);
if (version_compare(version_parse($oldversion), version_parse(RCMAIL_VERSION), '==')) {
echo "Target installation already in version $oldversion. Do you want to update again? (y/N)\n";
}
else {
echo "Upgrading from $oldversion. Do you want to continue? (y/N)\n";
}
echo "Upgrading from $oldversion. Do you want to continue? (y/N)\n";
$input = trim(fgets(STDIN));
if (strtolower($input) == 'y') {
echo "Copying files to target location...";
$adds = array();
$dirs = array('program','bin','SQL','plugins','skins');
$dirs = array('bin','SQL','plugins','skins','program');
if (is_dir(INSTALL_PATH . 'vendor') && !is_file("$target_dir/composer.json")) {
$dirs[] = 'vendor';

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/moduserprefs.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2012-2015, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -1,5 +1,18 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
ini_set('memory_limit', -1);

@ -1,5 +1,18 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
ini_set('memory_limit', -1);

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/package2composer.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,7 +12,6 @@
| |
| PURPOSE: |
| Convert a plugin's package.xml file into a composer.json description |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/update.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2015, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/updatecss.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -2,11 +2,10 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/updatedb.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2012, The Roundcube Dev Team |
| Copyright (C) 2010-2012, Kolab Systems AG |
| |
| Copyright (C) The Roundcube Dev Team |
| Copyright (C) Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -18,7 +18,7 @@
"pear/crypt_gpg": "~1.6.3",
"pear/net_sieve": "~1.4.3",
"roundcube/plugin-installer": "~0.1.6",
"masterminds/html5": "~2.3.0",
"masterminds/html5": "~2.5.0",
"endroid/qr-code": "~1.6.5"
},
"require-dev": {

@ -9,7 +9,7 @@
| from defaults.inc.php to this file to override the defaults. |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2005-2013, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -9,7 +9,7 @@
| Default settings for all configuration options |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2005-2018, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -92,34 +92,34 @@ $config['syslog_facility'] = LOG_USER;
// Data will only be logged if a directory <log_dir>/<username>/ exists and is writable.
$config['per_user_logging'] = false;
// Log sent messages to <log_dir>/sendmail or to syslog
// Log sent messages to <log_dir>/sendmail.log or to syslog
$config['smtp_log'] = true;
// Log successful/failed logins to <log_dir>/userlogins or to syslog
// Log successful/failed logins to <log_dir>/userlogins.log or to syslog
$config['log_logins'] = false;
// Log session authentication errors to <log_dir>/session or to syslog
$config['log_session'] = false;
// Log session debug information/authentication errors to <log_dir>/session.log or to syslog
$config['session_debug'] = false;
// Log SQL queries to <log_dir>/sql or to syslog
// Log SQL queries to <log_dir>/sql.log or to syslog
$config['sql_debug'] = false;
// Log IMAP conversation to <log_dir>/imap or to syslog
// Log IMAP conversation to <log_dir>/imap.log or to syslog
$config['imap_debug'] = false;
// Log LDAP conversation to <log_dir>/ldap or to syslog
// Log LDAP conversation to <log_dir>/ldap.log or to syslog
$config['ldap_debug'] = false;
// Log SMTP conversation to <log_dir>/smtp or to syslog
// Log SMTP conversation to <log_dir>/smtp.log or to syslog
$config['smtp_debug'] = false;
// Log Memcache conversation to <log_dir>/memcache or to syslog
// Log Memcache conversation to <log_dir>/memcache.log or to syslog
$config['memcache_debug'] = false;
// Log APC conversation to <log_dir>/apc or to syslog
// Log APC conversation to <log_dir>/apc.log or to syslog
$config['apc_debug'] = false;
// Log Redis conversation to <log_dir>/redis or to syslog
// Log Redis conversation to <log_dir>/redis.log or to syslog
$config['redis_debug'] = false;
@ -812,12 +812,10 @@ $config['compose_responses_static'] = array(
// ----------------------------------
// This indicates which type of address book to use. Possible choises:
// 'sql' (default), 'ldap' and ''.
// If set to 'ldap' then it will look at using the first writable LDAP
// address book as the primary address book and it will not display the
// SQL address book in the 'Address Book' view.
// If set to '' then no address book will be displayed or only the
// addressbook which is created by a plugin (like CardDAV).
// 'sql' - built-in sql addressbook enabled (default),
// '' - built-in sql addressbook disabled.
// Still LDAP or plugin-added addressbooks will be available.
// BC Note: The value can actually be anything except 'sql', it does not matter.
$config['address_book_type'] = 'sql';
// In order to enable public ldap search, configure an array like the Verisign

@ -4,7 +4,7 @@
+-----------------------------------------------------------------------+
| Roundcube Webmail Selenium Tests Entry Point |
| |
| Copyright (C) 2005-2014, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -4,7 +4,7 @@
| Roundcube Webmail IMAP Client |
| Version 1.4-git |
| |
| Copyright (C) 2005-2018, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License (with exceptions |
@ -205,24 +205,14 @@ else if ($RCMAIL->task == 'logout' && isset($_SESSION['user_id'])) {
else if ($RCMAIL->task != 'login' && $_SESSION['user_id']) {
if (!$RCMAIL->session->check_auth()) {
$RCMAIL->kill_session();
$session_error = true;
$session_error = 'sessionerror';
}
}
// not logged in -> show login page
if (empty($RCMAIL->user->ID)) {
// log session failures
$task = rcube_utils::get_input_value('_task', rcube_utils::INPUT_GPC);
if ($task && !in_array($task, array('login','logout'))
&& !$session_error && ($sess_id = $_COOKIE[ini_get('session.name')])
) {
$RCMAIL->session->log("Aborted session $sess_id; no valid session data found");
$session_error = true;
}
if ($session_error || $_REQUEST['_err'] == 'session') {
$OUTPUT->show_message('sessionerror', 'error', null, true, -1);
if ($session_error || $_REQUEST['_err'] === 'session' || ($session_error = $RCMAIL->session_error())) {
$OUTPUT->show_message($session_error ?: 'sessionerror', 'error', null, true, -1);
}
if ($OUTPUT->ajax_call || $OUTPUT->get_env('framed')) {

@ -1,5 +1,19 @@
<?php
/**
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
if (!class_exists('rcmail_install', false) || !is_object($RCI)) {
die("Not allowed! Please open installer/index.php instead.");
}

@ -2,13 +2,12 @@
+-----------------------------------------------------------------------+
| Roundcube installer client function |
| |
| This file is part of the Roundcube web development suite |
| Copyright (C) 2009-2012, The Roundcube Dev Team |
| This file is part of the Roundcube Webmail client |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
@ -17,7 +16,7 @@
function toggleblock(id, link)
{
var block = document.getElementById(id);
return false;
}
@ -28,14 +27,14 @@ function addhostfield()
var row = document.createElement('div');
var input = document.createElement('input');
var link = document.createElement('a');
input.name = '_default_host[]';
input.size = '30';
link.href = '#';
link.onclick = function() { removehostfield(this.parentNode); return false };
link.className = 'removelink';
link.innerHTML = 'remove';
row.appendChild(input);
row.appendChild(link);
container.appendChild(row);

@ -1,5 +1,19 @@
<?php
/**
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
if (!class_exists('rcmail_install', false) || !is_object($RCI)) {
die("Not allowed! Please open installer/index.php instead.");
}

@ -5,7 +5,7 @@
| Roundcube Webmail setup tool |
| Version 1.4-git |
| |
| Copyright (C) 2009-2017, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License (with exceptions |

@ -1,4 +1,17 @@
<?php
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
if (!class_exists('rcmail_install', false) || !is_object($RCI)) {
die("Not allowed! Please open installer/index.php instead.");

@ -3,10 +3,10 @@
{
"lib": "jquery",
"name": "jQuery",
"version": "3.3.1",
"version": "3.4.0",
"url": "https://code.jquery.com/jquery-$v.min.js",
"dest": "program/js/jquery.min.js",
"sha1": "0dc32db4aa9c5f03f3b38c47d883dbd4fed13aae",
"sha1": "e4925196f6f444fa58915420fbcd80f909c68d28",
"license": "MIT",
"copyright": "Copyright JS Foundation and other contributors",
"source": "https://github.com/jquery/jquery/tree/$v"
@ -37,7 +37,7 @@
{
"lib": "tinymce",
"version": "4.8.2",
"url": "http://download.ephox.com/tinymce/community/tinymce_$v.zip",
"url": "https://download.tiny.cloud/tinymce/community/tinymce_$v.zip",
"dest": "program/js",
"sha1": "d7fced05acdeeb78299585ea9909b0de2b3d759d",
"license": "LGPL",
@ -57,7 +57,7 @@
{
"lib": "tinymce-langs",
"version": "4.8.2",
"url": "https://tinymce-services.azurewebsites.net/1/i18n/download?langs=ar,hy,az,eu,be,bs,bg_BG,ca,zh_CN,zh_TW,hr,cs,cs_CZ,da,nl,en_CA,en_GB,eo,et,fo,fi,fr_FR,fr_CH,gd,gl,ka_GE,de,de_AT,el,he_IL,hi_IN,hu_HU,is_IS,id,ga,it,ja,kab,km_KH,ko_KR,ku,ku_IQ,lv,lt,lb,mk_MK,ml_IN,nb_NO,oc,fa,fa_IR,pl,pt_BR,pt_PT,ro,ru,sk,sl_SI,es,es_MX,sv_SE,tg,ta,ta_IN,tt,th_TH,tr,tr_TR,ug,uk,uk_UA,vi,vi_VN,cy&extension=.zip",
"url": "https://www.tiny.cloud/docs-4x/language/tinymce4x_languages.zip",
"dest": "program/js/tinymce"
},
{

@ -1,5 +1,18 @@
/**
* ACL plugin script
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* @licend The above is the entire license notice
* for the JavaScript code in this file.
*/
if (window.rcmail) {

@ -5,7 +5,7 @@
*
* @author Aleksander Machniak <alec@alec.pl>
*
* Copyright (C) 2011-2012, Kolab Systems AG
* Copyright (C) Kolab Systems AG
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/acl/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail ACL plugin |
| Copyright (C) 2012-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/

@ -4,7 +4,7 @@
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) 2012-2016, The Roundcube Dev Team
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-archive/

@ -4,7 +4,7 @@
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) 2013, The Roundcube Dev Team
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License

@ -8,7 +8,7 @@
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2013 Thomas Yu - Sian, Liu
* Copyright (C) 2013, Kolab Systems AG
* Copyright (C) Kolab Systems AG
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -77,7 +77,7 @@ class attachment_reminder extends rcube_plugin
$args['prefs']['attachment_reminder'] = !empty($_POST['_attachment_reminder']);
}
}
return $args;
}
}

@ -2,15 +2,12 @@
/*
+-----------------------------------------------------------------------+
| plugins/attachment_reminder/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/

@ -13,7 +13,7 @@
* @author Ziba Scott <ziba@umich.edu>
* @author Aleksander Machniak <alec@alec.pl>
*
* Copyright (C) 2011-2018, The Roundcube Dev Team
* Copyright (C) The Roundcube Dev Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/emoticons/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Emoticons plugin |
| Copyright (C) 2012-2015, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-emoticons/

@ -1,4 +1,19 @@
/* Enigma Plugin */
/**
* Enigma plugin script
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* @licend The above is the entire license notice
* for the JavaScript code in this file.
*/
window.rcmail && rcmail.addEventListener('init', function(evt) {
if (rcmail.env.task == 'settings') {
@ -59,7 +74,7 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
e.stopPropagation();
});
$('a.button.enigma').prop('tabindex', $('#messagetoolbar > a:first').prop('tabindex'));
$('a.button.enigma').prop('tabindex', $('#messagetoolbar > a').first().prop('tabindex'));
$.each(['encrypt', 'sign'], function() {
var opt = this, input = $('#enigma' + opt + 'opt');

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| Enigma Plugin for Roundcube |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| Abstract driver for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| GnuPG (PGP) driver for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| S/MIME driver for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| Engine of the Enigma Plugin |
| |
| Copyright (C) 2010-2016 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| Error class for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| Key class for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| Mail_mime wrapper for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| Signature class for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| SubKey class for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| User Interface for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -4,12 +4,11 @@
+-------------------------------------------------------------------------+
| User ID class for the Enigma Plugin |
| |
| Copyright (C) 2010-2015 The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+

@ -2,15 +2,13 @@
/**
+-----------------------------------------------------------------------+
| plugins/enigma/localization/<lang>.inc |
| Localization file of the Roundcube Webmail Enigma plugin |
| |
| Localization file of the Roundcube Webmail ACL plugin |
| Copyright (C) 2012-2016, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/roundcube/roundcube-webmail/plugin-enigma/

@ -11,43 +11,44 @@ require_once(__DIR__ . '/example_addressbook_backend.php');
*/
class example_addressbook extends rcube_plugin
{
private $abook_id = 'static';
private $abook_name = 'Static List';
public function init()
{
$this->add_hook('addressbooks_list', array($this, 'address_sources'));
$this->add_hook('addressbook_get', array($this, 'get_address_book'));
// use this address book for autocompletion queries
// (maybe this should be configurable by the user?)
$config = rcmail::get_instance()->config;
$sources = (array) $config->get('autocomplete_addressbooks', array('sql'));
if (!in_array($this->abook_id, $sources)) {
$sources[] = $this->abook_id;
$config->set('autocomplete_addressbooks', $sources);
private $abook_id = 'static';
private $abook_name = 'Static List';
public function init()
{
$this->add_hook('addressbooks_list', array($this, 'address_sources'));
$this->add_hook('addressbook_get', array($this, 'get_address_book'));
// use this address book for autocompletion queries
// (maybe this should be configurable by the user?)
$config = rcmail::get_instance()->config;
$sources = (array) $config->get('autocomplete_addressbooks', array('sql'));
if (!in_array($this->abook_id, $sources)) {
$sources[] = $this->abook_id;
$config->set('autocomplete_addressbooks', $sources);
}
}
}
public function address_sources($p)
{
$abook = new example_addressbook_backend($this->abook_name);
$p['sources'][$this->abook_id] = array(
'id' => $this->abook_id,
'name' => $this->abook_name,
'readonly' => $abook->readonly,
'groups' => $abook->groups,
);
return $p;
}
public function get_address_book($p)
{
if ($p['id'] === $this->abook_id) {
$p['instance'] = new example_addressbook_backend($this->abook_name);
public function address_sources($p)
{
$abook = new example_addressbook_backend($this->abook_name);
$p['sources'][$this->abook_id] = array(
'id' => $this->abook_id,
'name' => $this->abook_name,
'readonly' => $abook->readonly,
'groups' => $abook->groups,
);
return $p;
}
return $p;
}
public function get_address_book($p)
{
if ($p['id'] === $this->abook_id) {
$p['instance'] = new example_addressbook_backend($this->abook_name);
}
return $p;
}
}

@ -9,108 +9,112 @@
*/
class example_addressbook_backend extends rcube_addressbook
{
public $primary_key = 'ID';
public $readonly = true;
public $groups = true;
private $filter;
private $result;
private $name;
public function __construct($name)
{
$this->ready = true;
$this->name = $name;
}
public function get_name()
{
return $this->name;
}
public function set_search_set($filter)
{
$this->filter = $filter;
}
public function get_search_set()
{
return $this->filter;
}
public function reset()
{
$this->result = null;
$this->filter = null;
}
function list_groups($search = null, $mode = 0)
{
return array(
array('ID' => 'testgroup1', 'name' => "Testgroup"),
array('ID' => 'testgroup2', 'name' => "Sample Group"),
);
}
public function list_records($cols=null, $subset=0)
{
$this->result = $this->count();
$this->result->add(array('ID' => '111', 'name' => "Example Contact", 'firstname' => "Example", 'surname' => "Contact", 'email' => "example@roundcube.net"));
return $this->result;
}
public function search($fields, $value, $strict=false, $select=true, $nocount=false, $required=array())
{
// no search implemented, just list all records
return $this->list_records();
}
public function count()
{
return new rcube_result_set(1, ($this->list_page-1) * $this->page_size);
}
public function get_result()
{
return $this->result;
}
public function get_record($id, $assoc=false)
{
$this->list_records();
$first = $this->result->first();
$sql_arr = $first['ID'] == $id ? $first : null;
return $assoc && $sql_arr ? $sql_arr : $this->result;
}
function create_group($name)
{
$result = false;
return $result;
}
function delete_group($gid)
{
return false;
}
function rename_group($gid, $newname, &$newid)
{
return $newname;
}
function add_to_group($group_id, $ids)
{
return false;
}
function remove_from_group($group_id, $ids)
{
return false;
}
public $primary_key = 'ID';
public $readonly = true;
public $groups = true;
private $filter;
private $result;
private $name;
public function __construct($name)
{
$this->ready = true;
$this->name = $name;
}
public function get_name()
{
return $this->name;
}
public function set_search_set($filter)
{
$this->filter = $filter;
}
public function get_search_set()
{
return $this->filter;
}
public function reset()
{
$this->result = null;
$this->filter = null;
}
function list_groups($search = null, $mode = 0)
{
return array(
array('ID' => 'testgroup1', 'name' => "Testgroup"),
array('ID' => 'testgroup2', 'name' => "Sample Group"),
);
}
public function list_records($cols = null, $subset = 0)
{
$this->result = $this->count();
$this->result->add(array(
'ID' => '111',
'name' => "Example Contact",
'firstname' => "Example",
'surname' => "Contact",
'email' => "example@roundcube.net"
));
return $this->result;
}
public function search($fields, $value, $strict=false, $select=true, $nocount=false, $required=array())
{
// no search implemented, just list all records
return $this->list_records();
}
public function count()
{
return new rcube_result_set(1, ($this->list_page-1) * $this->page_size);
}
public function get_result()
{
return $this->result;
}
public function get_record($id, $assoc = false)
{
$this->list_records();
$first = $this->result->first();
$sql_arr = $first['ID'] == $id ? $first : null;
return $assoc && $sql_arr ? $sql_arr : $this->result;
}
function create_group($name)
{
$result = false;
return $result;
}
function delete_group($gid)
{
return false;
}
function rename_group($gid, $newname, &$newid)
{
return $newname;
}
function add_to_group($group_id, $ids)
{
return false;
}
function remove_from_group($group_id, $ids)
{
return false;
}
}

@ -1,11 +1,10 @@
/**
* Help plugin client script
* @version 1.4
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) 2012-2014, The Roundcube Dev Team
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License

@ -8,8 +8,7 @@
* @license GNU GPLv3+
*
* Configuration (see config.inc.php.dist)
*
**/
*/
class help extends rcube_plugin
{

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/help/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Help plugin |
| Copyright (C) 2012-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-help/

@ -4,7 +4,7 @@
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) 2012-2014, The Roundcube Dev Team
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/hide_blockquote/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Hide-Blockquote plugin |
| Copyright (C) 2012-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-hide_blockquote/
@ -20,5 +18,3 @@ $labels = array();
$labels['hide'] = 'Hide';
$labels['show'] = 'Show';
$labels['quotelimit'] = 'Hide citation when lines count is greater than';
?>

@ -36,12 +36,13 @@ class http_authentication extends rcube_plugin
// handle login action
if (empty($_SESSION['user_id'])) {
$args['action'] = 'login';
$this->redirect_query = $_SERVER['QUERY_STRING'];
$args['action'] = 'login';
$this->redirect_query = $_SERVER['QUERY_STRING'];
}
// Set user password in session (see shutdown() method for more info)
else if (!empty($_SESSION['user_id']) && empty($_SESSION['password'])
&& !empty($_SERVER['PHP_AUTH_PW'])) {
&& !empty($_SERVER['PHP_AUTH_PW'])
) {
$_SESSION['password'] = $rcmail->encrypt($_SERVER['PHP_AUTH_PW']);
}
}
@ -55,8 +56,9 @@ class http_authentication extends rcube_plugin
$this->load_config();
$host = rcmail::get_instance()->config->get('http_authentication_host');
if (is_string($host) && trim($host) !== '' && empty($args['host']))
if (is_string($host) && trim($host) !== '' && empty($args['host'])) {
$args['host'] = rcube_utils::idn_to_ascii(rcube_utils::parse_host($host));
}
// Allow entering other user data in login form,
// e.g. after log out (#1487953)
@ -66,12 +68,13 @@ class http_authentication extends rcube_plugin
if (!empty($_SERVER['PHP_AUTH_USER'])) {
$args['user'] = $_SERVER['PHP_AUTH_USER'];
if (!empty($_SERVER['PHP_AUTH_PW']))
if (!empty($_SERVER['PHP_AUTH_PW'])) {
$args['pass'] = $_SERVER['PHP_AUTH_PW'];
}
}
$args['cookiecheck'] = false;
$args['valid'] = true;
$args['valid'] = true;
return $args;
}
@ -96,10 +99,11 @@ class http_authentication extends rcube_plugin
function login($args)
{
// Redirect to the previous QUERY_STRING
if($this->redirect_query){
if ($this->redirect_query) {
header('Location: ./?' . $this->redirect_query);
exit;
}
return $args;
}
}

@ -1,3 +1,9 @@
* version 9.3 [2019-04-21]
-----------------------------------------------------------
- Use RFC-compliant line endings, CRLF instead of LF (#6686)
- Fix bug where global includes were requested for vacation (#6716)
- Fix so "Create filter" option does not show up when Filters menu is disabled (#6723)
* version 9.2 [2018-11-08]
-----------------------------------------------------------
- Added support for 'editheader' extension - RFC5293 (#5954)

@ -3,8 +3,8 @@
/**
* Classes for managesieve operations (using PEAR::Net_Sieve)
*
* Copyright (C) 2008-2011, The Roundcube Dev Team
* Copyright (C) 2011, Kolab Systems AG
* Copyright (C) The Roundcube Dev Team
* Copyright (C) Kolab Systems AG
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -363,21 +363,17 @@ class rcube_sieve
*/
public function load($name)
{
if (!$this->sieve) {
return $this->_set_error(self::ERROR_INTERNAL);
}
if ($this->current == $name) {
if ($this->current === $name) {
return true;
}
$script = $this->sieve->getScript($name);
$script = $this->get_script($name);
if (is_a($script, 'PEAR_Error')) {
return $this->_set_error(self::ERROR_OTHER);
if ($script === false) {
return false;
}
// try to parse from Roundcube format
// try to parse to Roundcube format
$this->script = $this->_parse($script);
$this->current = $name;
@ -394,7 +390,7 @@ class rcube_sieve
return $this->_set_error(self::ERROR_INTERNAL);
}
// try to parse from Roundcube format
// try to parse to Roundcube format
$this->script = $this->_parse($script);
}

@ -5,8 +5,8 @@
*
* Engine part of Managesieve plugin implementing UI and backend access.
*
* Copyright (C) 2008-2014, The Roundcube Dev Team
* Copyright (C) 2011-2014, Kolab Systems AG
* Copyright (C) The Roundcube Dev Team
* Copyright (C) Kolab Systems AG
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -34,6 +34,7 @@ class rcube_sieve_engine
protected $exts = array();
protected $active = array();
protected $headers = array();
protected $disabled_actions = array();
protected $addr_headers = array(
// Required
"from", "to", "cc", "bcc", "sender", "resent-from", "resent-to",
@ -58,9 +59,8 @@ class rcube_sieve_engine
2 => 'notifyimportancenormal',
1 => 'notifyimportancehigh'
);
private $disabled_actions;
const VERSION = '9.2';
const VERSION = '9.3';
const PROGNAME = 'Roundcube (Managesieve)';
const PORT = 4190;
@ -89,7 +89,7 @@ class rcube_sieve_engine
'filterseteditraw' => array($this, 'filterset_editraw'),
));
$this->disabled_actions = $this->rc->config->get('managesieve_disabled_actions', array());
$this->disabled_actions = (array) $this->rc->config->get('managesieve_disabled_actions');
// connect to managesieve server
$error = $this->connect($_SESSION['username'], $this->rc->decrypt($_SESSION['password']));

@ -5,7 +5,7 @@
*
* Engine part of Managesieve plugin implementing UI and backend access.
*
* Copyright (C) 2011-2017, Kolab Systems AG
* Copyright (C) Kolab Systems AG
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

@ -3,8 +3,8 @@
/**
* Class for operations on Sieve scripts
*
* Copyright (C) 2008-2011, The Roundcube Dev Team
* Copyright (C) 2011, Kolab Systems AG
* Copyright (C) The Roundcube Dev Team
* Copyright (C) Kolab Systems AG
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -196,14 +196,14 @@ class rcube_sieve_script
foreach ($this->vars as $var) {
if (empty($has_vars)) {
// 'variables' extension not supported, put vars in comments
$output .= sprintf("# %s %s\n", $var['name'], $var['value']);
$output .= sprintf("# %s %s\r\n", $var['name'], $var['value']);
}
else {
$output .= 'set ';
foreach (array_diff(array_keys($var), array('name', 'value')) as $opt) {
$output .= ":$opt ";
}
$output .= self::escape_string($var['name']) . ' ' . self::escape_string($var['value']) . ";\n";
$output .= self::escape_string($var['name']) . ' ' . self::escape_string($var['value']) . ";\r\n";
}
}
}
@ -219,7 +219,7 @@ class rcube_sieve_script
// header
if (!empty($rule['name']) && strlen($rule['name'])) {
$script .= '# rule:[' . $rule['name'] . "]\n";
$script .= '# rule:[' . $rule['name'] . "]\r\n";
}
// constraints expressions
@ -379,7 +379,7 @@ class rcube_sieve_script
else {
$script .= $tests_str;
}
$script .= "\n{\n";
$script .= "\r\n{\r\n";
}
// action(s)
@ -548,13 +548,13 @@ class rcube_sieve_script
if ($action_script) {
$script .= !empty($tests) ? "\t" : '';
$script .= $action_script . ";\n";
$script .= $action_script . ";\r\n";
}
}
}
if ($script) {
$output .= $script . (!empty($tests) ? "}\n" : '');
$output .= $script . (!empty($tests) ? "}\r\n" : '');
$idx++;
}
}
@ -569,11 +569,11 @@ class rcube_sieve_script
sort($exts); // for convenience use always the same order
$output = 'require ["' . implode('","', $exts) . "\"];\n" . $output;
$output = 'require ["' . implode('","', $exts) . "\"];\r\n" . $output;
}
if (!empty($this->prefix)) {
$output = $this->prefix . "\n\n" . $output;
$output = $this->prefix . "\r\n\r\n" . $output;
}
return $output;
@ -678,7 +678,7 @@ class rcube_sieve_script
}
if (!empty($prefix)) {
$this->prefix = trim($prefix);
$this->prefix = trim(preg_replace('/\r?\n/', "\r\n", $prefix));
}
}
@ -1203,7 +1203,7 @@ class rcube_sieve_script
// multi-line string
if (preg_match('/[\r\n\0]/', $str)) {
return sprintf("text:\n%s\n.\n", self::escape_multiline_string($str));
return sprintf("text:\r\n%s\r\n.\r\n", self::escape_multiline_string($str));
}
// quoted-string
else {
@ -1394,7 +1394,7 @@ class rcube_sieve_script
// remove dot-stuffing
$text = str_replace("\n..", "\n.", $text);
$result[] = $text;
$result[] = rtrim($text, "\r\n");
$position++;
}
}

@ -5,7 +5,7 @@
*
* Engine part of Managesieve plugin implementing UI and backend access.
*
* Copyright (C) 2011-2014, Kolab Systems AG
* Copyright (C) Kolab Systems AG
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -72,12 +72,13 @@ class rcube_sieve_vacation extends rcube_sieve_engine
if ($this->sieve->load($script)) {
foreach ($this->sieve->script->as_array() as $rule) {
if (!empty($rule['actions'])) {
if ($rule['actions'][0]['type'] == 'vacation') {
$action = $rule['actions'][0];
if ($action['type'] == 'vacation') {
$this->script_name = $script;
return 0;
}
else if (empty($master) && $rule['actions'][0]['type'] == 'include') {
$included[] = $rule['actions'][0]['target'];
else if (empty($master) && empty($action['global']) && $action['type'] == 'include') {
$included[] = $action['target'];
}
}
}

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/managesieve/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Managesieve plugin |
| Copyright (C) 2012-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-managesieve/
@ -277,5 +275,3 @@ $messages['emptyvacationbody'] = 'Body of vacation message is required!';
$messages['duplicate.conflict.err'] = 'Both header and unique identifier are not allowed.';
$messages['disabledaction'] = 'Action not permitted.';
$messages['lastindexempty'] = 'Index is required when counting from end';
?>

@ -4,7 +4,7 @@
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) 2012-2014, The Roundcube Dev Team
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License
@ -980,7 +980,7 @@ function sieve_form_init()
parent.rcmail.managesieve_dialog_resize(form);
}
$('input[type="text"]:first', form).focus();
$('input[type="text"]', form).first().focus();
// initialize smart list inputs
$('textarea[data-type="list"]', form).each(function() {
@ -1189,7 +1189,7 @@ rcube_webmail.prototype.managesieve_dialog_resize = function(o)
{
var dialog = this.env.managesieve_dialog,
win = $(window), form = $(o);
width = $('fieldset:first', o).width(), // fieldset width is more appropriate here
width = $('fieldset', o).first().width(), // fieldset width is more appropriate here
height = form.height(),
w = win.width(), h = win.height();

@ -11,8 +11,8 @@
*
* Configuration (see config.inc.php.dist)
*
* Copyright (C) 2008-2013, The Roundcube Dev Team
* Copyright (C) 2011-2013, Kolab Systems AG
* Copyright (C) The Roundcube Dev Team
* Copyright (C) Kolab Systems AG
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -156,8 +156,12 @@ class managesieve extends rcube_plugin
return;
}
// use jQuery for popup window
$this->require_plugin('jqueryui');
$vacation_mode = (int) $this->rc->config->get('managesieve_vacation');
$forward_mode = (int) $this->rc->config->get('managesieve_forward');
if ($vacation_mode == 2 || $forward_mode == 2) {
return;
}
// include js script and localization
$this->init_ui();

@ -12,11 +12,13 @@ class Tokenizer extends PHPUnit_Framework_TestCase
{
return array(
array(1, "text: #test\nThis is test ; message;\nMulti line\n.\n;\n", '"This is test ; message;\nMulti line"'),
array(1, "text: #test\r\nThis is test ; message;\nMulti line\r\n.\r\n;", '"This is test ; message;\nMulti line"'),
array(0, '["test1","test2"]', '[["test1","test2"]]'),
array(1, '["test"]', '["test"]'),
array(1, '"te\\"st"', '"te\\"st"'),
array(0, 'test #comment', '["test"]'),
array(0, "text:\ntest\n.\ntext:\ntest\n.\n", '["test","test"]'),
array(0, "text:\r\ntest\r\n.\r\ntext:\r\ntest\r\n.\r\n", '["test","test"]'),
array(1, '"\\a\\\\\\"a"', '"a\\\\\\"a"'),
);
}

@ -63,4 +63,3 @@ class Managesieve_Vacation extends PHPUnit_Framework_TestCase
$this->assertSame('05 Mar 2014', $result['to']);
}
}

@ -1,58 +1,58 @@
require ["envelope","fileinto","reject"];
# rule:[spam]
if header :contains "X-DSPAM-Result" "Spam"
{
fileinto "Spam";
stop;
}
# rule:[test1]
if header :contains ["From","To"] "test@domain.tld"
{
discard;
stop;
}
# rule:[test2]
if anyof (not header :contains :comparator "i;octet" "Subject" "[test]", header :contains "Subject" "[test2]")
{
fileinto "test";
stop;
}
# rule:[comments]
if true
{
stop;
}
# rule:[reject]
if size :over 5000K
{
reject "Message over 5MB size limit. Please contact me before sending this.";
}
# rule:[false]
if false # size :over 5000K
{
stop;
}
# rule:[true]
if true
{
stop;
}
fileinto "Test";
# rule:[address test]
if address :is "From" "nagios@domain.tld"
{
fileinto "domain.tld";
stop;
}
# rule:[envelope test]
if envelope :domain :is "From" "domain.tld"
{
fileinto "domain.tld";
stop;
}
# rule:[do not wrap long lines]
if envelope :domain :is "From" "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
{
fileinto "domain.tld";
stop;
}
require ["envelope","fileinto","reject"];
# rule:[spam]
if header :contains "X-DSPAM-Result" "Spam"
{
fileinto "Spam";
stop;
}
# rule:[test1]
if header :contains ["From","To"] "test@domain.tld"
{
discard;
stop;
}
# rule:[test2]
if anyof (not header :contains :comparator "i;octet" "Subject" "[test]", header :contains "Subject" "[test2]")
{
fileinto "test";
stop;
}
# rule:[comments]
if true
{
stop;
}
# rule:[reject]
if size :over 5000K
{
reject "Message over 5MB size limit. Please contact me before sending this.";
}
# rule:[false]
if false # size :over 5000K
{
stop;
}
# rule:[true]
if true
{
stop;
}
fileinto "Test";
# rule:[address test]
if address :is "From" "nagios@domain.tld"
{
fileinto "domain.tld";
stop;
}
# rule:[envelope test]
if envelope :domain :is "From" "domain.tld"
{
fileinto "domain.tld";
stop;
}
# rule:[do not wrap long lines]
if envelope :domain :is "From" "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
{
fileinto "domain.tld";
stop;
}

@ -1,17 +1,17 @@
require ["body","fileinto"];
if body :raw :contains "MAKE MONEY FAST"
{
stop;
}
if body :content "text" :contains ["missile","coordinates"]
{
fileinto "secrets";
}
if body :content "audio/mp3" :contains ""
{
fileinto "jukebox";
}
if body :text :contains "project schedule"
{
fileinto "project/schedule";
}
require ["body","fileinto"];
if body :raw :contains "MAKE MONEY FAST"
{
stop;
}
if body :content "text" :contains ["missile","coordinates"]
{
fileinto "secrets";
}
if body :content "audio/mp3" :contains ""
{
fileinto "jukebox";
}
if body :text :contains "project schedule"
{
fileinto "project/schedule";
}

@ -1,10 +1,10 @@
require ["envelope","fileinto","imap4flags","subaddress"];
if envelope :detail "to" "addressextension"
{
setflag "\\Flagged";
}
if header :is "X-Spam-Flag" "YES"
{
fileinto "Junk";
stop;
}
require ["envelope","fileinto","imap4flags","subaddress"];
if envelope :detail "to" "addressextension"
{
setflag "\\Flagged";
}
if header :is "X-Spam-Flag" "YES"
{
fileinto "Junk";
stop;
}

@ -1,21 +1,21 @@
require ["comparator-i;ascii-numeric","date","fileinto","relational"];
# rule:[date]
if allof (date :originalzone :value "ge" :comparator "i;ascii-numeric" "date" "hour" "09")
{
fileinto "urgent";
}
# rule:[date-weekday]
if date :is "received" "weekday" "0"
{
fileinto "weekend";
}
# rule:[date-zone]
if date :zone "-0500" :value "gt" :comparator "i;ascii-numeric" "received" "iso8601" "2007-02-26T09:00:00-05:00"
{
stop;
}
# rule:[currentdate]
if anyof (currentdate :is "weekday" "0", currentdate :value "lt" :comparator "i;ascii-numeric" "hour" "09", currentdate :value "ge" :comparator "i;ascii-numeric" "date" "2007-06-30")
{
stop;
}
require ["comparator-i;ascii-numeric","date","fileinto","relational"];
# rule:[date]
if allof (date :originalzone :value "ge" :comparator "i;ascii-numeric" "date" "hour" "09")
{
fileinto "urgent";
}
# rule:[date-weekday]
if date :is "received" "weekday" "0"
{
fileinto "weekend";
}
# rule:[date-zone]
if date :zone "-0500" :value "gt" :comparator "i;ascii-numeric" "received" "iso8601" "2007-02-26T09:00:00-05:00"
{
stop;
}
# rule:[currentdate]
if anyof (currentdate :is "weekday" "0", currentdate :value "lt" :comparator "i;ascii-numeric" "hour" "09", currentdate :value "ge" :comparator "i;ascii-numeric" "date" "2007-06-30")
{
stop;
}

@ -1,16 +1,16 @@
require ["duplicate","fileinto"];
# rule:[test-duplicate]
if duplicate
{
fileinto "urgent";
}
# rule:[test-duplicate-2]
if allof (duplicate :handle "support" :header "X-Ticket-ID", header :contains "subject" "fileserver")
{
fileinto "test";
}
# rule:[test-duplicate-3]
if not duplicate :uniqueid "test" :seconds 1800
{
discard;
}
require ["duplicate","fileinto"];
# rule:[test-duplicate]
if duplicate
{
fileinto "urgent";
}
# rule:[test-duplicate-2]
if allof (duplicate :handle "support" :header "X-Ticket-ID", header :contains "subject" "fileserver")
{
fileinto "test";
}
# rule:[test-duplicate-3]
if not duplicate :uniqueid "test" :seconds 1800
{
discard;
}

@ -1,36 +1,36 @@
require ["editheader"];
# rule:[test-addheader1]
if true
{
addheader "X-Sieve-Filtered" "<test@test.com>";
}
# rule:[test-addheader2]
if not header :contains "X-Sieve-Filtered" "<test@test.com>"
{
addheader :last "X-Sieve-Filtered" "<test@test.com>";
}
# rule:[test-deleteheader1]
if true
{
deleteheader :index 1 :contains "Delivered-To" ["bob@example.com","test@test.com"];
}
# rule:[test-deleteheader2]
if true
{
deleteheader :index 2 :last :contains :comparator "i;octet" "Delivered-To" "test@test.com";
}
# rule:[test-deleteheader3]
if true
{
deleteheader "Delivered-To";
}
# rule:[test-deleteheader4]
if true
{
deleteheader :index 3 :last :contains "Delivered-To";
}
# rule:[test-deleteheader5]
if true
{
deleteheader "Delivered-To" "test";
}
require ["editheader"];
# rule:[test-addheader1]
if true
{
addheader "X-Sieve-Filtered" "<test@test.com>";
}
# rule:[test-addheader2]
if not header :contains "X-Sieve-Filtered" "<test@test.com>"
{
addheader :last "X-Sieve-Filtered" "<test@test.com>";
}
# rule:[test-deleteheader1]
if true
{
deleteheader :index 1 :contains "Delivered-To" ["bob@example.com","test@test.com"];
}
# rule:[test-deleteheader2]
if true
{
deleteheader :index 2 :last :contains :comparator "i;octet" "Delivered-To" "test@test.com";
}
# rule:[test-deleteheader3]
if true
{
deleteheader "Delivered-To";
}
# rule:[test-deleteheader4]
if true
{
deleteheader :index 3 :last :contains "Delivered-To";
}
# rule:[test-deleteheader5]
if true
{
deleteheader "Delivered-To" "test";
}

@ -1,19 +1,18 @@
require ["enotify","variables"];
# rule:[notify1]
if header :contains "from" "boss@example.org"
{
notify :importance "1" :message "This is probably very important" "mailto:alm@example.com";
stop;
}
# rule:[subject]
if header :matches "Subject" "*"
{
set "subject" "${1}";
}
# rule:[from notify2]
if header :matches "From" "*"
{
set "from" "${1}";
notify :importance "3" :message "${from}: ${subject}" "mailto:alm@example.com";
}
require ["enotify","variables"];
# rule:[notify1]
if header :contains "from" "boss@example.org"
{
notify :importance "1" :message "This is probably very important" "mailto:alm@example.com";
stop;
}
# rule:[subject]
if header :matches "Subject" "*"
{
set "subject" "${1}";
}
# rule:[from notify2]
if header :matches "From" "*"
{
set "from" "${1}";
notify :importance "3" :message "${from}: ${subject}" "mailto:alm@example.com";
}

@ -1,18 +1,18 @@
require ["enotify","envelope","variables"];
# rule:[from]
if envelope :matches "from" "*"
{
set "env_from" " [really: ${1}]";
}
# rule:[subject]
if header :matches "Subject" "*"
{
set "subject" "${1}";
}
# rule:[from notify]
if address :matches "from" "*"
{
set "from_addr" "${1}";
notify :message "${from_addr}${env_from}: ${subject}" "mailto:alm@example.com";
}
require ["enotify","envelope","variables"];
# rule:[from]
if envelope :matches "from" "*"
{
set "env_from" " [really: ${1}]";
}
# rule:[subject]
if header :matches "Subject" "*"
{
set "subject" "${1}";
}
# rule:[from notify]
if address :matches "from" "*"
{
set "from_addr" "${1}";
notify :message "${from_addr}${env_from}: ${subject}" "mailto:alm@example.com";
}

@ -1,7 +1,7 @@
require ["imap4flags"];
# rule:[imapflags]
if header :matches "Subject" "^Test$"
{
setflag "\\Seen";
addflag ["\\Answered","\\Deleted"];
}
require ["imap4flags"];
# rule:[imapflags]
if header :matches "Subject" "^Test$"
{
setflag "\\Seen";
addflag ["\\Answered","\\Deleted"];
}

@ -1,7 +1,7 @@
require ["include"];
include "script.sieve";
# rule:[two]
if true
{
include :optional "second.sieve";
}
require ["include"];
include "script.sieve";
# rule:[two]
if true
{
include :optional "second.sieve";
}

@ -1,24 +1,24 @@
require ["comparator-i;ascii-numeric","date","fileinto","index","relational"];
# rule:[index-header1]
if header :index 1 :last :contains "X-DSPAM-Result" "Spam"
{
fileinto "Spam";
stop;
}
# rule:[index-header2]
if header :index 2 :contains ["From","To"] "test@domain.tld"
{
discard;
stop;
}
# rule:[index-address]
if address :index 1 :is "From" "nagios@domain.tld"
{
fileinto "domain.tld";
stop;
}
# rule:[index-date]
if date :index 1 :last :zone "-0500" :value "gt" :comparator "i;ascii-numeric" "received" "iso8601" "2007-02-26T09:00:00-05:00"
{
stop;
}
require ["comparator-i;ascii-numeric","date","fileinto","index","relational"];
# rule:[index-header1]
if header :index 1 :last :contains "X-DSPAM-Result" "Spam"
{
fileinto "Spam";
stop;
}
# rule:[index-header2]
if header :index 2 :contains ["From","To"] "test@domain.tld"
{
discard;
stop;
}
# rule:[index-address]
if address :index 1 :is "From" "nagios@domain.tld"
{
fileinto "domain.tld";
stop;
}
# rule:[index-date]
if date :index 1 :last :zone "-0500" :value "gt" :comparator "i;ascii-numeric" "received" "iso8601" "2007-02-26T09:00:00-05:00"
{
stop;
}

@ -1,3 +1,3 @@
require ["variables"];
set "EDITOR" "Roundcube";
set "EDITOR_VERSION" "123";
require ["variables"];
set "EDITOR" "Roundcube";
set "EDITOR_VERSION" "123";

@ -1,10 +1,10 @@
# Sieve Filter
# Erzeugt von Ingo (http://www.horde.org/ingo/) (30.09.2016, 16:02)
# Nested rules aren't supported and will be ignored (#5540)
# rule:[Ausgeschlossene Adressen]
if address :is ["From","Sender","Resent-From"] "noreply@example.org"
{
discard;
stop;
}
# Sieve Filter
# Erzeugt von Ingo (http://www.horde.org/ingo/) (30.09.2016, 16:02)
# Nested rules aren't supported and will be ignored (#5540)
# rule:[Ausgeschlossene Adressen]
if address :is ["From","Sender","Resent-From"] "noreply@example.org"
{
discard;
stop;
}

@ -1,18 +1,18 @@
require ["notify","variables"];
# rule:[notify1]
if header :contains "from" "boss@example.org"
{
notify :low :message "This is probably very important";
stop;
}
# rule:[subject]
if header :matches "Subject" "*"
{
set "subject" "${1}";
}
# rule:[from notify2]
if header :matches "From" "*"
{
set "from" "${1}";
notify :high :method "mailto" :options "test@example.org" :message "${from}: ${subject}";
}
require ["notify","variables"];
# rule:[notify1]
if header :contains "from" "boss@example.org"
{
notify :low :message "This is probably very important";
stop;
}
# rule:[subject]
if header :matches "Subject" "*"
{
set "subject" "${1}";
}
# rule:[from notify2]
if header :matches "From" "*"
{
set "from" "${1}";
notify :high :method "mailto" :options "test@example.org" :message "${from}: ${subject}";
}

@ -1,17 +1,17 @@
require ["envelope","notify","variables"];
# rule:[from]
if envelope :matches "from" "*"
{
set "env_from" " [really: ${1}]";
}
# rule:[subject]
if header :matches "Subject" "*"
{
set "subject" "${1}";
}
# rule:[from notify]
if address :matches "from" "*"
{
set "from_addr" "${1}";
notify :method "sms" :options "1234567890" :message "${from_addr}${env_from}: ${subject}";
}
require ["envelope","notify","variables"];
# rule:[from]
if envelope :matches "from" "*"
{
set "env_from" " [really: ${1}]";
}
# rule:[subject]
if header :matches "Subject" "*"
{
set "subject" "${1}";
}
# rule:[from notify]
if address :matches "from" "*"
{
set "from_addr" "${1}";
notify :method "sms" :options "1234567890" :message "${from_addr}${env_from}: ${subject}";
}

@ -1,5 +1,5 @@
# this is a comment
# and the second line
require ["variables"];
set "b" "c";
# this is a comment
# and the second line
require ["variables"];
set "b" "c";

@ -1,6 +1,6 @@
require ["comparator-i;ascii-numeric","relational"];
# rule:[redirect]
if header :value "ge" :comparator "i;ascii-numeric" "X-Spam-score" "14"
{
redirect "test@test.tld";
}
require ["comparator-i;ascii-numeric","relational"];
# rule:[redirect]
if header :value "ge" :comparator "i;ascii-numeric" "X-Spam-score" "14"
{
redirect "test@test.tld";
}

@ -1,11 +1,11 @@
require ["envelope","fileinto","subaddress"];
if envelope :user "To" "postmaster"
{
fileinto "postmaster";
stop;
}
if envelope :detail :is "To" "mta-filters"
{
fileinto "mta-filters";
stop;
}
require ["envelope","fileinto","subaddress"];
if envelope :user "To" "postmaster"
{
fileinto "postmaster";
stop;
}
if envelope :detail :is "To" "mta-filters"
{
fileinto "mta-filters";
stop;
}

@ -1,14 +1,14 @@
require ["vacation"];
# rule:[test-vacation]
if header :contains "Subject" "vacation"
{
vacation :days 1 text:
# test
test test /* test */
..
..test
test
.
;
stop;
}
require ["vacation"];
# rule:[test-vacation]
if header :contains "Subject" "vacation"
{
vacation :days 1 text:
# test
test test /* test */
..
..test
test
.
;
stop;
}

@ -1,12 +1,12 @@
require ["vacation-seconds"];
# rule:[test-vacation]
if header :contains "Subject" "vacation"
{
vacation :seconds 0 text:
# test
test test /* test */
test
.
;
stop;
}
require ["vacation-seconds"];
# rule:[test-vacation]
if header :contains "Subject" "vacation"
{
vacation :seconds 0 text:
# test
test test /* test */
test
.
;
stop;
}

@ -1,24 +1,24 @@
require ["variables"];
set "honorific" "Mr";
set "vacation" text:
Dear ${HONORIFIC} ${last_name},
I am out, please leave a message after the meep.
.
;
set :length "b" "${a}";
set :lower "b" "${a}";
set :upperfirst "b" "${a}";
set :upperfirst :lower "b" "${a}";
set :quotewildcard "b" "Rock*";
if string :matches " ${state} " "* pending *"
{
set "test1" "*";
}
if string ["aaa","bbb"] ["aaa","bbb"]
{
set "test2" "*";
}
if string :is :comparator "i;octet" "bbb" "bbb"
{
set "test3" "*";
}
require ["variables"];
set "honorific" "Mr";
set "vacation" text:
Dear ${HONORIFIC} ${last_name},
I am out, please leave a message after the meep.
.
;
set :length "b" "${a}";
set :lower "b" "${a}";
set :upperfirst "b" "${a}";
set :upperfirst :lower "b" "${a}";
set :quotewildcard "b" "Rock*";
if string :matches " ${state} " "* pending *"
{
set "test1" "*";
}
if string ["aaa","bbb"] ["aaa","bbb"]
{
set "test2" "*";
}
if string :is :comparator "i;octet" "bbb" "bbb"
{
set "test3" "*";
}

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/markasjunk/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Mark-As-Junk plugin |
| Copyright (C) 2012-2018, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-markasjunk/

@ -4,8 +4,8 @@
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) 2013-2018 The Roundcube Dev Team
* Copyright (C) 2009-2018 Philip Weir
* Copyright (c) The Roundcube Dev Team
* Copyright (C) Philip Weir
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License

@ -11,8 +11,8 @@
* @author Philip Weir
* @author Thomas Bruederli
*
* Copyright (C) 2009-2018 The Roundcube Dev Team
* Copyright (C) 2009-2018 Philip Weir
* Copyright (C) The Roundcube Dev Team
* Copyright (C) Philip Weir
*
* This program is a Roundcube (https://roundcube.net) plugin.
* For more information see README.md.

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/new_user_dialog/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail New User Dialog plugin |
| Copyright (C) 2012-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-new_user_dialog/
@ -19,5 +17,3 @@
$labels = array();
$labels['identitydialogtitle'] = 'Please complete your sender identity';
$labels['identitydialoghint'] = 'This box only appears once at the first login.';
?>

@ -2,15 +2,13 @@
/*
+-----------------------------------------------------------------------+
| plugins/newmail_notifier/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail New Mail Notifier plugin |
| Copyright (C) 2012-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-newmail_notifier/
@ -26,5 +24,3 @@ $labels['testbody'] = 'This is a test notification.';
$labels['desktopdisabled'] = 'Desktop notifications are disabled in your browser.';
$labels['desktopunsupported'] = 'Your browser does not support desktop notifications.';
$labels['desktoptimeout'] = 'Close desktop notification';
?>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save